c语言程序改错 输入10个学生5门课的成绩,分别用函数实现以下功能
发布网友
发布时间:2022-08-20 14:32
我来回答
共4个回答
热心网友
时间:2023-11-06 06:44
#include <stdio.h>
#include <stdlib.h>
float s[10][5];
int r=0,c=0;
void f2(void)
{
int i,j,cour = 0;
for(j=0;j<5;j++)
{
for(i=0;i<10;i++)
cour+=s[i][j];
printf("第%d课的平均分是%d\n",(j+1),cour/10);
cour = 0;
}
}
void f3(void)
{
int i,j,high=0;
for(j=0;j<5;j++)
{
for(i=0;i<10;i++)
{
if(s[i][j]>high)
{
high=s[i][j];
r=i+1;
c=j+1;
}
}
printf("最高分是%d,学生是%d,课程是%d\n",high,r,c);
r=0;
c = 0;
high = 0;
}
}
int main()
{
int i,j,score=0;
for(i=0;i<10;i++)
{
printf("enter NO.%d score\n",i+1);
for(j=0;j<5;j++)
{
scanf("%f",&s[i][j]);
score += s[i][j];
}
printf("第%d个学生的平均分是%d\n",(i+1),score/5);
score = 0;
}
f2();
f3();
system("PAUSE");
return 0;
}
你的问题有点多啊,你看一下吧。
注意你定义的数组类型,如果是float,记得输入的时候用%f;
函数返回值的问题,全局变量和局部变量的问题,你没用好。
还有每次计算完之后注意数据还原置0,比如score……
养成代码规范的习惯,每个for,if语句都该有个{}括号。这是好习惯。
热心网友
时间:2023-11-06 06:44
int i,j,high;
for(i=0;i<10;i++)
for(j=1;j<5;j++)
if(s[i][j]>s[0][0])
{
high=s[i][j];
r=i+1;
c=j+1;
我觉得high应该先赋初值为s[0][0]即high=s[0][0].然后将 if(s[i][j]>s[0][0])中改为s[i][j]>high.不然的话,你每次循环s[i][j]只是和s[0][0]比较大小,那么high所保存的数就不一定是是s[10][5]中最大的数。这只是我个人看法,你想下,对的话,就试下,看可以不?希望对你有帮助···追问这点我已经改过了,感谢提醒
热心网友
时间:2023-11-06 06:45
f1,f2里面,score和cour要赋初值,3个函数都没返回值,怎么能用函数返回值做printf的变量呢 ,而且第三个函数也错误了,他只能找到值比s[0][0]大的最后一个数,而不是最大的数追问请看补充,修改后如上。怎么输入计算的结果不对呢.有劳
热心网友
时间:2023-11-06 06:45
把你的程序改了下:
#include <stdio.h>
#define N 10//学生数
#define M 5//课程数
float f1(float p[][M],int n)
{
float score=0;
for(int i=0;i<M;i++)
score+=p[n][i];
return score/M;
}
float f2(float p[][M],int n)
{
float cour=0;
for(int i=0;i<N;i++)
cour+=p[i][n];
return cour/N;
}
int * f3(float p[][M],float &max)
{
int i,j,b[2];
for(i=0;i<N;i++)
for(j=0;j<M;j++)
if(p[i][j]>max)
{
max=p[i][j];
b[0]=i+1;
b[1]=j+1;
}
return b;
}
int main()
{
float stu[N][M];
int i,j,*p;
float max=0;
for(i=0;i<N;i++)
{
printf("enter NO.%d score\n",i+1);
for(j=0;j<M;j++)
scanf("%f",&stu[i][j]);
}
for(i=0;i<N;i++)
printf("第%d个学生的平均分是%.2f\n",(i+1),f1(stu,i));
for(i=0;i<M;i++)
printf("第%d课的平均分是%.2f\n",i+1,f2(stu,i));
p=f3(stu,max);
printf("学生%d的%d课程是最高分:%.2f\n",*p,*(p+1),max);
//system("PAUSE");
return 0;
}