1. 程式人生 > 其它 >7-3 實驗11_1_初識結構 (100分)

7-3 實驗11_1_初識結構 (100分)

技術標籤:練習c語言

學生的屬性包括姓名、學號、5門課程的成績、平均成績與總成績。已知一個學生的姓名、學號與5門課程的成績,你的任務是計算該學生的平均成績與總成績,並將該學生的5門課程成績按照從高到底進行排序,最後將這個同學的完整資訊輸出。學生的姓名中只能包含大小寫字母與空格字元,不會超過20個字元;學生的學號是個長度不會超過20的字串,只包含數字字元;課程成績均為0—100的整數。
要求:
1.在本題中,你要設計一個結構來儲存學生的資訊。在此結構中,需要有一個字元陣列來儲存姓名;一個字元陣列來儲存學號;一個長度為5的整型陣列來儲存5門課程的成績;一個雙精度浮點型變數儲存平均成績,一個整型變數儲存總成績。

2.在對結構變數的成員進行賦值與排序的時候,你要使用“結構變數名+‘.’+結構成員名”這種方式訪問變數,如“student.score”;而在輸出學生資訊時,你要用一個結構指標指向該結構,然後用結構指標訪問結構中的變數,即“結構指標名+‘->’+結構成員名”,如“ptr->score”。

輸入格式:
學生資訊的輸入按照姓名、學號、5門課程成績的順序輸入,共佔三行,具體格式見樣例。
輸出格式:
姓名佔一行;學號佔一行;5門成績中間用空格分開,最後一個成績後是換行符,從高到底進行排序,佔一行;平均成績與總成績用空格分隔,佔一行,平均成績保留兩位小數。
輸入樣例:
Liu Mengmeng

0821131666666
88 90 93 91 85
輸出樣例:
Name:Liu Mengmeng
ID:0821131666666
Score:93 91 90 88 85
average:89.40 total:447

#include<stdio.h>
struct stu{
	char name[21],id[21];
	int grade[5];
	double ave;
	int sum;
};
main(){
	struct stu s1;
	int i,j,tmp;
	gets(s1.name);
	scanf("%s",s1.id);
	s1.
sum=0; s1.ave=0; for(i=0;i<5;i++){ scanf("%d",&s1.grade[i]); s1.sum+=s1.grade[i]; } s1.ave=s1.sum/5.0;//輸入資料並計算總成績與平均成績 for(i=0;i<4;i++){ for(j=0;j<4-i;j++){ if(s1.grade[j]<s1.grade[j+1]){ tmp=s1.grade[j]; s1.grade[j]=s1.grade[j+1]; s1.grade[j+1]=tmp; } } } printf("Name:%s\n",s1.name); printf("ID:%s\n",s1.id); printf("Score:"); for(i=0;i<5;i++){ printf("%d",s1.grade[i]); if(i<4){ printf(" "); }else{ printf("\n"); } } printf("average:%.2f total:%d",s1.ave,s1.sum); }