7-4 實驗11_2_初識結構陣列 (100分)
有n名學生,每個學生的資訊包括姓名、學號、5門課程的成績,平均成績與總成績。已知學生的姓名、學號與5門課程的成績,你的任務是計算每個學生的平均成績與總成績,並將它們輸出。學生的姓名中只能包含大小寫字母與空格字元,不會超過20個字元;學生的學號是個長度不會超過20的字串,只包含數字字元;課程成績均為0—100的整數。
要求:在本題中,你要設計一個結構來儲存一個學生的資訊。在此結構中,需要有一個字元陣列來儲存姓名;一個字元陣列來儲存學號;一個長度為5的整型陣列來儲存5門課程的成績;一個雙精度浮點型變數儲存平均成績,一個整型變數儲存總成績。然後,你要設計一個結構陣列來儲存n名學生的資訊。
輸入格式:
輸入首先是一個正整數n,代表學生的數量,1<=n<=100;每名學生的資訊按照姓名、學號、5門課程成績的順序輸入,共佔三行。輸入具體格式見樣例。
輸出格式:
姓名佔一行;學號佔一行;5門課程成績中間用空格分開,最後一個成績後是換行符,佔一行;平均與總成績用空格分隔,佔一行,平均成績保留兩位小數;每名同學的資訊後都再輸出一個空行。 注意:每名同學的資訊後都再輸出一個空行。
輸入樣例:
4
xiaowang
0821131699999
87 98 79 90 68
Liu Mengmeng
0821131666666
88 90 93 91 85
Albert Einstein
082113147777775 87 100 66 64
Bill Gates
0821131588888
65 58 77 60 61
輸出樣例:
Name:xiaowang
ID:0821131699999
Score:87 98 79 90 68
average:84.40 total:422Name:Liu Mengmeng
ID:0821131666666
Score:88 90 93 91 85
average:89.40 total:447Name:Albert Einstein
ID:0821131477777
Score:75 87 100 66 64
average:78.40 total:392Name:Bill Gates
ID:0821131588888
Score:65 58 77 60 61
average:64.20 total:321
#include<stdio.h>
struct stu{
char name[21],id[21];
int grade[5];
double ave;
int sum;
};
main(){
int n;
scanf("%d",&n);
getchar();
struct stu s1[n];
int i,j;
for(j=0;j<n;j++){
gets(s1[j].name);
scanf("%s",s1[j].id);
s1[j].sum=0;
for(i=0;i<5;i++){
scanf("%d",&s1[j].grade[i]);
s1[j].sum+=s1[j].grade[i];
}
s1[j].ave=s1[j].sum/5.0;//輸入資料並計算總成績與平均成績
getchar();
}
for(j=0;j<n;j++){
printf("Name:%s\n",s1[j].name);
printf("ID:%s\n",s1[j].id);
printf("Score:");
for(i=0;i<5;i++){
printf("%d",s1[j].grade[i]);
if(i<4){
printf(" ");
}else{
printf("\n");
}
}
printf("average:%.2f total:%d\n",s1[j].ave,s1[j].sum);
printf("\n");
}
}