本文最后更新于 873 天前,其中的信息可能已经有所发展或是发生改变。
这是作业题目:编写一个统计学生当日体温的程序,要求:学生端主要负责信息填写包括:1)学生信息包括学号,学院,年级,班级,当日健康状态主要是体温;2)如果体温高于37.3,则给出报警,如果低于则显示正常;教师端:1)对于高于37.3的,教师端能通过沟通确定问题所在,如误填写,可在教师端口予以矫正;2)学生的当日信息可以显示。
同样是个“半成品”,但可以实现上述要求的功能,剩下“一半”就需要大家自行简化优化啦!
使用Visual Studio 2022,在其它环境下需修改或去除部分代码。
//#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
char nunn[100];
float temp[100];
int templist[100];
int b;
int a, i;
int number=1;
int k = 1;
int goon = 0;
int choice = 0;
int km = 0;
struct stu
{
char name[10];
char id[20];
char xueyuan[30];
char clas[20];
//float temp[20];
};
struct stu stu_inf[100];
void choose()
{
while (1)
{
b = 0;
printf("你是教师还是学生?1表示教师,2表示学生\n");
scanf("%d", &b);
if (b == 1)
{
a = 1;
}
else if (b == 2)
{
a = 2;
}
else
{
printf("输入错误,请重新输入!\n");
}
if (a == 1)
{
choice = 1;
printf("欢迎进入教师管理端!\n");
return;
}
else if (a == 2)
{
choice = 2;
printf("欢迎进入学生端!\n");
return;
}
}
/* //下列代码为另一种实现形式,将while循环去除,在开加上start:即可
switch (a)
{
case 1:
choice = 1;
printf("欢迎进入教师管理端!\n");
break;
case 2:
choice = 2;
printf("欢迎进入学生端!\n");
break;
default:
printf("输入错误,请重新输入!\n");
choice = 3;
break;
}
if (choice == 3)
{
goto start;
}
*/
}
void stu_infor()
{
for (i = 0; i < 100; i++)
{
k = k + 1;
printf("请输入你的姓名!\n");
scanf("%s", &stu_inf[i].name);
printf("请输入你所在的学院!\n");
scanf("%s", &stu_inf[i].xueyuan);
printf("请输入你所在的班级!\n");
scanf("%s", &stu_inf[i].clas);
printf("请输入你的学号!(请输入数字)\n");
scanf("%s", &stu_inf[i].id);
printf("请输入你当日测量的体温!(输入一位小数)\n");
scanf("%f", &temp[i]);
if (temp[i] > 37.3)
{
//stu_inf[i].temp = temp;
printf("注意!体温异常!\n");
}
else
{
//stu_inf[i].temp = temp;
printf("体温正常!\n");
}
next:
printf("是否继续录入下一学生信息?1为继续录入,2为结束录入\n");
scanf("%d", &goon);
if (goon == 1)
printf("开始录入下一学生信息!\n");
else if (goon == 2)
{
printf("已结束录入!\n");
return;
}
else if (goon != 1 && goon != 2)
{
printf("输入错误,请重新输入!\n");
goto next;
}
}
}
void teacher()
{
float temps;
printf("按下回车以查看已登记的学生信息!");
getchar();
printf("\n");
printf("学号 | 姓名 | 学院 | 班级 | 当日体温\n");
for (i = 0; i < k-1; i++)
{
printf("%-15s", stu_inf[i].id);
printf("%-15s", stu_inf[i].name);
printf("%-15s", stu_inf[i].xueyuan);
printf("%-15s", stu_inf[i].clas);
temps = temp[i];
printf("%-15.1f", temp[i]);
printf("-");
if (temps > 37.3)
{
printf("异常!");
}
printf("\n");
}
}
void teacher_s()
{
char listtrue[2];
printf("输入y并按下回车列出体温异常的学生名单\n");
scanf("%s", &listtrue);
if (listtrue[0] == 'y')
{
for (i = 0; i < k; i++)
{
if (temp[i] > 37.3)
{
km++;
printf("序号:%d,学号为%s的学生体温异常,为%.1f℃\n", km,stu_inf[i].id, temp[i]);
templist[km] = i;
}
}
return;
}
}
void teacher_ask()
{
int kn = 0;
int gn;
int stu_change;
float changer;
printf("是否与体温异常的学生沟通?(若需要请输入1并回车)\n");
scanf("%d", &kn);
if (kn == 1)
{
asked:
printf("请输入体温异常的学生序号\n");
scanf("%d", &stu_change);
printf("序号为%d的学生体温为%.1f℃", stu_change,temp[templist[stu_change]]);
setbuf(stdin, NULL);
printf("请输入修改后的体温:\n");
scanf("%f",&changer);
temp[templist[stu_change]] = changer;
printf("修改完成,是否继续修改?(输入1继续,输入2结束)\n");
scanf("%d", &gn);
if (gn == 1)
{
goto asked;
}
else
{
return;
}
}
else
{
return;
}
}
int main()
{
choose();
if (choice == 2)
{
stu_infor();
teacher();
teacher_s();
teacher_ask();
teacher();
}
if (choice == 1)
{
teacher();
}
return 0;
}