编写程序:从键盘上任给一个学生的学号,输出该学号相关的信息。(例如: 输入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;
}
河南省某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;
}