#include
#define N 10
int main()
{
float score[N],Maxscore=0,Minscore=0,sum=0,ave;
int Num[10],Maxnum,Minnum,i;
for(i=0;i {
printf("请输入第%d个学生的学号和成绩:\n",i+1);
scanf("%d,%f",&Num[i],&score[i]);
sum=sum+Num[i];
if(score[i]>Maxscore)
{
Maxscore=score[i];
Maxnum=Num[i];
}
else if(score[i]<Minscore)
{
Minscore=score[i];
Maxnum=Num[i];
}
}
ave=sum/10;
printf("平均分为%d,最高分及其学分为%f,%d,最低分及其学分为%f,%d\n",ave,Maxscore,Maxnum,Minscore,Minnum);
return 0;
}
题目是依次输入十个学生的成绩和学号,求平均分和最高分和对应的学号以及最低分和对应的学号。我这为啥会这样……
好几个错误:
1.Minscore应该设一个很大的初始值,或者i==0的时候将这个值赋值给Minscore
2.sum=sum+Num[i];应该是sum = sum + score[i];
3.else if(score[i]<Minscore)里Minnum = Num[i];写成了Maxnum=Num[i];
4.printf("平均分为%d,最高分及其学分为%f,%d,最低分及其学分为%f,%d\n",ave,Maxscore,Maxnum,Minscore,Minnum);应该是printf("平均分为%f,最高分及其学分为%f,%d,最低分及其学分为%f,%d\n",ave,Maxscore,Maxnum,Minscore,Minnum);
#include<stdio.h>
#define N 10
int main()
{
float score[N], Maxscore = 0, Minscore = 9999999, sum = 0, ave;
int Num[N], Maxnum, Minnum, i;
for (i = 0; i<N; i++)
{
printf("请输入第%d个学生的学号和成绩:\n", i + 1);
scanf("%d,%f", &Num[i], &score[i]);
sum = sum + score[i];
if (score[i]>Maxscore)
{
Maxscore = score[i];
Maxnum = Num[i];
}
else if (score[i]<Minscore)
{
Minscore = score[i];
Minnum = Num[i];
}
}
ave = sum / N;
printf("平均分为%f,最高分及其学分为%f,%d,最低分及其学分为%f,%d\n", ave, Maxscore, Maxnum, Minscore, Minnum);
return 0;
}
Minscore 的初始值不应该为 0;如果为零,已经是最小了,难道还有负分。应该将Minscore 设置成score[0];这样便可以得到正确结果了