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

2024-11-03 06:59:30
推荐回答(2个)
回答1:

第一题:
#include
//定义一个结构,记录一个学生的信息
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];

回答2:

第二题应为:(除babybubble说的,楼主错误有:总平均成绩计算有问题,应为五个学生平均成绩的平均;还有,j首先应赋值为0,因为你那样的话第一个为最高分,就不行。
#include
#include
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);
}