学生的记录由学号、姓名、C语言成绩组成,根据班级人数,将学生记录存放在结构体数组中。请编程实现将C语言成绩转换成等级制(五级制),输出所有学生的记录:学号、姓名、C语言等级,并将其保存到文件中。要求:班级人数、学生记录均由键盘输入
#include<stdio.h>
struct student{
long int number;
char name[10];
int score[2];
};struct student input()
{struct student stud;
int i;
printf("学号:");
scanf("%ld",&stud.number);
printf("姓名:");
scanf("%s",stud.name);
printf("两门成绩:");
for(i=0;i<2;i++)
scanf("%d",&stud.score[i]);
return stud;
}
void print(struct student stud)
{int i;
printf("%ld\t",stud.number);
printf("%s\t",stud.name);
for(i=0;i<2;i++)
printf("%d\t",stud.score[i]);
printf("\n");
}
void main()
{ int i;
struct student stu[3];
for(i=0;i<3;i++)
stu[i]=input();
printf("\n学号 姓名 c语言 排名组成");
for(i=0;i<3;i++)
print(stu[i]);
}
你题目的解答代码如下:
#include <stdio.h>
struct student
{
long int number;
char name[10];
int score;
char level;
};
struct student input()
{
struct student stud;
int i;
printf("学号:");
scanf("%ld", &stud.number);
printf("姓名:");
scanf("%s", stud.name);
printf("C成绩:");
scanf("%d", &stud.score);
if (stud.score>=90)
stud.level = 'A';
else if (stud.score>=80)
stud.level = 'B';
else if (stud.score>=70)
stud.level = 'C';
else if (stud.score>=60)
stud.level = 'D';
else
stud.level = 'E';
return stud;
}
void print(struct student stud)
{
int i;
printf("%ld\t", stud.number);
printf("%s\t", stud.name);
printf("%d\t", stud.score);
printf("%c\t", stud.level);
printf("\n");
}
void save(struct student stu[],int n)
{
FILE* fp;
int i;
if ((fp = fopen("stu.txt", "w")) == NULL)
{
printf("cannot open file\n");
return;
}
fprintf(fp,"学号\t姓名\tc语言\t等级\n");
for (i = 0; i < n; i++)
{
fprintf(fp,"%ld\t", stu[i].number);
fprintf(fp,"%s\t", stu[i].name);
fprintf(fp,"%d\t", stu[i].score);
fprintf(fp,"%c\t", stu[i].level);
fprintf(fp,"\n");
}
fclose(fp);
}
void main()
{
int i,n;
printf("请输入班级人数:");
scanf("%d", &n);
struct student stu[n];
for (i = 0; i < n; i++)
stu[i] = input();
printf("\n学号\t姓名\tc语言\t等级\n");
for (i = 0; i < n; i++)
print(stu[i]);
save(stu,n);
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!