烁子要开心 2021-12-26 23:27 采纳率: 90%
浏览 82
已结题

C语言,哪里有错误,为什么运行会乱码

是不是没加每个学生分别的总成绩导致的?

img

img

img

img






#include <stdio.h>
struct stu
{
    char xm[20];    //姓名
    char xh[20];    //学号
    int pscj;      // 平时成绩
    int qmcj;      //期末成绩
    float zcj;       //总成绩
};
int main()
{
    struct stu student[4],t;
    int i,f=0,j;float sum=0;
    int a,s,d,g,h;a=s=d=g=h=0;
    float average;
    printf("Please enter student information");
    printf("name\t Student id\t grades\t The final result\n");
    for(i=0;i<4;i++)
        scanf("%s,%s,%d,%d",student[i].xm,student[i].xh,&student[i].pscj,&student[i].qmcj);
    printf("The total score of the students is\n");
    for(i=0;i<4;i++)
    {
        student[i].zcj=student[i].pscj*0.3+student[i].qmcj*0.7;
        sum+=student[i].zcj;
    }
    for(i=0;i<2;i++)
    {
        printf("% f",student[i].zcj);
    }
    average=sum/4.0;
    for(i=0;i<4;i++)
        for(j=0;j<4-i;j++)
        {
            if(student[j].zcj>student[j+1].zcj)
            {
                t=student[j];
                student[j]=student[j+1];
                student[j+1]=t;
            }
}
    for(i=0;i<4;i++)
{
    printf("%s,%s,%d,%d,%f\n",student[i].xm,student[i].xh,student[i].pscj,student[i].qmcj,student[i].zcj);
}
    for(i=0;i<4;i++)
    {
        if(student[i].zcj>=average)
        {
    f++;
    printf("%s,%s,%d,%d,%f\n",student[i].xm,student[i].xh,student[i].pscj,student[i].qmcj,student[i].zcj);
}

    }
    printf("Class size%f%",(f/4)*100);
    printf("        A       B      C      D       E\n");
    for(i=0;i<4;i++)
            
            {
                switch(int(student[i].zcj)/4)
                {
                    case 10:
                    case 9:a++;
                           break;
                    case 8:s++;
                           break;
                    case 7:d++;
                           break;
                    case 6:g++;
                           break;
                    default:h++;
                }
            }
            printf("%2d(%.1f%%)  ",a,(double)a/4*100);
            printf("%2d(%.1f%%)  ",s,(double)s/4*100);
            printf("%2d(%.1f%%)  ",d,(double)d/4*100);
            printf("%2d(%.1f%%)  ",g,(double)g/4*100);
            printf("%2d(%.1f%%)\n",h,(double)h/4*100);
    for(i=0;i<4;i++)
    {
        if(student[i].zcj>=0&&student[i].zcj<60)
        {
            printf("%s,%s,%d,%d,%f\n",student[i].xm,student[i].xh,student[i].pscj,student[i].qmcj,student[i].zcj);
        }
    }
           }
  • 写回答

3条回答 默认 最新

  • 赵4老师 2021-12-27 10:55
    关注

    scanf里面的%s全部改为%[^,\n]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月7日
  • 已采纳回答 12月30日
  • 修改了问题 12月29日
  • 修改了问题 12月28日
  • 展开全部

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀