i possible 2022-05-04 13:07 采纳率: 100%
浏览 966
已结题

C语言 :输入学号得到年级学院等信息。

编写程序:从键盘上任给一个学生的学号,输出该学号相关的信息。(例如: 输入202101011150, 输出: 2021级,机械与动力工程学院, 11班, 50号)
要求:有输入,对输入的学号判断,不是12位的数字符号重新输入学号(当输入0,结束程序运行),如果是12位数字符号,分别输出:级,学院,班级,班内序号
注意:
(1) 级,限定在'2021',2020',2019,2018'当中, 否则重新输入学号
(2)匹配不.上给定的学院代码,给出相应提示,并重新输入学号。
学院代码有"01"."机械与动力工程学院,"02"."电气工程学院"03":"化工学院","04"."”土木工程学院","05":"水利科学与工程学院,"06":"力学与安全工程学院",07":"管理工程学院,"08":"材料科学与工程学院"09":"建筑学院","63":"口腔医学院”,10":”地球科学与技术学院”11:"生态与环境学院",21":"数学与统计学院",22":"物理学院","23"."化学学院","24":"信息工程学院","31"."商学院","32":旅游管理学院",33":"政治与公共管理学院","34":"信息管理学院","35":"法学院","36*."文学院","37":外国语与国际关系学院","38"."历史学院","39:"马克思主义学院","40":"新闻与传播学院",41":"教育学院",45*:"书法学院","46":"美术学院”,"47*."生命科学学院,"48":"音乐学院","49":”体育学院(校本部)","51":"基础医学院","52":"公共卫生学院",53":"药学院","54":"护理与健康学院”,"90":"交换生"。

我的代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int main()
{
int a, b, c, d;
printf("输入学号:");
scanf("%d", &a);
b = a % 100;
c = a / 100000000;
d = (a % 10000) / 100;
printf("%d", c);
printf("%d", d);
printf("%d", b);
return 0;
}

这个学院对应的号码如何匹配?
我的代码运行无法得到学院的信息。
我目前想不出来解决的方法,请求同仁们帮助,非常感谢!

  • 写回答

4条回答 默认 最新

  • qzjhjxj 2022-05-04 16:37
    关注

    供参考:

    #include <stdio.h>
    #include <string.h>
    int main()
    {
        int  len, i;
        char str[16], a[5], b[5], c[5], d[5], e[5];
        char* grade[4] = { "2021","2020","2019","2018" };
        char* code[37] = { "01","02","03","04","05","06","07","08","09","63","10",
                           "11","21","22","23","24","31","32","33","34","35","36",
                           "37","38","39","40","41","45","46","47","48","49","51",
                           "52","53","54","90" };
        char* name[37] = { "机械与动力工程学院","电气工程学院","化工学院","土木工程学院","水利科学与工程学院",
                          "力学与安全工程学院","管理工程学院","材料科学与工程学院","建筑学院","口腔医学院",
                          "地球科学与技术学院","生态与环境学院","数学与统计学院","物理学院","化学学院" ,
                          "信息工程学院","商学院","旅游管理学院","政治与公共管理学院","信息管理学院","法学院",
                          "文学院","外国语与国际关系学院","历史学院","马克思主义学院","新闻与传播学院","教育学院",
                          "书法学院","美术学院","生命科学学院","音乐学院","体育学院(校本部)","基础医学院",
                          "公共卫生学院","药学院","护理与健康学院","交换生" };
        while (1) {
            printf("输入学号:");
            scanf("%s", str);
            getchar();
            if (strcmp(str, "0") == 0)  break;
            len = strlen(str);
            if (len != 12)
                continue;
            else{
                sscanf(str, "%4s%2s%2s%2s%2s", a, b, c, d, e);
                for (i = 0; i < 4; i++)
                    if (strcmp(a, grade[i]) == 0)  break;
                if (i >= 4) { printf("年级不在表中,请重新"); continue; }
                for (i = 0; i < 37; i++) 
                    if (strcmp(b, code[i]) == 0)  break;
                if (i >= 37) { printf("学院代码不匹配,请重新"); continue; }
                printf("%s级, %s, %s班, %s号\n", a, name[i], d, e);
            }
        }
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月12日
  • 已采纳回答 5月4日
  • 创建了问题 5月4日

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境