要求:有输入,对输入的学号判断,不是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":"交换生"
提交
就是字符串的拆分和对比,输入字符串的时候根据长度拆分成相应的字段,然后用strcmp进行字符串对比即可。
代码如下:
#include <stdio.h>
#include <string.h>
int main()
{
char buf[30]; //输入缓存
char grade[5]; //级
char partment[3]; //学院代码
char cla[3]; //班级
char id[3]; //号
int index = 0;
char yuan[][4] = { "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[][50] = { "机械与动力工程学院","电气工程学院","化工学院","土木工程学院","水利科学与工程学院",
"力学与安全工程学院", "管理工程学院","材料科学与工程学院","建筑学院","口腔医学院","地球科学与技术学院",
"生态与环境学院","数学与统计学院", "物理学院","化学学院","信息工程学院","商学院","旅游管理学院",
"政治与公共管理学院","信息管理学院", "法学院","文学院", "外国语与国际关系学院", "历史学院","马克思主义学院",
"新闻与传播学院", "教育学院", "书法学院", "美术学院", "生命科学学院", "音乐学院", "体育学院(校本部)","基础医学院",
"公共卫生学院","药学院", "护理与健康学院", "交换生" };
int len = 37; //共37个
int i, j;
while (1)
{
printf("请输入:");
scanf("%s", buf); //读取数据
if (strcmp(buf, "0") == 0)
break;
i = 0; j = 0;
//判断是否是12位数字字符
while (buf[i])
{
if (buf[i] < '0' || buf[i] > '9')
break;
else
i++;
}
if (i != 12)
{
printf("输入非12位数字字符,");
continue;
}
//级
for (i = 0; i < 4; i++)
grade[i] = buf[i];
grade[4] = 0;
//院
partment[0] = buf[4];
partment[1] = buf[5];
partment[2] = 0;
//班级
cla[0] = buf[8];
cla[1] = buf[9];
cla[2] = 0;
//号
id[0] = buf[10];
id[1] = buf[11];
id[2] = 0;
//判断年级别
if (strcmp(grade, "2018") == 0 || strcmp(grade, "2019") == 0 || strcmp(grade, "2020") == 0 || strcmp(grade, "2021") == 0)
{
//获取院校
for (i = 0; i < len; i++)
{
if (strcmp(partment, yuan[i]) == 0)
break;
}
if (i == len)
{
printf("院输入错误,");
}
else
{
printf("%s级,%s,%s班,%s号\n", grade,name[i],cla,id);
}
}
else
printf("输入年级错误,");
}
return 0;
}