为什么执行2时,输出的是三个0呀?

#include"stdio.h"

#include"stdlib.h"

FILE*fp;

int i;

float sc1,sc2,sc3;

int creat()

{

 if((fp=fopen("cj.dat","w"))==NULL)

 {

  printf("\n打开失败");

  exit(1);

 }

 for(i=0;i<5;i++)

 {

  printf("请输入第%d个同学的3门成绩:",i+1);

  scanf("%d,%d,%d",&sc1,&sc2,&sc3);

  fprintf(fp,"%d,%d,%d\n",sc1,sc2,sc3);

 }

 fclose(fp);

 return 0;

}

int aver()
{
    float sum1=0,sum2=0,sum3=0;
    if((fp=fopen("cj.dat","r"))==NULL)
    {
        printf("\n打开失败");
        exit(1);
    }
    for(i=0;i<5;i++)
    {
        fscanf(fp,"%d,%d,%d",&sc1,&sc2,&sc3);
        sum1=sum1+sc1;
        sum2=sum2+sc2;
        sum3=sum3+sc3;
    }
    printf("3门成绩平均分分别为:%d,%d,%d\n",sum1/5,sum2/5,sum3/5);
    return 0;
}

main()
{
    int t;
    printf("1-输入3名同学的3门成绩\n");
    printf("2-计算各科的平均分\n");
    printf("请输入要执行功能对应的数字\n");
    while(1)
    {
    scanf("%d",&t);
    switch(t)
    {
        case 1:creat();break;
        case 2:aver();break;
    }
    }
}

 printf("3门成绩平均分分别为:%d,%d,%d\n",sum1/5,sum2/5,sum3/5);

改为

 printf("3门成绩平均分分别为:%f,%f,%f\n",sum1/5,sum2/5,sum3/5);

你从输入开始就不对了。浮点数的输入和输出你都得用%f格式化,不能用%d。%d是用来格式化整数的

所有的scanf、fscanf、printf、fprintf都需要改一下

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632