//應用二維數組,實現簡單的學生成績查詢系統的設計。具體要求如下:
//(1)根據用戶輸入的學號,能夠給出該生各科成績及平均分。
//(2)根據用戶輸入的課程代號,能夠給出該課程中每位學生的成績及課程平均分。
//(3)能夠查詢出某個學生某壹門的考試成績。
//程序分析:學生成績用二維數組存儲,各行代表各位學生的信息,各列代表學生學號和各門課程代號的信息。
//程序依次有5項功能:學生信息的輸入;輸入學號,輸出該生各科成績及平均分;輸入課程代號,
//輸出該課程每位學生成績及課程平均分;輸入學生學號及課程代號,
//輸出成績;設計功能選擇菜單及利用switch —case語句實現以上功能。程序如下:
#include "stdio.h"
#define N n /*定義符號常量N等於n*/
#define M 4 /*定義符號常量M等於5*/
main()
{ int select,n,s1,s2,s3,s4;
int i,j,num;
float score[N][M],aver,a[N],b[N],c[N],d[N];
while (1) /*菜單循環顯示和功能循環處理*/
{ printf("\n 歡迎使用學生查詢系統!\n\n");/*菜單顯示*/
printf("* * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf("* 請選擇查詢對象: *\n");
printf("* 1.據學生學號查詢學生成績及平均成績 *\n");
printf("* 2.據課程代號查詢學生課程成績,平均成績和分檔統計 *\n");
printf("* 3.據學生學號和課程代號查詢學生成績 *\n");
printf("* 4.學生原始數據的依次輸入 *\n");
printf("* 5.謝謝使用,退出本系統! *\n");
INPUT:
printf("* * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf(" 請選擇功能號1—5: ");
scanf("%d",&select);
s1=0;s2=0;s3=0;s4=0;
if(select==5) /*退出系統*/
break;
if(select>=6||select<=0) /*輸入功能號有誤處理*/
{ printf("* * * 輸入有誤,請重新功能號1-5:* * *\n");
goto INPUT;
}
aver=0;
switch(select)
{ case 1: /*按學號查詢功能*/
printf("請輸入查詢學生的學號\n");
scanf("%d",&num);
for(i=0;i<N;i++)
if(num==score[i][0])
for(j=1;j<M;j++)
{ printf("%d號課程成績是%f\n",j,score[i][j]);
aver+=score[i][j];
}
printf("%d號學生的平均成績為%f\n",num,aver/(M-1));
break;
case 2: /*按課程查詢功能*/
printf("請輸入查詢課程的代號(1-%d):\n",M-1);
scanf("%d",&j);
for(i=0;i<N;i++)
{aver+=score[i][j];
}
printf("\n%d號課程的平均成績為%f\n",j,aver/N);
for(i=0;i<N;i++)
{ printf("%d號學生的成績為%f",i+1,score[i][j]);
if(score[i][j]>=85)
{printf("優秀檔\n" );
s1++; }
else if(score[i][j]>=75)
{printf("良好檔\n" );s2++; }
else if(score[i][j]>=60)
{printf("及格檔\n" ); s3++; }
else
{printf("不及格檔\n" ); s4++;
}
}
printf("\n優秀檔人數%d,良好檔人數%d,及格檔人數%d,不及格檔人數%d\n",s1,s2,s3,s4);
for(i=0;i<N;i++)
{
if(score[i][j]>=85)
{a[i]=0;a[i]=score[i][j];
printf("優秀檔%5.0f\n",a[i]);
}}
for(i=0;i<N;i++)
{
if(score[i][j]>=75&&score[i][j]<85)
{
b[i]=0;b[i]=score[i][j]; printf("良好檔%5.0f\n",b[i]);
} }
for(i=0;i<N;i++)
{
if(score[i][j]>=60&&score[i][j]<75)
{c[i]=0;c[i]=score[i][j]; printf("及格檔%5.0f\n",c[i]);
}}
for(i=0;i<N;i++)
{ if(score[i][j]<60)
{d[i]=0;d[i]=score[i][j]; printf("不及格檔%5.0f\n",d[i]);
}}
break;
case 3: /*按學號和課程查詢功能*/
printf("請輸入查詢的學生學號和課程代號:\n");
scanf("%d%d",&num,&j);
for(i=0;i<N;i++)
if(num==score[i][0])
printf("%d號學生%d號課程成績為%f\n",num,j,score[i][j]);
break;
case 4: /*輸入學生原始數據*/
printf("請輸入學生數量:");
scanf("%d",&n);
printf("請依次輸入%d個學生的%d門成績(學號、各門成績)\n",N,M-1);
for(i=0;i<N;i++)
for(j=0;j<M;j++)
scanf("%f",&score[i][j]);
break;
default:break; } } }
妳自己再看看,加減功能。運行界面如下