统计学生成绩:编写一个C语言程序,统计一个班(最多有35人)的学生成绩 100
(1)由键盘输入每个学生的学好和四门课程的成绩。(2)计算每个学生的平均分和总分。(3)按总分从高到低排出名次,并按名次输出每个学生的情况,包括学好、各科成绩、平均分和总...
(1)由键盘输入每个学生的学好和四门课程的成绩。
(2)计算每个学生的平均分和总分。
(3)按总分从高到低排出名次,并按名次输出每个学生的情况,包括学好、各科成绩、平均分和总分。
具体要求如下:
(1)每个功能为一独立的函数
(2)所有的数日之前都要有提示
(3)在所有函数外部定义描述学生的结构体类型(成员名为id、math、english、chinese、computer).
(4)在所有函数外部定义描述一个整形数组order,长度为35,在这个数组中按名次存放学生的学号。
(5)在所有函数外部定义一个实型数组addsum,长度为35,用于存放每个学生的总成绩。
(6)在所有函数外部定义一个实型数组addaver,长度为35,用于存放每个学生的平均成绩。 展开
(2)计算每个学生的平均分和总分。
(3)按总分从高到低排出名次,并按名次输出每个学生的情况,包括学好、各科成绩、平均分和总分。
具体要求如下:
(1)每个功能为一独立的函数
(2)所有的数日之前都要有提示
(3)在所有函数外部定义描述学生的结构体类型(成员名为id、math、english、chinese、computer).
(4)在所有函数外部定义描述一个整形数组order,长度为35,在这个数组中按名次存放学生的学号。
(5)在所有函数外部定义一个实型数组addsum,长度为35,用于存放每个学生的总成绩。
(6)在所有函数外部定义一个实型数组addaver,长度为35,用于存放每个学生的平均成绩。 展开
3个回答
展开全部
#include <stdio.h>
typedef struct student
{
int id;
double math;
double english;
double chinese;
double computer;
} student;
int order[35];
double addsum[35];
double addaver[35];
student stu[35];
int stu_cnt = 0;
void input()
{
stu_cnt = 0;
while( stu_cnt < 35 )
{
printf( "输入学号(输入0退出输入):" );
scanf( "%d", &stu[stu_cnt].id );
fflush( stdin );
if ( stu[stu_cnt].id <= 0 )
break;
printf( "输入4门成绩(数学 英语 语文 计算机):" );
scanf( "%lf %lf %lf %lf", &stu[stu_cnt].math, &stu[stu_cnt].english,
&stu[stu_cnt].chinese, &stu[stu_cnt].computer );
fflush( stdin );
addsum[stu_cnt] = stu[stu_cnt].math + stu[stu_cnt].english +
stu[stu_cnt].chinese, stu[stu_cnt].computer;
addaver[stu_cnt] = addsum[stu_cnt] / 4.0;
order[stu_cnt] = stu[stu_cnt].id;
stu_cnt++;
}
}
int query( int id )
{
int i = 0;
for( i=0; i<stu_cnt; i++ )
{
if ( stu[i].id == id )
return i;
}
return -1;
}
void gen_order()
{
int i,j;
for( i=0; i<stu_cnt; i++ )
{
for( j=i+1; j<stu_cnt; j++ )
{
if ( addsum[i] - addsum[j] < 0.001 )
{
int temp_id = order[i];
order[i] = order[j];
order[j] = temp_id;
}
}
}
}
void output()
{
int i;
printf( "名次 学号 数学 英语 语文 计算机 总分 平均\n" );
for( i=0; i<stu_cnt; i++ )
{
int j = query( order[i] );
if ( j<0 )
{
printf( "order[%d]= %d error\n", i+1, order[i] );
continue;
}
printf( "%02d %5d %4.2f %4.2f %4.2f %6.2f %4.2f %4.2f\n",
i+1, stu[j].id, stu[j].math, stu[j].english, stu[j].chinese, stu[j].computer,
addsum[j], addaver[j] );
}
}
int main()
{
input();
gen_order();
output();
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询