鱼C论坛

 找回密码
 立即注册
查看: 1933|回复: 16

[已解决]大二C语言作业求助

[复制链接]
发表于 2020-9-6 17:20:12 | 显示全部楼层 |阅读模式
6鱼币
本帖最后由 a2316565897 于 2020-9-6 17:57 编辑

这三道题,求求了,本人真的很急,过几天就要交了,第一题难点在于多行输入
最佳答案
2020-9-6 17:20:13
本帖最后由 巴巴鲁 于 2020-9-7 10:17 编辑

第一题:
#include <stdio.h>
int fun(int num);
int main()
{
                int i, j, count;
                j = count = 0;
                int arr[12]; // 最多12个数 
       
                while(1)
                {
                        
                        char ch;
                        
                            if((ch = getchar()) == '\n')
                            {
                            break;
                            }
                            else 
                           {        
                        ungetc(ch, stdin);
                        scanf("%d",&i);
                        arr[j++] = fun(i); 
                        count++; // 记录输入了多少数字 
                            }
                    getchar();         // 缓冲输入的回车 
                
                }
                
        for(i = 0; i < count;i++)
        {
                printf("%d\n",arr[i]);
        }
        
        return 0;
} 

int fun(int num)
{
                int i, fact = 1;
                
                for(i = 1; i <= num; i++)
                {
                        fact *= i;
                }
                
                return fact;
}
C作业1.png
C语言3.png
C作业2.png

最佳答案

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-6 17:20:13 | 显示全部楼层    本楼为最佳答案   
本帖最后由 巴巴鲁 于 2020-9-7 10:17 编辑

第一题:
#include <stdio.h>
int fun(int num);
int main()
{
                int i, j, count;
                j = count = 0;
                int arr[12]; // 最多12个数 
       
                while(1)
                {
                        
                        char ch;
                        
                            if((ch = getchar()) == '\n')
                            {
                            break;
                            }
                            else 
                           {        
                        ungetc(ch, stdin);
                        scanf("%d",&i);
                        arr[j++] = fun(i); 
                        count++; // 记录输入了多少数字 
                            }
                    getchar();         // 缓冲输入的回车 
                
                }
                
        for(i = 0; i < count;i++)
        {
                printf("%d\n",arr[i]);
        }
        
        return 0;
} 

int fun(int num)
{
                int i, fact = 1;
                
                for(i = 1; i <= num; i++)
                {
                        fact *= i;
                }
                
                return fact;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-6 17:26:02 | 显示全部楼层
#include <stdio.h>

int main()
{
        int dp[12] = {0};
        dp[0] = 1;
        for(int i = 1; i <= 11; ++i)
                dp[i] = dp[i-1] * i;
        int num;
        while(scanf("%d",&num))
        {
                printf("%d\n",dp[num]);        
        }                
        return 0;
} 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-6 17:37:23 | 显示全部楼层
想知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-9-6 17:50:10 | 显示全部楼层
求求了三道题,急!~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-9-6 17:52:08 | 显示全部楼层

第一道题的难点是多行输入多行输出,你的程序不太对啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-6 20:02:20 | 显示全部楼层
第一道题输入什么算结束输入呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-9-7 06:59:55 | 显示全部楼层
zhfv587 发表于 2020-9-6 20:02
第一道题输入什么算结束输入呢

当这一行只有回车时结束
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-7 07:53:12 | 显示全部楼层
#include <stdio.h>

int main()
{
        int dp[12] = {0};
        dp[0] = 1;
        for(int i = 1; i <= 11; ++i)
                dp[i] = dp[i-1] * i;
        int num;
        while(1)
        { 
                char  ch = getchar();
                if(ch == '\n')break;
                else {
                        ungetc(ch, stdin);
                        scanf("%d",&num);
                        }
                getchar();
            printf("%d\n",dp[num]);        
        }                
        return 0;
} 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-7 10:19:36 | 显示全部楼层
第三题也是和第一题一样在空行输入回车结束程序吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-7 12:04:16 | 显示全部楼层
本帖最后由 ljd884497 于 2020-9-7 12:13 编辑

临时写了第1题,不算严紧,还是能用

# include <stdio.h>

# define MAX 12


int InputNum (int arr[]); // 输入函数

int JieChen (int num); // 阶乘函数

int main (void)

{
        int arr[MAX];// 定义一个数组存放输入的整数
        int count = 0; // 定义一个计数器

        int i = 0;

        count = InputNum (arr);

        printf ("你输入数的阶乘是:\n");

        for (i = 0; i < count;i++)
        {
                printf ("%d\t%d\n",arr[i],JieChen(arr[i]));
        }

        getchar();

        return 0;
}

int InputNum (int arr[])
{
        int tempNum = 0; // 输入的数字
        int count = 0;
        int i = 0;

        printf ("请输入0到11之间的整数\n(输入的整数小于0或大于11,或输入次数多于12次将结束输入):");

        scanf ("%d",&tempNum);

        while (tempNum >=0 && tempNum <= 11 && count <= 12)
        {

                count ++;
                arr[i++] = tempNum;

                printf ("请输入下一个数:");
                scanf ("%d",&tempNum);


        }

        return count;
}

int JieChen (int num)
{
        int sum = 1;

        while (num > 0)
                sum *= num--;

        return sum;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-9-8 14:11:41 | 显示全部楼层
巴巴鲁 发表于 2020-9-7 10:19
第三题也是和第一题一样在空行输入回车结束程序吗?

第三题题目中说的是#结束,大佬膜拜你,你把第一题做出来了,强
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-9-8 14:12:22 | 显示全部楼层
ljd884497 发表于 2020-9-7 12:04
临时写了第1题,不算严紧,还是能用

# include

嗯~你这个我试了一下,不太行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-9-8 14:13:43 | 显示全部楼层

不好意思啊,你的还是不太对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-9 06:22:55 | 显示全部楼层
a2316565897 发表于 2020-9-8 14:11
第三题题目中说的是#结束,大佬膜拜你,你把第一题做出来了,强

好的,没事的时候我看看第三题,不过不一定能做出来。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-9 06:51:21 | 显示全部楼层
噗噗,看错了,是第二题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-11 20:06:29 | 显示全部楼层
本帖最后由 巴巴鲁 于 2020-9-11 20:07 编辑

不知道行不行呐,感觉取巧了
#include <stdio.h>
#include <stdlib.h>
#define N 100 // 太大程序不会执行
int count = 0; // 定义全局变量 

int min(int *arr);
int main(void)
{
                char ch;
                int input;
                int arr[N];
                
                while(1)
                {
                        scanf("%d",&input);
                        if(input == -1) // 当输入-1时程序结束 
                        {
                                break;
                        }
                        arr[count++] = input;
                        printf("push %d\n",count);
                        printf("min = %d\n",min(arr));
                }
                
                return 0;
}

int min(int *arr)
{
                int i;
                int min = arr[0];
                
                for(i = 0; i < count; i++)
                {
                        if(min > arr[i])
                        {
                                min = arr[i];
                        }
                }
                
                return min;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-18 15:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表