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

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日

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分