#includeiostream
創新互聯建站長期為上千家客戶提供的網站建設服務,團隊從業經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯網生態環境。為前郭企業提供專業的網站設計、成都網站設計,前郭網站改版等技術服務。擁有10余年豐富建站經驗和眾多成功案例,為您定制開發。
#includestring
#includeiomanip
#includefstream
using namespace std;
int n; //n個學校
int m; //m個男子項目
int w; //w個女子項目
struct pro //表示項目的結構體
{
string name; //項目名稱
int snum[6]; //前5名學校的編號
}p[21];
struct school //表示學校的結構體
{
int num;
string name; //學校名稱
int score; //學校總分
int male; //男子總分
int female; //女子總分
}sch[21];
int integral[5]={7,5,3,2,1};//前五名得分
void input()
{
int i,j,y,x;
printf("輸入學校數目:");
y=0;
while(1)
{
scanf("%d",n);
if(n=1n=20)y=1;
if(y)break;
else printf("輸入數據有誤,請重新輸入:");
}
for(i=1;i=n;i++)
{
printf("輸入第%d個學校的名稱:",i);
cinsch[i].name;
sch[i].score=0;
sch[i].female=0;
sch[i].male=0;
sch[i].num=i;
}
printf("輸入男子項目數和女子項目數:");
y=0;
while(1)
{
scanf("%d%d",m,w);
if(m=20m=1w=20w=1)y=1;
if(y)break;
else printf("輸入數據有誤,請重新輸入:");
}
for(i=1;i=m+w;i++)
{
printf("輸入第%d個項目的名稱:\n",i);
cinp[i].name;
printf("輸入第%d個項目的前5名的學校編號:\n",i);
for(j=1;j=5;j++)
{
y=0;
while(1)
{
scanf("%d",x);
if(x=1x=20)y=1;
if(y)break;
else printf("輸入數據有誤,請重新輸入:");
}
p[i].snum[j]=x;
sch[x].score+=integral[j-1];
if(i=m)sch[x].male+=integral[j-1];
else sch[x].female+=integral[j-1];
}
}
}
void print(int i)
{
coutsch[i].numsetw(10)sch[i].namesetw(8)sch[i].scoresetw(9)
sch[i].malesetw(10)sch[i].femaleendl;
}
void bianhao() //按編號排序
{
int i,j;
school t;
for(i=1;in;i++)
{
for(j=i;j=n;j++)
if(sch[i].numsch[j].num)
{t=sch[i];sch[i]=sch[j];sch[j]=t;}
}
printf("\n按編號排列:\n");
printf("編號 學校名稱 總分 男子總分 女子總分\n");
for(i=1;i=n;i++)
print(i);
}
void zongfen() //按學??偡峙判?/p>
{
int i,j;
school t;
for(i=1;in;i++)
{
for(j=i;j=n;j++)
if(sch[i].scoresch[j].score)
{t=sch[i];sch[i]=sch[j];sch[j]=t;}
}
printf("\n按學校總分排列:\n");
printf("編號 學校名稱 總分 男子總分 女子總分\n");
for(i=1;i=n;i++)
print(i);
ofstream fout;
fout.open("運動會分數統計.txt");
fout"編號 學校名稱 總分 男子總分 女子總分"endl;
for(i=1;i=n;i++)
{foutsch[i].numsetw(13)sch[i].namesetw(8)sch[i].scoresetw(9)
sch[i].malesetw(10)sch[i].femaleendl; }
fout.close();
}
void malezf() //按學校男總分排序
{
int i,j;
school t;
for(i=1;in;i++)
{
for(j=i;j=n;j++)
if(sch[i].malesch[j].male)
{t=sch[i];sch[i]=sch[j];sch[j]=t;}
}
printf("\n按學校男子總分排列:\n");
printf("編號 學校名稱 總分 男子總分 女子總分\n");
for(i=1;i=n;i++)
print(i);
}
void femalezf() //按學校女總分排序
{
int i,j;
school t;
for(i=1;in;i++)
{
for(j=i;j=n;j++)
if(sch[i].femalesch[j].female)
{t=sch[i];sch[i]=sch[j];sch[j]=t;}
}
printf("\n按學校女子總分排列:\n");
printf("編號 學校名稱 總分 男子總分 女子總分\n");
for(i=1;i=n;i++)
print(i);
coutendl;
}
void cxsch() //查詢學校信息
{
int i,y,s;
printf("輸入需要查詢的學校編號:");
y=0;
while(1)
{
scanf("%d",s);
if(s=1s=n)y=1;
if(y)break;
else printf("輸入數據有誤,請重新輸入:");
}
printf("該學校相關信息:\n");
printf("編號 學校名稱 總分 男子總分 女子總分\n");
for(i=1;i=n;i++)
{
if(sch[i].num==s)
{
print(i);
break;
}
}
coutendl;
}
void cxxm() //查詢項目信息
{
int i,y,s;
printf("輸入需要查詢的項目編號:");
y=0;
while(1)
{
scanf("%d",s);
if(s=1s=n)y=1;
if(y)break;
else printf("輸入數據有誤,請重新輸入:");
}
coutp[s].name"前5名學校編號及名稱為:"endl;
printf("名次 編號 學校名稱\n");
for(i=1;i=5;i++)
cout" "i" "p[s].snum[i]setw(12)sch[ p[s].snum[i] ].nameendl;
coutendl;
}
void solve() //菜單函數
{
int z;
while(1)
{
printf("\n選擇您需要的操作(選擇序號):\n");
printf("1.按學校編號排序輸出\n");
printf("2.按學??偡峙判蜉敵鯸n");
printf("3.按學校男總分排序輸出\n");
printf("4.按學校女總分排序輸出\n");
printf("5.查詢某個學校成績\n");
printf("6.查詢某個項目成績\n");
printf("7.結束\n\n");
scanf("%d",z);
if(z==1)bianhao();
if(z==2)zongfen();
if(z==3)malezf();
if(z==4)femalezf();
if(z==5)cxsch();
if(z==6)cxxm();
if(z==7)break;
}
}
int main() //主函數
{
input();
solve();
return 0;
}
1、寫一個主函數,10個成績放在一個數組里。
2、然后寫一個求平均值的函數,返回平均值,用循環語句求和在求平均值,小學生應該都會求平均值。
3、再寫一個排序算法,先模仿一個冒泡排序算法,最簡單的排序算法。
這樣不就三個函數了嗎?,這個題主要讓你初步掌握,數組,循環語句的使用,函數的調用,函數參數的傳遞,函數值的返回等。學習C就自己多練,多想這樣會進步,代碼就不寫了吧,對你不好。
#include stdlib.h
int cmp(const void *a, const void *b)
{
student *x=(student*)a;
student *y=(student*)b;
if(x-score[0] y-score[0])//升序排序(從小到大) 如果改成,就是降序排序(從大到小)
return 1;
return 0;
}
//上面函數放在struct student下面,需要該結構
//排序方式可以靈活調整,上面我只是用第一門分數進行比較
//你也可以用其它分數進行比較,多寫2個函數就行,如int cmp2(const void*a,const void*b)等等。
//排序函數
qsort(stu,STU_NUM,sizeof(stu[0]),cmp);
//stu是數組名,STU_NUM是數組元素個數,cmp就排序方式(可以替換為cmp2等等)
當前文章:c語言成績排序主要函數 成績排序c語言數據結構
分享路徑:http://m.kartarina.com/article36/dodsjsg.html
成都網站建設公司_創新互聯,為您提供定制網站、企業建站、App設計、自適應網站、虛擬主機、域名注冊
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯