#include<stdio.h>
#define LEN 3
typedef struct Student //这里用了typedef
{
char xh[12]; //注意假如学号11位,数组长度最少都要12位,因为最后一位留给'\0'结束字符串
char name[10];
int age;
float score[3];
}s;
void Scanf(Student *s); //输入
void Bjg(Student *s); //不及格人输出
void Pai(Student *s); //排序输出
float Jia(Student s); //成绩之和
int main()
{
Student s[LEN];
Scanf(s);
Bjg(s);
Pai(s);
return 0;
}
void Scanf(Student *s)
{
int i,j;
for(i=0;i<LEN;i++)
{
printf("请输入第%d位同学的学号,姓名,年龄和三门课成绩:\n",i+1);
scanf("%s%s%d",s[i].xh,s[i].name ,&s[i].age ); //因为学号和姓名是数组,就是他的地址,年龄需要加取地址符
for(j=0;j<3;j++)
scanf("%f",&s[i].score[j]); //这里虽然是数组,但是是对数组单个元素输入,所以需要加取地址符
}
}
void Bjg(Student *s)
{
int i,j;
printf("不及格学生信息如下:\n");
for(i=0;i<LEN;i++)
{
for(j=0;j<3;j++)
{
if(s[i].score[j]<60)
{
printf("%s,%s,%d:",s[i].xh ,s[i].name,s[i].age );
for(j=0;j<3;j++)
printf("%6.1f",s[i].score[j]);
putchar('\n');
break;
}
}
}
}
void Pai(Student *s)
{
int i,j;
Student temp;
printf("平时成绩从低到高排序为:\n");
for(i=0;i<LEN-1;i++)
{
for(j=0;j<LEN-i-1;j++)
if(Jia(s[j])>Jia(s[j+1]))
{
temp=s[j];
s[j]=s[j+1];
s[j+1]=temp;
}
}
for(i=0;i<LEN;i++)
{
printf("%s,%s,%d:",s[i].xh ,s[i].name,s[i].age );
for(j=0;j<3;j++)
printf("%6.1f",s[i].score[j]);
putchar('\n');
}
}
float Jia(Student s)
{
int i;
float sum=0;
for(i=0;i<3;i++)
sum=sum+s.score[i];
return sum;
}
(四川大学出版社C语言程序设计第二版课后习题)针对十个学生成绩管理,包括学号,姓名,年龄,三门课成绩,统计不及格名单并且显示,平时成绩从低到高排序
最新推荐文章于 2022-12-16 18:39:23 发布