题目:现有N个学生M门课程的学生成绩信息需要存储和处理。其中,学生信息包含学号、姓名、各科成绩等信息。使用分治思维对问题进行设计,建议使用菜单界面进行功能布局。
至少完成以下功能:
(1)从文件中读取学生的学号、姓名及成绩等信息:
(2)计算各学生成绩的平均分和总分:
(3)统计各分数段的学生人数及所占的百分比并输出。
(4)将N个学生的学号、姓名及M门课程的成绩、总分、平均分写到文件存储。
基于GPT:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 100
struct student
{
char name[30];
int num;
int score1;
int score2;
int score3;
}stu[MAX];
int n=0;
void ReadFile()
{
FILE* fp;
fp=fopen("score.txt","r");
if(fp==NULL)
{
printf("打开文件失败\\n");
exit(0);
}
while(fscanf(fp,"%d%s%d%d%d",&stu[n].num,stu[n].name,&stu[n].score1,&stu[n].score2,&stu[n].score3)!=EOF)
{
n++;
}
printf("读取文件成功\\n");
fclose(fp);
}
void cal1()
{
int i,sum=0,ave;
for(i=0;i<n;i++)
{
sum+=stu[i].score1+stu[i].score2+stu[i].score3;
}
ave=sum/(n*3);
printf("总分为%d,平均分为%d\\n",sum,ave);
}
void cal2()
{
int i,a=0,b=0,c=0,d=0;
float pa,pb,pc,pd;
for(i=0;i<n;i++)
{
if(stu[i].score1<60||stu[i].score2<60||stu[i].score3<60)
{
d++;
}
else if((stu[i].score1+stu[i].score2+stu[i].score3)/3>=90)
{
a++;
}
else if((stu[i].score1+stu[i].score2+stu[i].score3)/3>=80)
{
b++;
}
else if((stu[i].score1+stu[i].score2+stu[i].score3)/3>=60)
{
c++;
}
}
pa=1.0*a/n,pb=1.0*b/n,pc=1.0*c/n,pd=1.0*d/n;
printf("90分以上人数为%d,占比为%.2f%%\\n",a,pa*100);
printf("80~89分人数为%d,占比为%.2f%%\\n",b,pb*100);
printf("60~79分人数为%d,占比为%.2f%%\\n",c,pc*100);
printf("不及格人数为%d,占比为%.2f%%\\n",d,pd*100);
}
void WriteFile()
{
FILE *fp;
fp=fopen("result.txt","w");
if(fp==NULL)
{
printf("打开文件失败\\n");
exit(0);
}
int i,j,sum;
for(i=0;i<n;i++)
{
sum=stu[i].score1+stu[i].score2+stu[i].score3;
fprintf(fp,"%d %s %d %d %d %d %d %d\\n",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,sum,sum/3);
}
printf("写入文件成功\\n");
fclose(fp);
}
int main()
{
printf("请选择功能:\\n");
printf("1. 从文件中读取学生的学号、姓名及成绩等信息\\n");
printf("2. 计算各学生成绩的平均分和总分\\n");
printf("3. 统计各分数段的学生人数及所占的百分比并输出\\n");
printf("4. 将N个学生的学号、姓名及M门课程的成绩、总分、平均分写到文件存储\\n");
int choice;
scanf("%d",&choice);
switch(choice)
{
case 1:
ReadFile();
break;
case 2:
cal1();
break;
case 3:
cal2();
break;
case 4:
WriteFile();
break;
default:
printf("输入有误\\n");
break;
}
return 0;
}
你都问GPT了,直接让他给你代码啊,还来CSDN提问问代码,得到的依旧是GPT代码