C语言编写程序 需要具体过程

  1. 其它
    编写程序:从键盘上任给一个郑州大学学生的学号,输出该学号相关的信息。(例如:输入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":"交换生"

提交

就是字符串的拆分和对比,输入字符串的时候根据长度拆分成相应的字段,然后用strcmp进行字符串对比即可。

img

代码如下:

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

}