?? finalwork.c
字號:
Print() //輸出成績
{
printf("\n");
printf("學號 姓名 數學 數據庫概論 英語 C語言程序設計 平均分 \n ");
printf("-----------------------------------------------------------------------------\n");
for(p=stu;p<stu+n;p++)
{
printf(FORMAT,p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3],p->average);
printf("\n\n");
}
printf("\n");
}
void Order3(int i) //按某門課成績排序,i課序號
{
int j,k;
struct student t;
for(j=0;j<=n-2;j++) //冒泡法排序
{
for(k=0;k<=n-2-j;k++)
if(stu[k].score[i]<stu[k+1].score[i])
{
t=stu[k];
stu[k]=stu[k+1];
stu[k+1]=t;
}
}
}
void doChoice2_4() //按某門課成績排序
{
int i;
average(); //調用函數求平均成績
printf("\n請輸入課程代號(數學0, 數據庫概論1, 英語2, C語言程序設計3):");
scanf("%d",&i); //取值
getchar(); //去空格符
if(i<4&&i>=0) //判斷i的范圍
{
Order3(i); //排序
Print(); //輸出
}
else printf("i值不合要求!!!"); //i值不合要求
printf("\n");
}
void doChoice2() //選項2
{
char choice2;
average(); //調用函數求平均成績
do
{
init2(); //輸出菜單
choice2=getch();
if(choice2=='1') doChoice2_1(); //執行命令
else if(choice2=='2')
{
Oder1(); //調用函數,按成績排序
Print(); //輸出
}
else if(choice2=='3')
{
Oder2(); //調用函數,按學號排序
Print(); //輸出
}
else if(choice2=='4') doChoice2_4(); //執行命令4
else if(choice2=='5') return; //返回上一級菜單
else printf("Input error!!!!\n");
}while(1);
}
//////////////////////////////////////////////////////////////////////////////////////////////////
void init3() //菜單
{
printf("\n請選擇操作菜單:\n");
printf("\t①.輸出總平均成績\n");
printf("\t②.輸出每門課程平均成績\n");
printf("\t③.返回!!\n");
}
void doChoice3_1() //輸出總平均成績
{
printf("\n所有學生所有課程的平均成績為:%.3f\n",total_ave);
printf("\n");
}
void doChoice3_2() //輸出各門平均成績
{
printf("\n");
printf("數學平均成績:%.3f\n數據庫概論平均成績:%.3f\n",math_ave,data_ave);
printf("英語平均成績:%.3f\nC語言程序設計平均成績:%.3f\n",eng_ave,c_ave);
printf("\n");
}
void doChoice3() //選項3
{
char choice3;
average(); //求平均成績
do
{
init3();
choice3=getch();
if(choice3=='1') doChoice3_1();
else if(choice3=='2') doChoice3_2();
else if(choice3=='3') return; //返回上一級菜單
else printf("Input error!!!!\n");
}while(1);
}
//////////////////////////////////////////////////////////////////////////////////////////////////
void init4() //菜單
{
printf("\n請選擇操作菜單:\n");
printf("\t①.輸出課程有不及格的學生名單\n");
printf("\t②.輸出指定課程有不及格的學生名單\n");
printf("\t③.輸出有三門或三門以上課程不及格的學生名單\n");
printf("\t④.計算并輸出每門課不及格比例\n");
printf("\t⑤.返回!!\n");
}
void doChoice4_1() //輸出課程有不及格的學生
{
int flag=1,i;
for(p=stu;p<stu+n;p++)
{
for(i=0;i<4;i++)
if(p->score[i]<60) //尋找不及格學生數據
{
printf("%s ",p->name); //輸出不及格學生姓名
flag=0; //flag記號,判斷有無不及格學生
break; //跳向下一學生數據
}
}
if(flag) printf("無人不及格^_^。\n"); //flag=1,無不及格學生
else printf("有不及格課程。\n");
}
pass2(int i) //尋找某課不及格學生
{
int flag=1; //flag記號
for(p=stu;p<stu+n;p++)
if(p->score[i]<60) //判斷score是否小于60
{
printf("%s ",p->name); //輸出學生姓名
flag=0;
}
if(flag) printf("無人不及格^_^。\n"); //flag=1,無人不及格
else printf("不及格\n");
}
void doChoice4_2() //輸出指定課程有不及格的學生名單
{
int i;
printf("\n請輸入課程代號(數學0, 數據庫概論1, 英語2, C語言程序設計3):"); //輸出
scanf("%d",&i); //取值
getchar(); //區空格符
if(i<4&&i>=0) pass2(i); //調用函數,
else printf("i值不合要求!!!"); //i值不合要求
printf("\n");
}
void doChoice4_3() //輸出有三門或三門以上課程不及格的學生名單
{
int i,flag,flag1=1; //flag,flag1作記號
for(p=stu;p<stu+n;p++)
{
flag=0; //flag不及格課數
for(i=0;i<4;i++)
if(p->score[i]<60)
flag++;
if(flag>=3)
{
printf("\t%s有%d門課程不及格\n",p->name,flag);
flag1=0; //flag1,判斷有無學生三門或三門以上不及格
}
}
if(flag1) printf("無人有三門或三門以上課程不及格^_^!\n"); //flag1=1
printf("\n");
}
void doChoice4_4() //輸出每門課不及格比例
{
int fail[4]={0,0,0,0},i; //fail數組記錄各科不及格人數
for(i=0;i<4;i++) //for循環計算各科不及格人數
for(p=stu;p<stu+n;p++)
if(p->score[i]<60)
fail[i]++;
printf("\n"); //輸出
printf("課程 不及格人數 總人數 \n");
printf("**********************************************************\n");
printf("數學 %d %d \n",fail[0],n);
printf("數據庫概論 %d %d \n",fail[1],n);
printf("英語 %d %d \n",fail[2],n);
printf("C語言程序設計 %d %d \n",fail[3],n);
printf("\n");
}
void doChoice4() //選項4
{
char choice4;
do
{
init4(); //輸出菜單
choice4=getch();
if(choice4=='1') doChoice4_1(); //執行命令
else if(choice4=='2') doChoice4_2();
else if(choice4=='3') doChoice4_3();
else if(choice4=='4') doChoice4_4();
else if(choice4=='5') return; //返回上一級菜單
else printf("Input error!!!!\n");
}while(1);
printf("\n");
}
////////////////////////////////////////////////////////////////////////////////////////////////
void init5() //菜單
{
printf("\n請選擇操作菜單:\n");
printf("\t①.輸出每門課成績最好和最差的學生\n");
printf("\t②.總成績分段查詢(如總成績在300~400)\n");
printf("\t③.各門成績分段查詢(如各門成績均在80~90)\n");
printf("\t④.返回\n");
}
void doChoice5_1()
{
Oder1();
printf("\n 成績最好的學生 成績最差學生\n" );
Order3(0); //調用函數,輸出數學成績最好學生
printf("數學 %s %s\n",stu[0].name,stu[n-1].name);
Order3(1); //調用函數,輸出數據庫概論成績最好學生
printf("數據庫概論 %s %s\n",stu[0].name,stu[n-1].name);
Order3(2); //調用函數,輸出英語成績最好學生
printf("英語 %s %s\n",stu[0].name,stu[n-1].name);
Order3(3); //調用函數,輸出c語言成績最好學生
printf("C語言程序設計 %s %s\n",stu[0].name,stu[n-1].name);
printf("\n\n");
}
void doChoice5_2() //總成績分段查詢
{
int flag=0;
float M,m; //M上限,m下限
printf("請輸入上限:");
scanf("%f",&M);
printf("\n請輸入下限:");
scanf("%f",&m);
getchar(); //去空格符
average(); //調用函數求平均成績
if(M<m) //判斷M是否大于m
{
printf("上限小于下限,輸入有誤!!!\n");
return; //返回上一級菜單
}
for(p=stu;p<stu+n;p++) //m<=M,尋找處在該分數段的學生
if(p->average>(m/4)&&p->average<(M/4))
{
printf("%s ",p->name);
flag=1;
}
if(flag) printf("總分處在該分數段之間。"); //flag=1
else printf("沒有總分處在該分數段之間的學生。"); //沒符合要求的學生
printf("\n");
}
void doChoice5_3() //各門成績分段查詢
{
int flag=1,flag1=1,i;
float M,m; //M上限,m下限
printf("請輸入上限:");
scanf("%f",&M);
printf("\n請輸入下限:");
scanf("%f",&m);
getchar(); //去空格符
if(M<m) //判斷M是否大于m
{
printf("上限小于下限,輸入有誤!!!\n");
return;
}
for(p=stu;p<stu+n;p++) //m<=M,尋找處在該分數段的學生
{ flag1=1; //flag記號,判斷各科成績是否均處在該分數段
{
for(i=0;i<4;i++)
if(p->score[i]<m||p->score[i]>M) flag1=0;
}
if(flag1) printf("%s ",p->name); //flag1=1
flag=0; //flag記號,判斷是否存在符合條件的學生
}
if(flag) printf("沒有符合條件的學生!"); //flag=1,
else printf("所有課程成績都處在該分數段之間。");
printf("\n");
}
void doChoice5() //選項5
{
char choice5;
average();
do
{
init5();
choice5=getch();
if(choice5=='1') doChoice5_1();
else if(choice5=='2') doChoice5_2();
else if(choice5=='3') doChoice5_3();
else if(choice5=='4') return;
else printf("Input error!!!!\n");
}while(1);
printf("\n");
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -