关于#C语言#的问题,如何解决?

学生的记录由学号、姓名、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]);
}

img

你题目的解答代码如下:

#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);
}

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img