要求:从键盘输入N个学生的学号、姓名、成绩信息,按优秀(90~100)、良好(80~89)、中等(70~79)、及格(60~69)、不及格(<60)五个等级,设置学生成绩的等级,并统计不及格的人数。
- 首先分析要存放的信息,设计合适的数据结构。
- 按照模块化程序设计思想,把要求的设计学生成绩等级功能做成相应的函数set_grade(),函数返回不及格的人数,调用采用传地址调用方式。
- set_grade()函数采用循环结构,循环利用指针的移动,用多分支结构来设置学生信息中的等级。
- 主函数中先输入学生信息,再调用set_grade()函数设置学生成绩等级,最后输出学生信息和不及格的学生人数。
代码:
#include<stdio.h>
int set_grade(int x);
int main()
{
struct student
{int num;
char name[100];
int score;
}a[100],*p;p=a;
int i,N,c;
printf("请输入学生人数:N=");
scanf("%d",&N);
printf("\n");
printf("请输入学生信息\n");
for(i=0;i<N;i++)
{printf("输入第%d位学生信息\n",i+1);
scanf("%d%s%d",&a[i].num,a[i].name,&a[i].score);
printf("\n");}
for(i=0;i<N;i++,p++){
printf("%d %s %d",p->num,p->name,p->score);
set_grade(a[i].score);
printf("\n");}
printf("不及格人数有%d人",c);
return 0;
}
int set_grade(int x)
{
int b,c=0;
b=x/10;
switch(b)
{
case 10:
case 9:printf("优秀");break;
case 8:printf("良好");break;
case 7:printf("中等");break;
case 6:printf("及格");break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:printf("不及格");break;
}
if(b<6){c=c+1;}return(c);
}
运行结果: