c++,输入5个学生的信息学号(6位整数)、姓名(6个字符)、3门课的成绩(3位整数1位小数)。计算每个学
输入5个学生的信息:学号(6位整数)、姓名(6个字符)、3门课的成绩(3位整数1位小数)。计算每个学生的平均成绩(3位整数2位小数),将所有数据写入文件STU1.DAT;
请问下面这个程序哪里不对??
#include<stdio.h>
struct student
{
int id;
char name[6];
float score[3];
float ave;
};
void main()
{
FILE *p;
struct student stu[5];
int i;
float sum;
p=fopen("STU1.DAT","w");
for(i=0;i<5;i++)
{
fprintf(p,"input id:\n");
fscanf(p,"%d",&stu[i].id);
fprintf(p,"input name:\n");
fscanf(p,"%s",stu[i].name);
fprintf(p,"input score:\n");
fscanf(p,"%f%f%f",&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2];
stu[i].ave = sum / 3;
fprintf(p,"ave=%3.2f\n",stu[i].ave);
}
fclose(p);
}
最佳答案
程序有多个问题,从基础的定义上,name要6个字符的话,必须定义char name[7];
最大的错是你的文件用只写打开的,你却用fscanf来读文件
另外 .,类似于input id:应该是提示,你却将它写入了文件
题目要求的是将数据写入文件,输入还是要用控制台的
追问:
那应该怎么改啊? 追答:
定义的我已帮你改了输入/输出改普通的scanf及printf就可以了最后才是输出到文件你既然都写了这个多程序,稍改下就可以了
追问:
最后应该怎么写啊,真的不会,谢谢。。。[心塞]。。。
循环中改 printf("input id:\n"); scanf("%d", &stu[i].id); printf("input name:\n"); scanf("%s", stu[i].name); printf("input score:\n"); scanf("%f%f%f", &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]); sum = stu[i].score[0] + stu[i].score[1] + stu[i].score[2]; stu[i].ave = sum / 3; fprintf(p, "ave=%3.2f\n", stu[i].ave);另外,注意你的输入/输出要求(你的程序可以不用结构数组的)
其他回答
暂无其它回答!