qq_36135204
yanheR
采纳率50%
2016-10-10 06:19

求助,为啥结果全是错的

已采纳

#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;
}
题目是依次输入十个学生的成绩和学号,求平均分和最高分和对应的学号以及最低分和对应的学号。我这为啥会这样……图片

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • qq423399099 小灸舞 5年前

    好几个错误:
    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;
    }
    
    点赞 评论 复制链接分享
  • u014686356 小黄人的banana 5年前

    Minscore 的初始值不应该为 0;如果为零,已经是最小了,难道还有负分。应该将Minscore 设置成score[0];这样便可以得到正确结果了

    点赞 1 评论 复制链接分享