C语言中两道编程题求救!

1.有5个学生,每个学生有3门课,从键盘上输入以下数据(包括学号,姓名,三门课成绩),计算出平均成绩.将原来的数据和计算出的平均成绩存放在磁盘的"ZK1"中.2.编写程序... 1.有5个学生,每个学生有3门课,从键盘上输入以下数据(包括学号,姓名,三门课成绩),计算出平均成绩.将原来的数据和计算出的平均成绩存放在磁盘的"ZK1"中.
2.编写程序,功能是从键盘输入5个学生的数据(学号,姓名,语文成绩,数学成绩,英语成绩,平均分),要求输出三门课的总平均成绩,以及最高分的学生数据(姓名,总分).

第2题我编的程序如下:可是不对?编译不通过?
#include<stdio.h>
#include<string.h>
main()
{int i,j;
float sumavg=0.0;
float sum=0.0;
struct student
{int sno;
char sname[20];
float ywcj;
float sxcj;
float yucj;
float avgcj;
}struct student s[5];
printf("Please enter dabebase");
for(i=0;i<5;i++)
{scanf("%d",&s[i].sno);
scanf("%s",s[i].sname);
scanf("%f",&s[i].ywcj);
scanf("%f",&s[i].sxcj);
scanf("%f",&s[i].yucj);
scanf("%f',&s[i].avgcj);
}

sum=s[0].ywcj+s[0].sxcj+s[0].yucj;
for(i=1;i<5;i++)
if(sum<(s[i].ywcj+s[i].sxcj+s[i].yucj))
{sum=s[i].ywcj+s[i].sxcj+s[i].yucj;
j=i;}
for(i=0;i<5;i++)
sumavg+=s[i].ywcj+s[i].sxcj+s[i].yucj;
sumavg/=5;
printf("sum_avg=%f\n",sumavg);
printf("sname=%s sum=%f",s[j].sname sum);
}
第一道题涉及到到文件的概念,小弟根本不会?求大哥大姐们帮帮忙?
展开
 我来答
babybubble
推荐于2016-04-21 · TA获得超过308个赞
知道答主
回答量:139
采纳率:0%
帮助的人:185万
展开全部
第一题:
#include<stdio.h>
//定义一个结构,记录一个学生的信息
typedef struct{
char num[10];
char name[10];
int score[3];
} STUDENT;
int main()
{
FILE* file; //文件指针,用于打开文件和将数据写入文件的一个接口
STUDENT student[5]; //5个学生
int i,j;
double ave[3]; //计算各门课平均分用的
printf("请依次输入5个学生的信息:\n");
for (i=0; i<5; i++) //输入信息
{
scanf("%s%s",student[i].num,student[i].name);
for (j=0; j<3; j++) scanf("%d",&student[i].score[j]);
}
for (i=0; i<3; i++) ave[i]=0;
for (j=0; j<5; j++)
for (i=0; i<3; i++) ave[i]=ave[i]+student[j].score[i]; //先计算总分
for (i=0; i<3; i++) ave[i]=ave[i]/5.0; //算平均分

file=fopen("ZK1","w"); //打开一个文件,文件名叫ZK1
//下面使用fprintf将信息写入磁盘文件中
for (i=0; i<5; i++)
{
fprintf(file,"%s %s ",student[i].num,student[i].name);
for (j=0; j<3; j++) fprintf(file,"%d ",student[i].score[j]);
fprintf(file,"\n");
}
//写入三门课的平均成绩
fprintf("三门课的平均成绩分别是:");
for (i=0; i<3; i++) fprintf(file,"%lf ",ave[i]);
fclose(file); //关闭,保存文件
return 0;
}

至于第二题的程序
第22行,你写的是 scanf("%f',&s[i].avgcj);
你把%f后面的双引号打成单引号了
另外还有倒数第二行,你写的是 printf("sname=%s sum=%f",s[j].sname sum);
在s[j].sname和sum中间,你忘记打个逗号了

另外,你的struct定义写得不对,应该这样写:
typedef struct
{
int sno;
char sname[20];
float ywcj;
float sxcj;
float yucj;
float avgcj;
}student;
student s[5];
vitochen86
2007-10-18 · 超过24用户采纳过TA的回答
知道答主
回答量:53
采纳率:0%
帮助的人:0
展开全部
第二题应为:(除babybubble说的,楼主错误有:总平均成绩计算有问题,应为五个学生平均成绩的平均;还有,j首先应赋值为0,因为你那样的话第一个为最高分,就不行。
#include<stdio.h>
#include<string.h>
main()
{int i,j;
float sumavg=0.0;
float sum=0.0;
typedef struct
{int sno;
char sname[20];
float ywcj;
float sxcj;
float yucj;
float avgcj;
}student;
student s[5];
printf("Please enter dabebase\n");
for(i=0;i<5;i++)
{
printf("请输入第%d个学生学号\n",i+1);
scanf("%d",&s[i].sno);
printf("请输入该学生姓名\n");
scanf("%s",s[i].sname);
printf("请输入该学生成绩\n");
printf("语文:");
scanf("%f",&s[i].ywcj);
printf("数学:");
scanf("%f",&s[i].sxcj);
printf("英语:");
scanf("%f",&s[i].yucj);
printf("平均分:");
scanf("%f",&s[i].avgcj);
printf("\n\n");
}

sum=s[0].ywcj+s[0].sxcj+s[0].yucj;
j=0;
for(i=1;i<5;i++)
if(sum<(s[i].ywcj+s[i].sxcj+s[i].yucj))
{sum=s[i].ywcj+s[i].sxcj+s[i].yucj;
j=i;}
for(i=0;i<5;i++)
sumavg+=s[i].avgcj;
sumavg/=5;
printf("sum_avg=%f\n",sumavg);
printf("sname=%s sum=%f\n",s[j].sname,sum);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式