鱼C论坛

 找回密码
 立即注册
查看: 1127|回复: 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的编写和调用如下:
#include <stdio.h>

// 函数 1: fmax
// 其他函数略

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

    for(int i = 1; i <= rows; i++) {
        for(int j = 1; j <= i; j++) {
            printf("*");
        }
        printf("\n");
    }
}

int main() {
    int a, b, c;
    // 输入三个正整数 a,b,c
    scanf("%d %d %d", &a, &b, &c);
    // fmax 自行编写
    // fmaxfactor 自行编写
    // fgeneral 自行编写

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

    return 0;
}

上述代码中,函数 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的编写和调用如下:
#include <stdio.h>

// 函数 1: fmax
// 其他函数略

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

    for(int i = 1; i <= rows; i++) {
        for(int j = 1; j <= i; j++) {
            printf("*");
        }
        printf("\n");
    }
}

int main() {
    int a, b, c;
    // 输入三个正整数 a,b,c
    scanf("%d %d %d", &a, &b, &c);
    // fmax 自行编写
    // fmaxfactor 自行编写
    // fgeneral 自行编写

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

    return 0;
}

上述代码中,函数 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,输出星号的三角形。你可以参考以下的代码:
# 定义函数fstar,参数为m
def fstar(m):
  # 如果m的尾数为0,输出提示
  if m % 10 == 0:
    print("参数为0!")
  # 否则,输出m%10行的三角形
  else:
    # 从1到m%10循环
    for i in range(1, m % 10 + 1):
      # 输出i个星号
      print("*" * i)

# 编写主函数main
def main():
  # 输入三个正整数a,b,c
  a = int(input("请输入a:"))
  b = int(input("请输入b:"))
  c = int(input("请输入c:"))
  # 调用fstar函数,参数为a+b+c
  fstar(a + b + c)

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

使用道具 举报

 楼主| 发表于 2023-5-7 13:08:33 | 显示全部楼层
陶远航 发表于 2023-5-7 12:34
我可以帮你编写和调用函数3,输出星号的三角形。你可以参考以下的代码:
#include<stdio.h>
int ffmax(int x,int y,int z)
{
   int max=0;
   if(x>y&&x>z)
   {
           max=x;
   }
   if(y>x&&y>z)
   {
           max=y;
   }
   if(z>y&&z>x)
   {
           max=z;
   }
   return max;
}
int fmaxfactor(int m,int n)
{        
   while(m!=n)
   {
           if(m>n)
           {
                   m=m-n;
           }
    else
    {
            n=n-m;
    }
   }
    return m;
} 
void fstar(int m)
{
}
int fgeneral(int m,int a)
{
  int sum=0,t,i;
  t=a;
  for(i=0;i<m;i++)
  {
          sum+=t;
          t=t*10;
  }
  return sum;
}
int main()
{
        int a,b,c,max,f;
        int factor,multiple;
        int k,m,sum,i,date=0;
        scanf("%d %d %d",&a,&b,&c);
        max=ffmax(a,b,c);
        printf("fmax is %d\n",max);
        factor=fmaxfactor(a+b,b+c);
        multiple=(a+b)*(b+c)/factor;
        printf("factor is %d\nthe multiple is %d\n",factor,multiple);
        k=(a+b)%10;
        m=(b+c)%10;
        sum=fgeneral(m,k);
        for(i=0;i<m;i++)
        {
                date+=sum; 
                sum=sum/10;
        }
        printf("fgeneral data is %d\n",date);
        
        
        return 0;
} 
这是除了函数三其他的代码,我看不太懂你写的那个,好像不太一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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