C结构体课表查询程序
【问题描述】定义针对某个学生的课表结构体变量,包括课程名、教室、上课时间(用整型变量12、34、56、78、910代表12节课等即可)。
从键盘输入该同学的课表,上课时间不是前面提到的几个的表示输入结束,并输入要查询的课程,输出该课程的所有信息。
若要查询的课程不存在,也要给出 Not Found 的出错提示。
【输入形式】输入所有课程信息以及要查询的课程。
【输出形式】输出要查询的课程信息或提示未找到。
【样例输入】
ca b210 12
ag c215 12
ca b310 56
xx xxxx 68
ca
【样例输出】
ca b210 12
ca b310 56
【样例输入】
ca b210 12
ag c215 12
ca b310 56
yy yyyy 91
c
【样例输出】
c Not Found
由于集成开发环境得不同,本程序代码与其他可能不同,如无法运行或报错,可修改:
scanf_s("%s %s %d", syllabus[i].course, 12, syllabus[i].classroom, 12, &syllabus[i].time);
scanf_s("%s", lesson, 12);
改为:
scanf_s("%s", lesson);
scanf_s("%s %s %d", syllabus[i].course, syllabus[i].classroom, &syllabus[i].time);
即去掉数字。
该程序还有很多可优化得地方,鉴于本人才疏学浅,故暂能写出该程序。
代码中有很多同义词,都表示课程的意思。
本文为原创,未抄袭他人代码,如有雷同,请联系。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct Timetable //定义课程表的结构体
{
char course[12], classroom[12]; //课程,教室
int time; //上课时间
};
int main()
{
struct Timetable syllabus[12]; //定义一个课程表的结构体变量
int i, n, m;
char lesson[12]; //暂存待查询的课程
for (i = 0, n = 0;; i++, n++)
{
scanf_s("%s %s %d", syllabus[i].course, 12, syllabus[i].classroom, 12, &syllabus[i].time);
m = syllabus[i].time;
if (m != 12 && m != 34 && m != 56 && m != 78 && m != 910)
break;
}
scanf_s("%s", lesson, 12);
m = 0; //重新对m赋值,并在之后判断m是否为0,若为0,则表示找不到该课程
for (i = 0; i < n; i++) //历遍所有课程,若查到则输出
{
if (strcmp(lesson, syllabus[i].course) == 0)
{
printf("%s %s %d \n", syllabus[i].course, syllabus[i].classroom, syllabus[i].time);
m += 1;
}
}
if (m == 0)
printf("%s Not Found \n", lesson);
system("pause");
return 0;
}
下面是运行案例:
望这篇文章对你有帮助,谢谢!