班里一个人都不会,谁能救救孩子
1、编写一个函数print,打印一个学生的成绩数组,该数组中有5个学生的数据记录,每个记录包括num,name,score[3],用主函数输入这些记录,用print函数输出这些记录。2、在上题的基础上,编写一个函数input,用来输入5个学生的数据记录。
3、计算全班学生的总成绩、平均成绩和以及 140 分以下的人数。学生包含信息有:姓名、学号、年龄、所在小组、成绩。成绩和具体信息自行设置
程序代码:
#include<stdio.h>
struct student
{
unsigned num; // 题目没交代num是什么类型,那我就假设它是一串正整数
char name[20]; // 题目没交代名字最长是多少,那我就瞎写一个
float score[3];
};
void input( struct student s[], size_t n );
void print( const struct student s[], size_t n );
int main( void )
{
struct student s[5];
const size_t n = sizeof(s)/sizeof(*s);
printf( "请输入%zu位学生的学号,姓名,成绩:\n", n );
input( s, n );
printf( "这%zu位学生的学号,姓名,成绩分别是:\n", n );
print( s, n );
}
void input( struct student s[], size_t n )
{
for( size_t i=0; i!=n; ++i )
{
scanf( "%u%19s", &s[i].num, s[i].name );
for( size_t j=0; j!=sizeof(s[i].score)/sizeof(s[i].score[0]); ++j )
scanf( "%f", &s[i].score[j] );
}
}
void print( const struct student s[], size_t n )
{
for( size_t i=0; i!=n; ++i )
{
printf( "%u %s", s[i].num, s[i].name );
for( size_t j=0; j!=sizeof(s[i].score)/sizeof(s[i].score[0]); ++j )
printf( " %g", s[i].score[j] );
putchar( '\n' );
}
}
程序代码:/*1、编写一个函数print,打印一个学生的成绩数组,
该数组中有5个学生的数据记录,每个记录包括num,name,score[3],
用主函数输入这些记录,用print函数输出这些记录。
2、在上题的基础上,编写一个函数input,用来输入5个学生的数据记录。
3、计算全班学生的总成绩、平均成绩和以及 140 分以下的人数。
学生包含信息有:姓名、学号、年龄、所在小组、成绩。成绩和具体信息自行设置*/
#include<stdio.h>
struct student //定义结构体
{
char name[5];//姓名
int age;//年龄
int group;//小组
int num;//学号
float grade1,grade2,grade3;//成绩
double average;//平均分
double sum;//总分
};
int main()
{
struct student stu[5];
int i,j,cnt=0,grade1=0,grade2=0,grade3=0,age=0,group=0,num=0;
double average=0,sum=0;
for(i=0;i<5;i++)
{
//请输入所有学生的信息,如zhang 1 1 18 60 60 60,输完一个信息后空格直接输入下一个直至输完回车
scanf("%s %d %d %d %f %f %f",stu[i].name,&stu[i].num,&stu[i].group,&stu[i].age,&stu[i].grade1,&stu[i].grade2,&stu[i].grade3);
for(j=0;j<5;j++)
{
stu[j].sum=stu[i].grade1+stu[i].grade2+stu[i].grade3;//总分
stu[j].average=stu[j].sum/3.0;//平均分
if(stu[j].sum<140)
cnt++; //低于140分的人数
//输出 姓名,学号,小组,年龄,成绩1,成绩2,成绩3,总分,平均分
printf("%-6s %2d %2d %2d %6.2f %6.2f %6.2f %6.2f %6.2f \n",stu[i].name,stu[i].num,stu[i].group,stu[i].age,stu[i].grade1,stu[i].grade2,stu[i].grade3,stu[j].sum,stu[j].average);break;
}
}
printf("低于140分的人数是%d",cnt);
printf("\n");
return 0;
}