简单c语言问题,为什么自定义函数返回值为0

Python014

简单c语言问题,为什么自定义函数返回值为0,第1张

int f1(int,int)

int f2(int)

float f3(int,int)

这三句完全可以不要

子函数的定义中,如果子函数的代码在调用它的前面写,完全可以不用再定义

你的这个问题,完全可以不要子函数,因为子函数带来的计算了会更大一些

你应该见过1!+2!+3!+...+n!这个题目的计算代码

我现在给你写一下

int i,n=1,sum=0

for(i=1i<=ni++)

{

n*=i //先后荣获就是计算n!的,如你的子函数计算,但是在这里计算了会小很多

sum+=n

}

参考一下,你应该能写出这个题目的更简单的代码

其实你的错误在这里

sum=f1(i,n)/f2(i)就是这一句

因为f1,f2返回的都是int型的,那么f1(i,n)/f2(i)得到的结果也是int型的,如果在0~1之间的结果,那么就是0

改为

sum=1.0*f1(i,n)/f2(i)

或者sum=(float)1.0*f1(i,n)/f2(i)

#include <stdio.h>

#define N 2

#define M 2

int s[N]={0},a[N][M]

char b[N][10]

void fun1(int a[N][M])

{

int i,j

for(i=0i<Ni++)

{

for(j=0j<Mj++)

s[i]+=a[i][j]

printf("第%d个同学的平均分是%.2f\n",i+1,s[i]/5.0)

}

}

void fun2(int a[N][M])

{

float p[M]={0}

int i,j

for(i=0i<Mi++)

{

for(j=0j<Nj++)

p[i]+=a[j][i]

p[i]/=10.0

printf("第%d门课程的平均分是%.2f\n",i+1,p[i])

}

}

void fun3(char b[N][10])

{

int max,t,i

max=s[0]

for(i=1i<Ni++)

if(s[i]>max)

{

max=s[i]

t=i/*记住最大时i的值,以便找到姓名*/

}

printf("%s荣获所有学生中最高分%d分\n",b[t],max)

}

main()

{

int i,j

float p[M]={0}

/* 输入姓名和成绩*/

for(i=0i<Ni++)

{

printf("输入第%d个学生的姓名:",i+1)

scanf("%s",&b[i])

for(j=0j<Mj++)

{

printf("输入该学生的第%d门成绩:",j+1)

scanf("%d",&a[i][j])

}

}

printf("\n")

/*计算每个同学平均分*/

fun1(a)

printf("\n")

/*计算每门课的平均分*/

fun2(a)

printf("\n")

/*比较求出最大总分和输出姓名*/

fun3(b)

return 0

}

代码经过测试了 运行成功

如果有什么不懂的可以问我

"Is the fifth national education cup ITAT education project employability skills contest" language C program design group won prizes.