混沌,何处巡 2022-06-11 21:39 采纳率: 100%
浏览 44
已结题

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

  • 写回答

1条回答 默认 最新

  • 天际的海浪 2022-06-11 22:26
    关注

    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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 6月20日
  • 已采纳回答 6月12日
  • 创建了问题 6月11日

悬赏问题

  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题