求各位大神用C语言解一下的程序题目
在线等,很急~!!定义一个结构体student,成员包扩姓名,年龄,成绩生成大小为5的student类型的数组,由键盘输出数据,对年龄成绩进行检查,有效的年龄为16-25...
在线等,很急~!!
定义一个结构体student,成员包扩姓名,年龄,成绩生成大小为5的student类型的数组,由键盘输出数据,对年龄成绩进行检查,有效的年龄为16-25,如果非法如30,则年龄设为18岁,有效的成绩为0-100,如果非法如160则成绩为0分,对数组内的五个学生分别检查,然后进行显示输出。 展开
定义一个结构体student,成员包扩姓名,年龄,成绩生成大小为5的student类型的数组,由键盘输出数据,对年龄成绩进行检查,有效的年龄为16-25,如果非法如30,则年龄设为18岁,有效的成绩为0-100,如果非法如160则成绩为0分,对数组内的五个学生分别检查,然后进行显示输出。 展开
1个回答
展开全部
#include<stdio.h>
#define ARRAY_LEN 5 /*学生人数*/
struct student {
char name[20]; /*姓名*/
int age; /*年龄*/
float score; /*成绩*/
};
void inputStuInfo (struct student stu[], int n) { /*录入学生信息*/
int i;
for (i = 0; i < n; i ++) {
printf ("请输入第%d个学生信息:\n",i+1);
printf ("姓名:");
fflush(stdin); /*清除输入缓冲区,防止此前由scanf输入带入的回车被gets读入*/
gets (stu[i].name);
printf ("年龄:");
scanf ("%d",&stu[i].age);
printf ("成绩:");
scanf ("%f",&stu[i].score);
printf ("\n");
}
printf ("%d个的学生信息均已输入完毕!\n",n);
printf ("\n");
printf ("======================================================\n\n");
}
void checkStuInfo (struct student stu[], int n) { /*校验学生信息*/
int i,error;
for (i = 0, error=0; i < n; i ++) {
if (stu[i].age<16||stu[i].age>25) {
error=1;
printf ("%s的年龄错误!已强制修改为18。\n",stu[i].name);
stu[i].age = 18;
}
if (stu[i].score<0||stu[i].score>100) {
error=1;
printf ("%s的成绩错误!已强制修改为0。\n",stu[i].name);
stu[i].score = 0;
}
}
if (error==0)
printf ("%d个学生信息均无错误!\n",n);
printf ("\n");
printf ("======================================================\n\n");
}
void printStuInfo (struct student stu[], int n) { /*显示学生信息*/
int i;
printf ("所有学生信息如下:\n");
printf ("姓名\t年龄\t成绩\n");
for (i = 0; i < n; i ++)
printf ("%s\t%d\t%.2f\n",stu[i].name,stu[i].age,stu[i].score);
printf ("\n");
printf ("======================================================\n\n");
}
int main(void) {
struct student stu[ARRAY_LEN]; /*学生结构体数组*/
inputStuInfo (stu, ARRAY_LEN); /*录入学生信息*/
checkStuInfo (stu, ARRAY_LEN); /*校验学生信息*/
printStuInfo (stu, ARRAY_LEN); /*显示学生信息*/
return 0;
}
运行结果
为节约时间,运行结果示意将学生人数改为2,源代码为题主要求的5.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询