鱼C论坛

 找回密码
 立即注册
查看: 2232|回复: 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 编辑

第一题:
  1. #include <stdio.h>
  2. int fun(int num);
  3. int main()
  4. {
  5.                 int i, j, count;
  6.                 j = count = 0;
  7.                 int arr[12]; // 最多12个数
  8.       
  9.                 while(1)
  10.                 {
  11.                        
  12.                         char ch;
  13.                        
  14.                             if((ch = getchar()) == '\n')
  15.                             {
  16.                             break;
  17.                             }
  18.                             else
  19.                            {       
  20.                         ungetc(ch, stdin);
  21.                         scanf("%d",&i);
  22.                         arr[j++] = fun(i);
  23.                         count++; // 记录输入了多少数字
  24.                             }
  25.                     getchar();         // 缓冲输入的回车
  26.                
  27.                 }
  28.                
  29.         for(i = 0; i < count;i++)
  30.         {
  31.                 printf("%d\n",arr[i]);
  32.         }
  33.        
  34.         return 0;
  35. }

  36. int fun(int num)
  37. {
  38.                 int i, fact = 1;
  39.                
  40.                 for(i = 1; i <= num; i++)
  41.                 {
  42.                         fact *= i;
  43.                 }
  44.                
  45.                 return fact;
  46. }
复制代码
C作业1.png
C语言3.png
C作业2.png

最佳答案

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

第一题:
  1. #include <stdio.h>
  2. int fun(int num);
  3. int main()
  4. {
  5.                 int i, j, count;
  6.                 j = count = 0;
  7.                 int arr[12]; // 最多12个数
  8.       
  9.                 while(1)
  10.                 {
  11.                        
  12.                         char ch;
  13.                        
  14.                             if((ch = getchar()) == '\n')
  15.                             {
  16.                             break;
  17.                             }
  18.                             else
  19.                            {       
  20.                         ungetc(ch, stdin);
  21.                         scanf("%d",&i);
  22.                         arr[j++] = fun(i);
  23.                         count++; // 记录输入了多少数字
  24.                             }
  25.                     getchar();         // 缓冲输入的回车
  26.                
  27.                 }
  28.                
  29.         for(i = 0; i < count;i++)
  30.         {
  31.                 printf("%d\n",arr[i]);
  32.         }
  33.        
  34.         return 0;
  35. }

  36. int fun(int num)
  37. {
  38.                 int i, fact = 1;
  39.                
  40.                 for(i = 1; i <= num; i++)
  41.                 {
  42.                         fact *= i;
  43.                 }
  44.                
  45.                 return fact;
  46. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

  2. int main()
  3. {
  4.         int dp[12] = {0};
  5.         dp[0] = 1;
  6.         for(int i = 1; i <= 11; ++i)
  7.                 dp[i] = dp[i-1] * i;
  8.         int num;
  9.         while(scanf("%d",&num))
  10.         {
  11.                 printf("%d\n",dp[num]);       
  12.         }               
  13.         return 0;
  14. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-9-6 17:37:23 | 显示全部楼层
想知道
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-9-6 17:50:10 | 显示全部楼层
求求了三道题,急!~~~
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

第一道题的难点是多行输入多行输出,你的程序不太对啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-9-6 20:02:20 | 显示全部楼层
第一道题输入什么算结束输入呢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

当这一行只有回车时结束
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

  2. int main()
  3. {
  4.         int dp[12] = {0};
  5.         dp[0] = 1;
  6.         for(int i = 1; i <= 11; ++i)
  7.                 dp[i] = dp[i-1] * i;
  8.         int num;
  9.         while(1)
  10.         {
  11.                 char  ch = getchar();
  12.                 if(ch == '\n')break;
  13.                 else {
  14.                         ungetc(ch, stdin);
  15.                         scanf("%d",&num);
  16.                         }
  17.                 getchar();
  18.             printf("%d\n",dp[num]);        
  19.         }               
  20.         return 0;
  21. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-9-7 10:19:36 | 显示全部楼层
第三题也是和第一题一样在空行输入回车结束程序吗?
小甲鱼最新课程 -> https://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;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

第三题题目中说的是#结束,大佬膜拜你,你把第一题做出来了,强
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

# include

嗯~你这个我试了一下,不太行
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

不好意思啊,你的还是不太对
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

好的,没事的时候我看看第三题,不过不一定能做出来。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-9-9 06:51:21 | 显示全部楼层
噗噗,看错了,是第二题
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

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

  5. int min(int *arr);
  6. int main(void)
  7. {
  8.                 char ch;
  9.                 int input;
  10.                 int arr[N];
  11.                
  12.                 while(1)
  13.                 {
  14.                         scanf("%d",&input);
  15.                         if(input == -1) // 当输入-1时程序结束
  16.                         {
  17.                                 break;
  18.                         }
  19.                         arr[count++] = input;
  20.                         printf("push %d\n",count);
  21.                         printf("min = %d\n",min(arr));
  22.                 }
  23.                
  24.                 return 0;
  25. }

  26. int min(int *arr)
  27. {
  28.                 int i;
  29.                 int min = arr[0];
  30.                
  31.                 for(i = 0; i < count; i++)
  32.                 {
  33.                         if(min > arr[i])
  34.                         {
  35.                                 min = arr[i];
  36.                         }
  37.                 }
  38.                
  39.                 return min;
  40. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-27 00:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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