#include<stdio.h>
int a[3],b[3],i,n,sum=0,j,t,cont=1,v,f,jude,G,J;
char ch;
int ReadScore(int n)
{
for(i=0; i<n; i++)
{
scanf("%d%d",&b[i],&a[i]);
sum+=a[i];
}
}
void AverScore(int sum)
{
printf("平均值為%d\n",sum/n);
}
void AscendingScore()
{
for(i=0; i<n; i++)
{
for(j=i+1; j<n; j++)
{
if(a[i]>a[j])
{
t=a[i],a[i]=a[j],a[j]=t;
t=b[i],b[i]=b[j],b[j]=t;
}
}
}
printf("序號 學號 成績\n");
cont=1;
for(i=0; i<n; i++)
printf("%d %d %d\n",cont++,b[i],a[i]);
}
int DecendingScore()
{
for(i=n; i>0; i--)
{
for(j=i-1; j>0; j--)
{
if(a[i]>a[j])
{
t=a[i],a[i]=a[j],a[j]=t;
t=b[i],b[i]=b[j],b[j]=t;
}
}
}
printf("序號 學號 成績\n");
cont=1;
for(i=0; i<3; i++)
printf("%d %d %d\n",cont++,b[i],a[i]);
}
void PrintScore()
{
cont=1;
for(i=0; i<n; i++)
printf("%d %d %d\n",cont++,b[i],a[i]);
}
int FindStudent(int b[])
{
scanf("%d",&f);
for(i=0; i<n; i++)
{
if(b[i]==f)
return i;
}
return -5;
}
int main()
{
printf("----學生成績管理系統----\n");
printf("請輸入學生總數:\n");
scanf("%d",&n);
printf("請輸入所有學生學號和成績:\n");
ReadScore(n);
printf("1.求平均分\n2.對成績進行升序排列\n3.對成績進行降序排列\n4.查看全班序號,學號與成績\n5.查詢學生成績\n6.退出\n請選擇<1-6>:\n");
while(scanf("%d",&v)!=EOF)
{
switch (v)
{
case 1:
AverScore(sum);
break;
case 2:
AscendingScore();
break;
case 3:
DecendingScore();
break;
case 4:
DecendingScore();
break;
case 5:
{
printf("請輸入學生學號:\n"),J=FindStudent(b);
printf("該學生成績為:%d\n",a[J]);
break;
}
break;
default:
printf("沒有該選項\n");
break;
}
printf("---------------\n");
/* printf("是否繼續查詢(y/n):\n");
scanf("%d",&ch);
在這里為啥成了死回圈?如果y的話這個地方如何回圈下去?n的話出口咋寫?*/

}
return 0;
}
/*排序次數超過三次后怎么陣列資料全亂了???怎么解決*/
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/146206.html
標籤:C語言
上一篇:大神們,剛寫了一段關于鏈表的代碼,其中關于“插入結點”部分,為什么無法將新結點插到表頭位置?
下一篇:C語言,兩個有序單鏈表就地合并。
