問:寫壹個程序,完成壹個班學生考試成績的統計管理,包括成績輸入功能和成績顯示功能,計算每個學生的總分和平均分,並對成績進行排序和輸出。
代碼:
/*寫壹個程序,完成壹個班學生考試成績的統計管理,包括成績輸入功能和成績顯示功能。
並計算每個學生的總分和平均分,將結果進行排名並輸出。*/
# include & ltstdio.h & gt/*標準輸入輸出函數庫*/
# include & ltstring.h & gt/*字符串處理函數庫*/
# include & ltstdlib.h & gt/*整數和字符串轉換函數*/
#定義N 10 /*宏定義,將在第7章介紹。設置班級中的學生人數*/
/*學生考試成績統計管理主菜單*/
void main _ mun();
/*輸入學生的成績*/
void輸入();
/*顯示學生的成績*/
void輸出();
/*計算學生的平均成績*/
void平均值();
/*計算學生總分*/
void sum _ score();
/*對學生成績進行排名*/
void sort();
char student[n+1][12]= { "王菲","麗麗","劉宏","張瑋","陳雷","趙丹","羅賓漢","錢慧雲","孫楊","周政","。/*用於記錄學生姓名*/
浮動分數[N][4];/*用於記錄學生各科成績(數學、語文、英語、政治)*/
浮動平均值;/*用於記錄學生的平均成績*/
float sum _ sc[N];/*用於記錄學生的總成績*/
int sor[N];/*用於記錄每個學生的排名*/
int main()
{
int in/*輸入選擇被轉換成整數*/
int i,j;/*程序循環中使用的變量*/
字符選擇[6];/*用於主菜單選擇的字符*/
for(I = 0;我& ltn;I++) /*初始化學生成績*/
for(j = 0;j & lt4;j++)
score[I][j]= 0.00;
Printf("學生考試成績的統計管理\ n ");
main _ mun();
獲取(選擇);
while ((strcmp(select," q))!= 0)& amp;& amp(strcmp(select," Q ")!=0))
{
in=atoi(選擇);/*將輸入字符串轉換為整數*/
如果(在!= 0)
{
開關(輸入)
{
案例1:
{
input();
打破;
}
案例二:
{
output();
打破;
}
案例三:
{
平均值();
打破;
}
案例4:
{
sum _ score();
打破;
}
案例5:
{
sort();
打破;
}
默認值:
Printf("輸入了錯誤的選擇,請重新輸入!\ n ");
}
main _ mun();
}
獲取(選擇);
}
Printf("管理系統結束!!\ n ");
返回0;
}
/*學生考試成績統計管理主菜單*/
void main_mun()
{
Printf("1:輸入學生成績\ n ");
Printf("2:顯示學生成績\ n ");
Printf("3:計算學生的平均成績\ n ");
Printf("4:計算學生總分\ n ");
Printf("5:根據學生成績排名\ n ");
Printf("請輸入您的選擇:(q(Q)退出)\ n ");
}
/*輸入學生的成績*/
無效輸入()
{
浮動sc[4];/*輸入等級的中間變量*/
int數;/*表示學生編號*/
int flag = 0;/*輸入分數是否錯誤的標記*/
int I;/*循環控制變量*/
Printf("輸入學生成績:\ n ");
Printf("輸入學號:\ n ");
scanf("%d ",& amp號);
while((number & lt;0)||(數字& gtn))
{
Printf("輸入了錯誤的學號!!!。\ n ");
返回;
}
Printf("輸入學生%s \n的年級",學生[編號]);
Printf("數學、語文、英語、政治\ n ");
scanf("%f%f%f%f ",& ampsc[0],& ampsc[1]、sc[2],& ampsc[3]);
getchar();
/*判斷分數輸入是否出格*/
for(I = 0;我& lt4;i++)
if((sc[I]& gt;100.00)| |(sc[I]& lt;0.00))
{
flag = 1;
Printf("輸入結果錯誤!!\ n ");
返回;
}
/*分數未超出界限後,賦值*/
for(I = 0;我& lt4;i++)
score[數字][I]= sc[I];
}
/*顯示學生的成績*/
無效輸出()
{
int I;/*循環控制變量*/
for(I = 0;我& ltn;i++)
{
Printf ("Output %s grades: \nMath,語文,英語,政治\n ",student[I]);
printf(" % . 2f % . 2f % . 2f % . \ n \ n ",score[i][0],score[i][1],score[i][2],score[I][3]);
}
}
/*計算學生的平均成績*/
無效平均值()
{
浮點sc = 0.00/*中間變量*/
int i,j;/*循環控制變量*/
for(j = 0;j & ltn;j++)
{
sc = 0.0
for(I = 0;我& lt4;i++)
sc+= score[j][I];
aver[j]= sc/4;
Printf("學生%s的平均成績為:%.2f\n ",student[j],aver[j]);
}
}
/*計算學生總分*/
void sum_score()
{
int i,j;/*循環控制變量*/
Printf("輸出學生總分:\ n ");
for(j = 0;j & ltn;j++)
{
sum _ sc[j]= 0;
for(I = 0;我& lt4;i++)
sum _ sc[j]+= score[j][I];
Printf("學生%s的總成績為:%.2f\n ",student[j],sum _ sc[j]);
}
}
/*對學生成績進行排名,以平均成績為例*/
void排序()
{
int i,j,temp,location/*循環控制變量*/
float max,sc;/*比較的中間變量*/
浮動平均值;
int標誌;/*標誌排序是否交換*/
int sor[N];/*記錄排序的位置*/
for(j = 0;j & ltn;j++)
{
sor[j]= j;
sc = 0.0
for(I = 0;我& lt4;i++)
sc+= score[j][I];
aver[j]= sc/4;
}
for(I = 0;我& ltn;I++) /*對學生的平均分進行排名*/
{
flag = 0;
max = aver[I];
位置= I;
for(j = I+1;j & ltn;j++)
{
if(aver[j]& gt;最大)
{
max = aver[j];
flag = 1;
位置= j;
}
}
if(flag==1)
{
aver[location]= aver[I];
aver[I]= max;
temp = sor[I];
sor[I]= sor[location];
sor[位置]= temp;
}
}
Printf("排序後的結果是:\ n ");
for(I = 0;我& ltn;i++)
{
printf(" the % d student number % d name % s ",(I+1),sor [I],student[sor[I]]);
printf("%f\n ",aver[I]);
}
}