C語言實現(xiàn)歌手比賽系統(tǒng)
更新時間:2022年05月30日 11:10:35 作者:普通學長
這篇文章主要為大家詳細介紹了C語言實現(xiàn)歌手比賽系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了C語言實現(xiàn)歌手比賽系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
一、項目簡介
對一次歌手比賽的成績進行管理
輸入每個選手的數(shù)據(jù)包括編號、姓名、十個評委的成績,根據(jù)輸入計算出總成績和平均成績(去掉最高分,去掉最低分)。
二、任務概述
要求歌手比賽系統(tǒng)實現(xiàn)對學生基本信息(如編號、姓名、性別等)及十個評委的成績的管理(增加、刪除、修改或更新、查詢、統(tǒng)計、保存到文件、從文件裝載等操作)。
三、功能展示
四、思維導圖
五、程序源碼
#include<stdio.h> #include<stdlib.h> struct singer/*定義結(jié)構體*/? { ?? ?int num; ?? ?char name[10]; ?? ?float score[20]; ?? ?float aver; ?? ?float sum; ?? ?int ord; }singer[100];? void singer_information(int b) ?/*輸入選手信息*/? { ?? ?int i; ?? ?for(i=1;i<=b;i++) ?? ?{ ?? ??? ?printf("請輸入選手編號:"); ?? ??? ?scanf("%d",&singer[i].num); ?? ??? ?printf("請輸入選手姓名:"); ?? ??? ?scanf("%s",&singer[i].name); ?? ?}? } int singer_score(int b) ? ? { ?? ?int j,c; ?? ?float a[50]; ?? ?for(j=1;j<=b;j++) ?? ??? ??? ?{ ?? ??? ??? ??? ?printf("\n請輸入評委1對歌手%d的打分",j); ?? ??? ??? ??? ?scanf("%f",&singer[j].score[1]); ?? ??? ??? ??? ?printf("請輸入評委2對歌手%d的打分",j); ?? ??? ??? ??? ?scanf("%f",&singer[j].score[2]); ?? ??? ??? ??? ?printf("請輸入評委3對歌手%d的打分",j); ?? ??? ??? ??? ?scanf("%f",&singer[j].score[3]); ?? ??? ??? ??? ?printf("請輸入評委4對歌手%d的打分",j); ?? ??? ??? ??? ?scanf("%f",&singer[j].score[4]); ?? ??? ??? ??? ?printf("請輸入評委5對歌手%d的打分",j); ?? ??? ??? ??? ?scanf("%f",&singer[j].score[5]); ?? ??? ??? ??? ?printf("請輸入評委6對歌手%d的打分",j); ?? ??? ??? ??? ?scanf("%f",&singer[j].score[6]); ?? ??? ??? ??? ?printf("請輸入評委7對歌手%d的打分",j); ?? ??? ??? ??? ?scanf("%f",&singer[j].score[7]); ?? ??? ??? ??? ?printf("請輸入評委8對歌手%d的打分",j); ?? ??? ??? ??? ?scanf("%f",&singer[j].score[8]); ?? ??? ??? ??? ?printf("請輸入評委9對歌手%d的打分",j); ?? ??? ??? ??? ?scanf("%f",&singer[j].score[9]); ?? ??? ??? ??? ?printf("請輸入評委10對歌手%d的打分",j); ?? ??? ??? ??? ?scanf("%f",&singer[j].score[10]); ?? ??? ??? ??? ?a[j]=singer[j].score[1]+singer[j].score[2]+singer[j].score[3]+singer[j].score[4]+singer[j].score[5]+singer[j].score[6]+singer[j].score[7]+singer[j].score[8]+singer[j].score[9]+singer[j].score[10]; ?? ??? ??? ??? ?singer[j].sum=a[j]; ?? ??? ??? ?} ?? ??? ??? ??? ? } int singer_grade(int b)/* 歌手總成績 */ { ?? ?int a,c; ?? ?float n[50],max,min; ?? ?for(a=1;a<=b;a++) ?? ?{ ?? ??? ?max=singer[a].score[1]; ?? ??? ?min=singer[a].score[1]; ?? ??? ?for(c=1;c<=10;c++) ?? ??? ??? ?{ ?? ??? ??? ??? ?if(max<singer[a].score[c]) ? max=singer[a].score[c]; ?? ??? ??? ??? ?if(min>singer[a].score[c]) ? min=singer[a].score[c]; ?? ??? ??? ?} ?? ??? ?n[a]=(singer[a].sum-max-min)/8.0; ?? ??? ?singer[a].aver=n[a];?? ??? ? ?? ?}?? ??? ? } int order(int b)/*成績排序*/? { ?? ?int j,t,i; ?? ??? ?for(i=1;i<=b;i++) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ?for(j=1,t=1;j<=b;j++) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ?if(singer[i].aver<singer[j].aver) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ?t=t+1; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?} ?? ??? ??? ??? ?singer[i].ord=t; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?for(i=1;i<=b;i++) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?for(j=1;j<=b;j++) ?? ??? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ??? ?if(i==singer[j].ord) ?? ??? ??? ??? ??? ??? ??? ?printf("%s是第%d ? ? 得分為%15.2f\n",singer[j].name,i,singer[j].aver); ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?printf("\n\n\n"); ?? ??? ??? ??? ?} ?? ??? ??? ? } int search(int c)/*數(shù)據(jù)查詢*/? { ?? ?printf("所查選手的數(shù)據(jù):編號%d ? ?姓名%s ? 平均成績%f ? 總成績%f\n",singer[c].num,singer[c].name,singer[c].aver,singer[c].score[c]);?? ? }? ? ? ?int addition(int i)/*數(shù)據(jù)追加*/ ?{ ?? ? printf("請輸入選手編號及姓名:"); ?? ?scanf("%d,%s/n",&singer[i+1].num,&singer[i+1].name); ?? ? ?? ?printf("請輸入評委1對歌手%d的打分",i+1); ?? ?scanf("%d",&singer[i+1].score[1]); ?? ?printf("請輸入評委2對歌手%d的打分",i+1); ?? ?scanf("%d",&singer[i+1].score[2]); ?? ?printf("請輸入評委3對歌手%d的打分",i+1); ?? ?scanf("%d",&singer[i+1].score[3]); ?? ?printf("請輸入評委4對歌手%d的打分",i+1); ?? ?scanf("%d",&singer[i+1].score[4]); ?? ?printf("請輸入評委5對歌手%d的打分",i+1); ?? ?scanf("%d",&singer[i+1].score[5]); ?? ?printf("請輸入評委6對歌手%d的打分",i+1); ?? ?scanf("%d",&singer[i+1].score[6]); ?? ?printf("請輸入評委7對歌手%d的打分",i+1); ?? ?scanf("%d",&singer[i+1].score[7]); ?? ?printf("請輸入評委8對歌手%d的打分",i+1); ?? ?scanf("%d",&singer[i+1].score[8]); ?? ?printf("請輸入評委9對歌手%d的打分",i+1); ?? ?scanf("%d",&singer[i+1].score[9]); ?? ?printf("請輸入評委10對歌手%d的打分",i+1); ?? ?scanf("%d",&singer[i+1].score[10]); ?} main() { ?? ?int a,b,c,i,n=1; ?? ?FILE *fp; ?? ?fp = fopen("歌手.txt","wt+"); ?? ? ?? ? printf(" ? ? 歌手比賽系統(tǒng) ? \n"); ?? ? printf("*********************\n"); ? ? ?printf("* 1)輸入選手數(shù)據(jù) ? *\n");? ? ? ?printf("* 2)評委打分 ? ? ? *\n"); ? ? ?printf("* 3)成績排序 ? ? ? *\n"); ? ? ?printf("* 4)數(shù)據(jù)查詢 ? ? ? *\n"); ? ? ?printf("* 5)追加學生數(shù)據(jù) ? *\n"); ? ? ?printf("* 6)寫入數(shù)據(jù)文件 ? *\n"); ? ? ? ? ? ?printf("* 7)退出系統(tǒng) ? ? ? *\n"); ? ? ?printf("*********************\n"); ?? ?while(n) ?? ?{ ?? ?printf("你想進行的操作: "); ?? ?scanf("%d",&a); ?? ?printf("\n\n"); ?? ?switch(a) ?? ?{ ?? ??? ?case 1:? ?? ??? ??? ??? ?printf("你想進行的操作:輸入選手數(shù)據(jù)\n ");? ?? ??? ??? ??? ?printf("請輸入選手個數(shù)"); ?? ??? ??? ??? ?scanf("%d",&b); ?? ??? ??? ??? ?singer_information(b); ?? ??? ??? ??? ?printf("----------------------\n"); ?? ??? ??? ? ?? ??? ?break; ?? ??? ?case 2:? ?? ??? ??? ??? ?printf("你想進行的操作:評委打分\n "); ?? ??? ??? ??? ?singer_score(b); ?? ??? ??? ??? ?printf("-----------------------\n"); ?? ??? ??? ??? ? ?? ??? ? break; ?? ??? ?case 3: ? ?? ??? ??? ??? ?printf("你想進行的操作:成績排序(按平均分)\n "); ?? ??? ??? ??? ?singer_grade(b); ?? ??? ??? ??? ?order(b); ?? ??? ??? ??? ?printf("-------------------------\n"); ?? ??? ??? ??? ? ?? ??? ? ?break; ?? ??? ?case 4: ?? ??? ??? ??? ?printf("你想進行的操作:數(shù)據(jù)查詢\n "); ?? ??? ??? ??? ? printf("請輸入要查詢選手編號:");? ?? ??? ? ?? ??? ?scanf("%d",&c); ?? ??? ? ?? ??? ?printf("所查選手的數(shù)據(jù):編號%d ? ?姓名%s ? 平均成績%f ? 總成績%f\n",singer[c].num,singer[c].name,singer[c].aver,singer[c].sum); ?? ? ?? ??? ??? ? ?? ??? ??? ??? ?printf("--------------------------\n"); ?? ??? ? ?break; ?? ??? ?case 5: ?? ??? ??? ??? ?printf("你想進行的操作:追加學生數(shù)據(jù)\n "); ? ?? ??? ??? ? ? addition(b); ?? ??? ??? ? ? ?? ?printf("---------------------------\n"); ?? ??? ??? ??? ? ?? ??? ? ?break; ?? ??? ?case 6:? ?? ??? ??? ??? ?printf("你想進行的操作:寫入數(shù)據(jù)文件\n "); ?? ??? ??? ??? ?printf("將數(shù)據(jù)寫入文件中:\n"); ? ? ? ? ?? ??? ?for (i = 0 ; i <=b ; i++) ? ? ? ? ?? ??? ?{ ? ? ? ? ? ? ?? ??? ?fprintf(fp,"%d ",singer[i].num); ? ? ? ? ? ? ?? ??? ?fprintf(fp,"%s ",singer[i].name); ? ? ? ? ? ? ?? ??? ?fprintf(fp,"%d\n",singer[i].aver); ? ? ? ??? ??? ??? ? } ?? ??? ? break; ?? ??? ?case 7: exit(0); ?? ??? ?default :printf("輸入錯誤請重新輸入!\n"); ?? ?} ?? ?} }
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
C++ Boost Serialization庫超詳細獎金額
Boost是為C++語言標準庫提供擴展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標準庫的后備,是C++標準化進程的開發(fā)引擎之一,是為C++語言標準庫提供擴展的一些C++程序庫的總稱2022-12-12C語言實現(xiàn)大數(shù)值金額大寫轉(zhuǎn)換的方法詳解
這篇文章主要為大家詳細介紹了如何利用C語言實現(xiàn)大數(shù)值金額大寫轉(zhuǎn)換的功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下2023-03-03