//有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;
}
需要修改的地方,下面注释了一下,下面是我的一个实现,供你参考:
//有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;
}
看报错原因,如果语法没有错的话,找找缩进和'';''符号少没少
如果用的Dev,有时候可以关掉重新打开,我以前有的时候也会莫名的运行不了但是关掉重开就又可以运行了