某个学习小组有5名学生,共开设三门课程,要求编程输入该小组所有学生各门成绩,然后按照总成绩高到底进行排序,并输出排序后的结果。该程序运行结果不对,请问该程序有哪些地方存在错误?

#include<stdio.h>
struct student
{
float chinese;
float math;
float English;
}chengji[4];
int main()
{
int i,j;
float sum[4],tmp;
for(i=0;i<5;i++)
{
printf("请输入其中一位同学三门课程的成绩:");
scanf("%d,%d,%d",&chengji[i].chinese,&chengji[i].math,&chengji[i].English);
}
for(i=0;i<5;i++)
{
sum[i]=chengji[i].chinese+chengji[i].math+chengji[i].English;
}
for(i=0;i<5;i++)
{
for(j=i+1;j<5;j++)
if(sum[i]<sum[j])
{
tmp=sum[i];
sum[i]=sum[j];
sum[j]=tmp;
}
}
printf("从高到底的成绩排序为:");
for(i=0;i<5;i++)
printf("sum[i],");
}

好几处错误,代码修改如下:

#include<stdio.h>
struct student
{
int chinese;
int math;
int English;
}chengji[4];
int main()
{
int i,j;
int sum[4],tmp;
for(i=0;i<5;i++)
{
printf("请输入其中一位同学三门课程的成绩:");
scanf("%d,%d,%d",&chengji[i].chinese,&chengji[i].math,&chengji[i].English);
}
for(i=0;i<5;i++)
{
sum[i]=chengji[i].chinese+chengji[i].math+chengji[i].English;
}
for(i=0;i<5;i++)
{
for(j=i+1;j<5;j++)
if(sum[i]<sum[j])
{
tmp=sum[i];
sum[i]=sum[j];
sum[j]=tmp;
}
}
printf("从高到底的成绩排序为:");
for(i=0;i<5;i++)
printf("%d\n",sum[i]);
}

img

不对具体什么现象呢?
成绩是浮点数,不能用%d输入的
scanf("%d,%d,%d",&chengji[i].chinese,&chengji[i].math,&chengji[i].English);
将%d改成%f
输出也是错的
for(i=0;i<5;i++)
printf("sum[i],");
}
改为
for(i=0;i<5;i++)
printf("%g ",sum[i]);
}

问题比较多,但是不需要更改输入的float类型,只需改输入和输出的格式就可以

#include<stdio.h>
struct student
{
    float chinese;
    float math;
    float English;
}chengji[4];
int main()
{
    int i, j;
    float sum[5], tmp;
    for (i = 0; i < 5; i++)
    {
        printf("请输入其中一位同学三门课程的成绩:");
        scanf("%f,%f,%f", &chengji[i].chinese, &chengji[i].math, &chengji[i].English);
    }
    for (i = 0; i < 5; i++)
    {
        sum[i] = chengji[i].chinese + chengji[i].math + chengji[i].English;
    }
    for (i = 0; i < 5; i++)
    {
        for (j = 0; j < 5-i-1; j++)
            if (sum[j] < sum[j+1])
            {
                tmp = sum[j];
                sum[j] = sum[j+1];
                sum[j+1] = tmp;
            }
    }
    printf("从高到底的成绩排序为:\n");
    for (i = 0; i < 5; i++)
        printf("%.2f\n",sum[i]);
}

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632