鱼C论坛

 找回密码
 立即注册
查看: 737|回复: 9

[已解决]求助,函数调用....

[复制链接]
发表于 2023-5-7 12:32:25 | 显示全部楼层 |阅读模式
3鱼币
函数 1:编写函数 int fmax(),功能为找出三个整数中的最大值。
提示:
1:首先思考已知需输入的数据类型和个数(实参),然后考虑定义函数时对应的形参的类型与个数;
2:考虑返回值类型,以及与函数类型的关系。

函数 2:编写函数 int fmaxfactor(),功能为得到两个正整数中的最大公约数。
提示: 同函数 1,分析形参类型和个数,适当考虑数据输入不符合规则的情况下程序如何反馈。

函数 3:编写函数 void fstar(int m),要求输出(m%10)行的三角形(假设 m 的尾数是 5,则三角形如左图),如果 m 的尾数为 0,则输出提示“参数为 0!”。

函数 4:编写函数 int fgeneral(int m, int a),要求输出由 m 个 a 组成的整数, 例如输入 5,2,则输出 22222。

编写主函数 main():输入三个正整数 a,b,c。完成以下内容(前后顺序也可以根据实际程序合理安排):
1:利用函数 fmax 求出三个数中的最大值并输出。
2:利用函数 fmaxfactor 求出 a+b 和 b+c 的最大公约数和最小公倍数并输出。3:利用 fstar 函数输出“星号”的三角形,其中函数的参数为 a+b+c。
4:利用 fgeneral 函数,计算 k+kk+kkk+kkkk……+kk…k(m 个 k 组成的整数)的和,其中 k 是(a+b)的个位数,m 是(b+c)的个位数。


  主要是函数3的编写和调用不太会
最佳答案
2023-5-7 12:32:26
函数3的编写和调用如下:

  1. #include <stdio.h>

  2. // 函数 1: fmax
  3. // 其他函数略

  4. // 函数 3: fstar
  5. void fstar(int m) {
  6.     int rows = m % 10;
  7.     if(rows == 0) {
  8.         printf("参数为0!\n");
  9.         return;
  10.     }

  11.     for(int i = 1; i <= rows; i++) {
  12.         for(int j = 1; j <= i; j++) {
  13.             printf("*");
  14.         }
  15.         printf("\n");
  16.     }
  17. }

  18. int main() {
  19.     int a, b, c;
  20.     // 输入三个正整数 a,b,c
  21.     scanf("%d %d %d", &a, &b, &c);
  22.     // fmax 自行编写
  23.     // fmaxfactor 自行编写
  24.     // fgeneral 自行编写

  25.     // 调用函数3输出(a+b+c)% 10 行的三角形
  26.     int sum = a + b + c;
  27.     fstar(sum);

  28.     return 0;
  29. }
复制代码


上述代码中,函数 fstar 接受一个整数参数 m ,根据题目要求,首先计算 m % 10 的值作为要输出的三角形的行数。如果行数为0,则输出提示信息,并结束函数。接下来,使用两层嵌套的for循环分别控制行和列,输出三角形。

在 main 函数中,我们获取用户输入的a,b,c的值,并计算 a + b + c 。然后调用 fstar 函数,传入参数 sum ,即 (a + b + c) 的值。其他要求的函数可依次类推进行编写和调用。

最佳答案

查看完整内容

函数3的编写和调用如下: 上述代码中,函数 fstar 接受一个整数参数 m ,根据题目要求,首先计算 m % 10 的值作为要输出的三角形的行数。如果行数为0,则输出提示信息,并结束函数。接下来,使用两层嵌套的for循环分别控制行和列,输出三角形。 在 main 函数中,我们获取用户输入的a,b,c的值,并计算 a + b + c 。然后调用 fstar 函数,传入参数 sum ,即 (a + b + c) 的值。其他要求的函数可依次类推进行编写和调用。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-7 12:32:26 | 显示全部楼层    本楼为最佳答案   
函数3的编写和调用如下:

  1. #include <stdio.h>

  2. // 函数 1: fmax
  3. // 其他函数略

  4. // 函数 3: fstar
  5. void fstar(int m) {
  6.     int rows = m % 10;
  7.     if(rows == 0) {
  8.         printf("参数为0!\n");
  9.         return;
  10.     }

  11.     for(int i = 1; i <= rows; i++) {
  12.         for(int j = 1; j <= i; j++) {
  13.             printf("*");
  14.         }
  15.         printf("\n");
  16.     }
  17. }

  18. int main() {
  19.     int a, b, c;
  20.     // 输入三个正整数 a,b,c
  21.     scanf("%d %d %d", &a, &b, &c);
  22.     // fmax 自行编写
  23.     // fmaxfactor 自行编写
  24.     // fgeneral 自行编写

  25.     // 调用函数3输出(a+b+c)% 10 行的三角形
  26.     int sum = a + b + c;
  27.     fstar(sum);

  28.     return 0;
  29. }
复制代码


上述代码中,函数 fstar 接受一个整数参数 m ,根据题目要求,首先计算 m % 10 的值作为要输出的三角形的行数。如果行数为0,则输出提示信息,并结束函数。接下来,使用两层嵌套的for循环分别控制行和列,输出三角形。

在 main 函数中,我们获取用户输入的a,b,c的值,并计算 a + b + c 。然后调用 fstar 函数,传入参数 sum ,即 (a + b + c) 的值。其他要求的函数可依次类推进行编写和调用。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-7 12:34:23 | 显示全部楼层
我可以帮你编写和调用函数3,输出星号的三角形。你可以参考以下的代码:

  1. # 定义函数fstar,参数为m
  2. def fstar(m):
  3.   # 如果m的尾数为0,输出提示
  4.   if m % 10 == 0:
  5.     print("参数为0!")
  6.   # 否则,输出m%10行的三角形
  7.   else:
  8.     # 从1到m%10循环
  9.     for i in range(1, m % 10 + 1):
  10.       # 输出i个星号
  11.       print("*" * i)

  12. # 编写主函数main
  13. def main():
  14.   # 输入三个正整数a,b,c
  15.   a = int(input("请输入a:"))
  16.   b = int(input("请输入b:"))
  17.   c = int(input("请输入c:"))
  18.   # 调用fstar函数,参数为a+b+c
  19.   fstar(a + b + c)

  20. # 调用主函数
  21. main()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-5-7 13:08:33 | 显示全部楼层
陶远航 发表于 2023-5-7 12:34
我可以帮你编写和调用函数3,输出星号的三角形。你可以参考以下的代码:
  1. #include<stdio.h>
  2. int ffmax(int x,int y,int z)
  3. {
  4.    int max=0;
  5.    if(x>y&&x>z)
  6.    {
  7.            max=x;
  8.    }
  9.    if(y>x&&y>z)
  10.    {
  11.            max=y;
  12.    }
  13.    if(z>y&&z>x)
  14.    {
  15.            max=z;
  16.    }
  17.    return max;
  18. }
  19. int fmaxfactor(int m,int n)
  20. {       
  21.    while(m!=n)
  22.    {
  23.            if(m>n)
  24.            {
  25.                    m=m-n;
  26.            }
  27.     else
  28.     {
  29.             n=n-m;
  30.     }
  31.    }
  32.     return m;
  33. }
  34. void fstar(int m)
  35. {
  36. }
  37. int fgeneral(int m,int a)
  38. {
  39.   int sum=0,t,i;
  40.   t=a;
  41.   for(i=0;i<m;i++)
  42.   {
  43.           sum+=t;
  44.           t=t*10;
  45.   }
  46.   return sum;
  47. }
  48. int main()
  49. {
  50.         int a,b,c,max,f;
  51.         int factor,multiple;
  52.         int k,m,sum,i,date=0;
  53.         scanf("%d %d %d",&a,&b,&c);
  54.         max=ffmax(a,b,c);
  55.         printf("fmax is %d\n",max);
  56.         factor=fmaxfactor(a+b,b+c);
  57.         multiple=(a+b)*(b+c)/factor;
  58.         printf("factor is %d\nthe multiple is %d\n",factor,multiple);
  59.         k=(a+b)%10;
  60.         m=(b+c)%10;
  61.         sum=fgeneral(m,k);
  62.         for(i=0;i<m;i++)
  63.         {
  64.                 date+=sum;
  65.                 sum=sum/10;
  66.         }
  67.         printf("fgeneral data is %d\n",date);
  68.        
  69.        
  70.         return 0;
  71. }
复制代码

这是除了函数三其他的代码,我看不太懂你写的那个,好像不太一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-7 13:11:40 | 显示全部楼层
我对C++不熟悉,如果还不行,只能帮你到这了
  1. void fstar(int m)
  2. {
  3.     int n = m % 10; // 计算行数
  4.     if (n == 0) // 如果行数为 0,就输出提示
  5.     {
  6.         printf("参数为 0!\n");
  7.         return;
  8.     }
  9.     for (int i = 1; i <= n; i++) // 循环每一行
  10.     {
  11.         for (int j = n - i; j > 0; j--) // 打印空格
  12.         {
  13.             printf(" ");
  14.         }
  15.         for (int k = 1; k <= (2 * i - 1); k++) // 打印星号
  16.         {
  17.             printf("*");
  18.         }
  19.         printf("\n"); // 换行
  20.     }
  21. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-5-7 13:21:47 | 显示全部楼层
陶远航 发表于 2023-5-7 13:11
我对C++不熟悉,如果还不行,只能帮你到这了

这里我懂了,那主函数怎么调用它,直接printf吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-7 13:22:25 | 显示全部楼层
乔治爱啃脚趾 发表于 2023-5-7 13:21
这里我懂了,那主函数怎么调用它,直接printf吗

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

使用道具 举报

发表于 2023-5-7 13:24:07 | 显示全部楼层
isdkz 发表于 2023-5-7 13:22
函数3的编写和调用如下:

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

使用道具 举报

 楼主| 发表于 2023-5-7 13:25:55 | 显示全部楼层

我会了我会了,谢谢你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-5-7 13:26:37 | 显示全部楼层
isdkz 发表于 2023-5-7 13:22
函数3的编写和调用如下:

谢谢你,我会了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-10 12:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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