兔子不恰胡萝卜 2022-02-10 18:24 采纳率: 75%
浏览 39
已结题

c语言初学者的痛,这段哪里错了,完全不清楚

//有5位学生,每位学生有3门课的成绩,
//从键盘输入学生学号、姓名、3门课成绩,计算出平均成绩,
//将原有的数据和计算出的平均分数存放在文件studata.txt中;
#include<stdio.h>

int main()
{
char name[10] = { 0 };
int s1 = 0, s2 = 0, s3 = 0, n = 1, m = 1, aver = 0, sum = 0, xh = 0;
while (n <= 5)
{
FILE* pf = fopen("studata.txt", "at+");
if (pf == NULL)
{
perror("fopen");
return 1;
}
printf("请输入第%d个学生的学号:\n", n);
scanf_s("%d", &xh);
fputc(xh, pf);
printf("请输入第%d个学生的姓名:\n", n);
name[10] = gets();
while (name != '\n')
{
fputc(name, pf);
name[10] = getchar();
}
fclose(pf);
pf = fopen("studata.txt", "at+");
if (pf == NULL)
{
perror("fopen");
return 1;
}
printf("请输入第%d个学生的3门成绩:\n", n);
scanf_s("%d %d %d", &s1, &s2, &s3);
while (m <= 5)
{
fputc(s1, pf);
fputc(s2, pf);
fputc(s3, pf);
sum = s1 + s2 + s3;
aver = sum / 3.0;
printf("第%d个学生的3门成绩平均分数为:%d\n", n, aver);
m++;
break;
}
n++;
fclose(pf);
}
return 0;
}

  • 写回答

2条回答 默认 最新

  • a5156520 2022-02-10 19:02
    关注

    需要修改的地方,下面注释了一下,下面是我的一个实现,供你参考:

    
    
    //5位学生,每位学生有3门课的成绩,
    //从键盘输入学生学号、姓名、3门课成绩,计算出平均成绩,
    //将原有的数据和计算出的平均分数存放在文件studata.txt中;
    #include<stdio.h>
    
    int main()
    {
        char name[10] = { 0 };
        int s1 = 0, s2 = 0, s3 = 0, n = 1, m = 1, aver = 0, sum = 0, xh = 0;
        FILE* pf = fopen("studata.txt", "w+");
            
        if (pf == NULL)
        {
            perror("fopen");
            return 1;
        }
        
        while (n <= 5)
        {
        
        
            printf("请输入第%d个学生的学号:\n", n);
            scanf("%d",&xh);
            fprintf(pf,"%d ",xh);
            
            printf("请输入第%d个学生的姓名:\n", n);
        //    name[10] = gets(); 获取输入要换个方法 
            scanf("%s",name);
            fprintf(pf,"%s ",name);
            
        //    while (name != '\n')  name是字符串,后面'\n'是换行符,二者不能比较 
    //        {
    //            //fputc(name, pf);    存入字符串到文件,要用另外的方法 
    //            name[10] = getchar();
    //        }
            
            
        //    fclose(pf);
    //        pf = fopen("studata.txt", "at+");
    //        
    //        if (pf == NULL)
    //        {
    //            perror("fopen");
    //            return 1;
    //        }
            printf("请输入第%d个学生的3门成绩:\n", n);
            scanf("%d %d %d", &s1, &s2, &s3);
            fprintf(pf,"%d %d %d ",s1,s2,s3);
            
            sum=0;
                    
            sum = s1 + s2 + s3;
            aver = sum / 3;
            printf("第%d个学生的3门成绩平均分数为:%d\n", n, aver);
            fprintf(pf,"%d\n", aver);
            m++;
                
    
            
            n++;
        
        
        }
            fclose(pf);
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月18日
  • 已采纳回答 2月10日
  • 创建了问题 2月10日

悬赏问题

  • ¥50 potsgresql15备份问题
  • ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
  • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上