用C语言 输入4个学生的3门课成绩,计算并输出每科成绩的最高分和每个学生的平均分

我数组之间的比较不太好。。而且我输入4个学生的三门成绩是写了3个差不多的循环 我给你看看
#include <stdio.h>

void main()
{
double ak[3],aver1,sum1=0,bk[3],aver2,sum2=0,ck[3],aver3,sum3=0,max,k;
int i;

printf("请输入A的3科成绩:\n");
for(i=0; i<=2; i++)
{
scanf("%lf", &ak[i]);
sum1+=ak[i];
}
aver1=sum1/3;
printf("甲同学的平均成绩=%.2f\n",aver1);
printf("请输入b的3科成绩:\n");
for(i=0; i<=2; i++)
{
scanf("%lf", &bk[i]);
sum2+=bk[i];
}
aver2=sum2/3;
printf("乙同学的平均成绩=%.2f\n",aver2);
printf("请输入c的3科成绩:\n");
for(i=0; i<=2; i++)
{
scanf("%lf", &ck[i]);
sum3+=ck[i];
}
aver3=sum3/3;
printf("丙同学的平均成绩=%.2f\n",aver3);
k=(double)sqrt(ak[1]);
printf("%f",k);
}

朋友您好!针对您的问题我作出如下回答:
这道题您代码其实非常丑,这种for循环重复使用,不是一个好代码。
既然有四个学生,为何不用1~4的循环直接概括呢?
在计算最高分和平均分时,是用不到sqrt函数的。不过如果要用,的确是要math.h的头文件的。
这里我给您一个代码给您参考下:
#include <stdio.h>
int main() {
double mark[4][3], aver[4], high[3] = {0};
int i, j;
for (i = 0; i < 4; i++) {
double all = 0.0;
printf ("请输入%c的三门成绩:\n", 'A'+i);
for (j = 0; j < 3; j++) {
scanf ("%lf", &mark[i][j]);
high[j] = high[j] < mark[i][j] ? mark[i][j] : high[j];
all += mark[i][j];
}
printf ("%c同学的平均成绩是:%.2lf\n", 'A'+i, all / 3);
}
printf ("三科的最高分分别为:%.2lf %.2lf %.2lf", high[0], high[1], high[2]);
return 0;
}
二维数组可以减少您很多的代码。

希望我的解答能够帮助到您,望采纳!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-05-17
#include <stdio.h>
#include<math.h>
void main()
{
double ak[3],aver,sum=0,k;
int i,j;
char str[4]={"ABC"};
for(j=0;j<3;j++)
{
printf("请输入%c的3科成绩:\n",str[j]);
for(i=0; i<=2; i++)
{
scanf("%lf", &ak[i]);
sum+=ak[i];
}
aver=sum/3;
printf("%c同学的平均成绩=%.2f\n",str[j],aver);
}
k=(double)sqrt(ak[1]);
printf("%f",k);
}
这样可否?
第2个回答  2014-05-17
楼上正解 缺少#include<math.h>
第3个回答  2014-05-17
程序缺少头文件
#include<math.h>追问

请仔细看下我的题目 而不是我写的程序
再者 头文件也是有的 请你仔细看下

相似回答