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

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

供参考:

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

img

河南省某211的作业?要自己写哦~

我的又一次尝试,还是处理不了学院号不对就重新输入那一块
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int main()
{
int long long a, b, c, d,e;
int m[70] = { 1,2,3,4,5,6,7,8,9,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,63,90 };
printf("enter numder:");
scanf("%lld", &a);

c = a / 100000000;//年级
 
e = (a / 1000000) % 100;//学院
d = (a % 10000) / 100;//班
b = a % 100;//班内号
while (1) {
    if ((a <= 202190909999) && (a >= 201801010101) )
    {
        printf("%lld,", c);
        if (e == 1)
            printf("XX学院");
        else
            if (e == 2)
                printf("");
            else
                if (e == 3)
                    printf("");
                else
                    if (e == 4)
                        printf("");
                    else
                        if (e == 5)
                            printf("");
                        else
                            if (e == 6) {
                                printf("");
                            }
                            else

//省略其他的e的情况,太多了,没码字。
;

        printf("%lld,", d);
        printf("%lld\n", b);
    }
    else if (a == 0) break;
    else
        ;
        scanf("%lld", &a);
        
}
return 0;

}