永发信息网

有一道C语言程序设计题(需要用循环、数组、函数和结构体做。千万不要涉及到C++)。

答案:1  悬赏:10  手机版
解决时间 2021-05-06 05:23
有10个学生,每个学生的数据包括学号、姓名、三门课的成绩、总成绩和平均成绩,从键盘输入10个学生的数据(包括学号、姓名及3门课的成绩),要求打印出每位学生的学号、姓名、三门课的成绩、总成绩和平均成绩,最后在打印出3门课的总平均成绩及最高分的学生的数据(包括姓名和总成绩)。要求:
1,根据学生信息定义一个结构体类型,再说明一个该结构体类型的数组。
2,用input函数从键盘上输入10个学生的数据。
3,用average函数求出每个学生总成绩、平均成绩和所有学生的总平均成绩。
4,用maximum函数找出最高分的学生的数据。
5,再主函数中输出每位学生的学号、姓名、三门课的成绩、总成绩和平均成绩以及总平均分和最高分学生的数据。

输出形式如下:
NO name score1 score2 score3 total average
101 wang 80 79 81 240 80.00
102 li 91 90 89 270 90.00
最佳答案



代码如下:


#include <stdio.h>
#include <stdlib.h>


#define STUDEN_NUM 2


typedef struct Student
{
char No[5];
char Name[17];
int score1;
int score2;
int score3;
float average;
int total;
} _STUDENT;


void input(Student* student)
{
scanf("%s%s%d%d%d", student->No, student->Name, &student->score1, &student->score2, &student->score3);
}


void output(Student* student, int n)
{
int i;
printf("No\tname\tscore1\tsocre2\tscore3\ttotal\taverage\n");
for(i=0; i<n; i++)
{
printf("%s\t%s\t%d\t%d\t%d\t%d\t%.2f\n", student[i].No, student[i].Name, student[i].score1, student[i].score2, student[i].score3, student[i].total, student[i].average);
}
}


void average(Student* student, float* allaverage, int n)
{
int i;
for(i=0; i<n; i++)
{
student[i].total = student[i].score1+student[i].score2+student[i].score3;
student[i].average = float(student[i].total)/3.0f;
*allaverage += student[i].average;
}
*allaverage = *allaverage/n;
}


void maximum(Student* student, int n)
{
int temp = student[0].total;
int order = 0;
int i;
for(i=1; i<n; i++)
{
if(temp < student[i].total)
{
temp = student[i].total;
order = i;
}
}
i = order;
printf("The top student information:\n");
printf("%s\t%s\t%d\t%d\t%d\t%d\t%.2f\n", student[i].No, student[i].Name, student[i].score1, student[i].score2, student[i].score3, student[i].total, student[i].average);
}


void main()
{
Student student[STUDEN_NUM];
int i;
float allaverage = 0.0f;
int toporder = 0;
for(i=0; i<STUDEN_NUM; i++)
{
printf("Please input student%d's No, name and the scores!\n", i+1);
input(&student[i]);
}
average(student, &allaverage, STUDEN_NUM);
output(student, STUDEN_NUM);
maximum(student, STUDEN_NUM);
printf("All the student's average is: %.2f\n", allaverage);
}


谢谢采纳!

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
吴建豪和rain谁更帅?谁更会跳舞?
我的qq宠物怎么没有呀!
40级刺客如何加PK点?
联想4000多的17寸液晶屏电脑有什么型号!那种
阿里扎能做火箭核心吗?
青春期喝什么汤好?
草龟在冬眠前要不要补充什么东西吗??
在家里面无聊,怎么办啊?
如何把鸡腿做的发红?越详细越好…
蓝牙怎么传软件,苹果手机和苹果怎么用蓝牙传
评价下下恋爱的好处和坏处
可以开航母去钓鱼吗?
抢车位排行榜怎么弄不同的QQ秀
保温材料在南方有销路吗
扬州鼎元玉器行地址在哪,我要去那里办事
推荐资讯
阜新市金回报废汽车拆解有限责任公司在什么地
电脑开机后,运行程序很慢。接着就会自动关机
我黄钻到期了想用别的方法再开通,还能继续升
要买家具,应该选实木的好还是高密度板,或所
女人最希望得到什么 现实回答
真的有打折机票吗?是骗人的吗?
什么叫qq非法账号长度
中国重卡豪沃轻卡泉州总代理惠安直营店地址有
求战地之王内测码
那小子真帅是谁写的?
有啥好听的动漫歌曲
现在创业做什么相对好点,请大家给点建意。
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?