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