有五个学生,每个学生有三门课程的成绩,从键盘输入学生数据(包括学号,姓名,3门课程成绩),计算出平均成绩

将原有数据和计算出的平均分数存放在磁盘文件“stud”中

经测试,程序正确运行,并把输入结果保存在stud文件中。
源代码如下:

#include <stdio.h>

#define ID 11

typedef struct _stu
{
char id[ID];
int sco1;
int sco2;
int sco3;
}stu;

int main()
{
int i;
stu s[5];
FILE *fp;
float ave;
printf("请输入五个学生的学号和三门成绩:\n");
for(i=0;i<5;i++)
{
scanf("%s%d%d%d",s[i].id,&s[i].sco1,&s[i].sco2,&s[i].sco3);
}

if((fp=fopen("stud","w"))==NULL)
{
printf("文件打开失败\n");
return ;
}

for(i=0;i<5;i++)
{
ave=(s[i].sco1+s[i].sco2+s[i].sco3)/3.0;
fprintf(fp,"%s %d %d %d %.2f\n",s[i].id,s[i].sco1,s[i].sco2,s[i].sco3,ave);
}

fclose(fp);
return 0;
}追问

编译过程出错了:

追答

你把错误提示给我看看,我用gcc编译没有问题

追问

c:\users\administrator\desktop\cpp1.cpp(33) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data c:\users\administrator\desktop\cpp1.cpp(38) : error C2562: 'main' : 'void' function returning a value c:\users\administrator\desktop\cpp1.cpp(13) : see declaration of 'main'
执行 cl.exe 时出错. Cpp1.obj - 1 error(s), 0 warning(s)

追答

第一个警告可以忽略,没什么问题。就是提示double转换为float可能丢失精度,由于都是计算的较小数据,没有大碍。如果不想有警告,可以这样写:
ave=(float)((s[i].sco1+s[i].sco2+s[i].sco3)/3.0);
第二,我想你把源代码更改了,把int main改成main 或者 void main了吧,如果是这样,把倒数第二行的return 0;删去。

温馨提示:答案为网友推荐,仅供参考