一個班級有50名學生,每名學生選修30門課程。要求:
1.設計演算法,求出該班級每門課程的平均分,最高分和最低分;2.求出每名學生各門課程的合計總分,按照總分由高到低排序。給出求解上述問題演算法的傳統流程圖和相應的C語言程式。
uj5u.com熱心網友回復:
Description輸入10個學生,每個學生的資料包括學號、姓名、3門課的成績。定義結構體型別表示學生型別,輸入10個學生的資料,
計算每個學生的平均成績。按平均成績由高到低輸出所有學生資訊,成績相同時按學號從小到大輸出。
{
輸入格式
10個學生資訊,每行一個學生
輸入樣例
1 aaa 50 60 70
2 bbb 50 50 50
3 ccc 60 70 80
4 ddd 40 40 40
5 eee 70 80 90
6 fff 30 30 30
7 ggg 80 90 100
8 hhh 20 20 20
9 iii 100 100 100
10 jjj 10 10 10
輸出樣例
9 iii 100 100 100
7 ggg 80 90 100
5 eee 70 80 90
3 ccc 60 70 80
1 aaa 50 60 70
2 bbb 50 50 50
4 ddd 40 40 40
6 fff 30 30 30
8 hhh 20 20 20
10 jjj 10 10 10
}
#include <stdio.h>
struct data
{
int num;
char name[100];
float score[3];
float avg, sum;
};
int main()
{
int i,j;
struct data stu[10],tmp;
for(i=0; i<10; i++)
{
printf("請輸入學生的學號:");
scanf("%d", &stu[i].num);
printf("請輸入學生的姓名:");
scanf("%s", stu[i].name);
stu[i].sum = 0;
for(j = 0; j < 3; j++)
{
printf("請輸入學生的第%d門成績:",j+1);
scanf("%f", &stu[i].score[j]);
stu[i].sum += stu[i].score[j];
}
stu[i].avg = stu[i].sum / 3;
printf("該名學生的平均成績為:%.2f", stu[i].avg);
printf("\n\n");
}
for(i=0; i<9; i++)
for(j=0; j<9-i; j++)
{
if (stu[j].avg < stu[j+1].avg)
{
tmp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = tmp;
}
else if (stu[j].avg == stu[j+1].avg)
{
if (stu[j].num > stu[j+1].num)
{
tmp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = tmp;
}
}
}
for(i=0; i<10; i++)
{
printf("%d %s %.0lf %.0lf %.0lf\n", stu[i].num, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2]);
}
return 0;
}
涉及結構體的使用,題目類似,僅供參考
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/90273.html
標籤:C語言
上一篇:C語言,
