m0_74459526 2022-12-09 08:03 采纳率: 75%
浏览 68
已结题

c语言与数组、指针有关的问题

c语言设计一个小程序,可简单实现10名学生3门课程成绩的录入、输出和查询,需要有提示菜单

  • 写回答

1条回答 默认 最新

  • 牛马不分 2022-12-09 09:40
    关注

    望采纳:
    可以看题目意思,确认下面步骤:
    1、学生信息结构体,有学号、3门成绩

    struct student
    {
        int nId;             // 学号
        float fLanguage;     // 语文
        float fMath;         // 数学
        float fEnglish;      // 英语
    };
    

    因为要十名学生,所以可以定义结构体数组

    student st_stu[10];
    

    int total;标识数组下标
    2、成绩的录入函数

                student st;
    
                printf("\n 输入您的学号: ");
                scanf("%d", &st.nId);
    
                printf("\n 输入您的语文成绩: ");
                scanf("%f", &st.fLanguage);
    
                printf("\n 输入您的数学成绩: ");
                scanf("%f", &st.fMath);
    
                printf("\n 输入您的英语成绩: ");
                scanf("%f", &st.fEnglish);
    
                st_stu[total++] = st;
    

    3、成绩的输出

                for (int i = 0; i < total; ++i)
                {
                    printf("\n学号:%d,语文成绩:%f,数学成绩:%f,英语成绩:%f\n", st_stu[i].nId, st_stu[i].fLanguage, st_stu[i].fMath, st_stu[i].fEnglish);
                }
    

    4、成绩查询

                int nId = 0;
                printf("\n 输入您要查询的学号: ");
                scanf("%d", &nId);
                int nflag = 0;
                for (int i = 0; i < total; ++i)
                {
                    if (st_stu[i].nId == nId)
                    {
                        nflag = 1;
                        printf("\n学号:%d,语文成绩:%f,数学成绩:%f,英语成绩:%f\n", st_stu[i].nId, st_stu[i].fLanguage, st_stu[i].fMath, st_stu[i].fEnglish);
                        break;
                    }
                }
                if (nflag == 0)
                {
                    printf("没有找到该学号的成绩,请输入有选项!\n");
                }
    

    5、整体代码

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    struct student
    {
        int nId;             // 学号
        float fLanguage;     // 语文
        float fMath;         // 数学
        float fEnglish;      // 英语
    };
    
    int main()
    {
        student st_stu[10];
    
        int ch = 0;                    // 输入命令
        int y = 0;                     // 输入结束符
    
        int total = 0;        // 数组下标
    
        do
        {
            printf("************************************\n");
            printf("\n\t 输入指令 ");
            printf("\n 1. 录入学生成绩");
            printf("\n 2. 输出学生成绩");
            printf("\n 3. 按学号查询学生成绩");
            printf("\n 4. end 表示命令输入结束 \n");
            printf("************************************");
            printf("\n输入您的选择: ");
            scanf("%d", &ch);
    
            switch (ch)
            {
            case 1:
            {
                student st;
                memset(&st, 0, sizeof(st));
    
                printf("\n 输入您的学号: ");
                scanf("%d", &st.nId);
    
                printf("\n 输入您的语文成绩: ");
                scanf("%f", &st.fLanguage);
    
                printf("\n 输入您的数学成绩: ");
                scanf("%f", &st.fMath);
    
                printf("\n 输入您的英语成绩: ");
                scanf("%f", &st.fEnglish);
    
                st_stu[total++] = st;
                break;
            }
            case 2:
            {
                for (int i = 0; i < total; ++i)
                {
                    printf("\n学号:%d,语文成绩:%f,数学成绩:%f,英语成绩:%f\n", st_stu[i].nId, st_stu[i].fLanguage, st_stu[i].fMath, st_stu[i].fEnglish);
                }
                break;
            }
            case 3:
            {
                int nId = 0;
                printf("\n 输入您要查询的学号: ");
                scanf("%d", &nId);
                int nflag = 0;
                for (int i = 0; i < total; ++i)
                {
                    if (st_stu[i].nId == nId)
                    {
                        nflag = 1;
                        printf("\n学号:%d,语文成绩:%f,数学成绩:%f,英语成绩:%f\n", st_stu[i].nId, st_stu[i].fLanguage, st_stu[i].fMath, st_stu[i].fEnglish);
                        break;
                    }
                }
                if (nflag == 0)
                {
                    printf("没有找到该学号的成绩,请输入有选项!\n");
                }
                break;
            }
            case 4:
            {
                y = 1;
                break;
            }
            default:
                printf("\n请输入有选项!\n");
                break;
    
            }
        } while (y != 1);
        return 0;
    }
    
    

    6、打印输出

    ************************************
    
             输入指令
     1. 录入学生成绩
     2. 输出学生成绩
     3. 按学号查询学生成绩
     4. end 表示命令输入结束
    ************************************
    输入您的选择: 1
    
     输入您的学号: 1
    
     输入您的语文成绩: 80.1
    
     输入您的数学成绩: 90.3
    
     输入您的英语成绩: 7.01
    ************************************
    
             输入指令
     1. 录入学生成绩
     2. 输出学生成绩
     3. 按学号查询学生成绩
     4. end 表示命令输入结束
    ************************************
    输入您的选择: 2
    
    学号:1,语文成绩:80.099998,数学成绩:90.300003,英语成绩:7.010000
    ************************************
    
             输入指令
     1. 录入学生成绩
     2. 输出学生成绩
     3. 按学号查询学生成绩
     4. end 表示命令输入结束
    ************************************
    输入您的选择: 3
    
     输入您要查询的学号: 1
    
    学号:1,语文成绩:80.099998,数学成绩:90.300003,英语成绩:7.010000
    ************************************
    
             输入指令
     1. 录入学生成绩
     2. 输出学生成绩
     3. 按学号查询学生成绩
     4. end 表示命令输入结束
    ************************************
    输入您的选择: 4
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月18日
  • 已采纳回答 12月10日
  • 创建了问题 12月9日

悬赏问题

  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题