中 國 地 質 大 學
課程名稱 計算機高級語言課程設計(C)
教師姓名 劉 剛
本科生姓名 張 沫
本科生學號 20121002504
本科生專業 地球化學
所在院系 地球科學學院
類別: . 本科生
日期: 2015年1月23日
對課程論文的評語: |
平時成績: | 課程論文成績: |
總 成 績: | 評閱人簽名: |
(1)在歌星大賽中,有十個評委為參賽的選手打分。分數為1-100分。選手最后得分為:去掉一個最高分,去掉一個最低分其余8個分數的平均值。試寫一段程序實現。
(2)同時對評委評分進行判斷,即在10個評委中找出最公平(評分最接近平均分)的和最不公平的(即與平均分的差距最大)的評委。
這個問題的第一個算法要求簡單,但是要注意在程序中判斷最大,最小的變量是如何賦值;第二個要求要考慮效率,要用到排序技術。注意,要用到文件儲存信息。
評分系統需要錄入歌星的信息,輸入10個評委的評分,然后求出相應的平均數,再求出最公平的和最不公平的評委,保存再相應的文件夾中。分為錄入,計算,瀏覽,修改,刪除,查詢模塊。
數據結構體設計:定義結構體變量struct people,進行數據輸入,輸出,保存,修改等功能。
其中定義M=50,指該數據庫最多能放50組數據。N為可變數據組數,即當前數據組數。
printf(" ****************************************\n");
printf(" ****************************************\n");
scanf("%d",&sele); //通過輸入按鍵來判斷執行那個步驟
case 2:display();delete1();break;
case 3:apepend();display();break;
case 4:display();modify();break;
case 6:caculate();display();break;
/*先定義一個結構體struct people,包含每位歌星的評分信息,在用可讀的方式打開文件zhongmo.txt.*/
/*M為最多的明星個數,程序中采用宏定義的方式,可以隨時改變源程序中定義的修改值。本程序中宏定義:#define M 50。*/
while(fscanf(fp,"%s%s%d%d%d",ss[i].name,&ss[i].xuhao,&ss[i].pinjunfen,
ss[i].xuanpingwei[0],ss[i].xuanpingwei[1]
/*本程序為了簡化計算結果,分數采用100進制整數形式,如果需要修改,可以定義為float類型。*/
本程序的目的是為了計算出每位明星的平均分和最佳或者最差評分員。采用冒泡法來計算最小值和最大值,從而判斷平均值。在判斷最好和最差評分員。
{char fenshu[10],zhongjinazhi;
zhonggong=zhonggong+fenshu[i];
zuidazhi=abs(zhonggong-ss[k].pingfen[0])
if(abs(zhonggong-ss[k].pingfen[i])>zuidazhi)
zuixiaozhi=abs(zhonggong-ss[k].pingfen[0]);
if(zuixiaozhi>abs(zhonggong-ss[k].pingfen[i]))
zuixiaozhi=abs(zhonggong-ss[k].pingfen[i]);
scanf("%d",&n); N=N+n; //新增人數疊加,不影響原來的明星
scanf("%s",&ss[N-n-1+i].name);
scanf("%s",&ss[N-n-1+i].xuhao);
scanf("%d",&ss[N-n-1+i].pingfen[j]);
該程序的功能是根據姓名或者序號修改明星的評分,序號,或者姓名。
printf(" *******************************************\n");
printf(" *******************************************\n");
printf("序號 歌星 評委1 2 3 4 5 6 7 8 9 10 平均分最差評委最好評委\n");
printf("%3s%6s%8d%5d%5d%4d%4d%4d%4d%4d%4d%4d%8d%8d%6d\n",ss[j].xuhao,ss[j].name,
ss[j].pingfen[0],ss[j].pingfen[1],ss[j].pingfen[2],ss[j].pingfen[3],
ss[j].pingfen[4],ss[j].pingfen[5],ss[j].pingfen[6],ss[j].pingfen[7],
ss[j].pingfen[8],ss[j].pingfen[9],ss[j].pinjunfen,ss[j].xuanpingwei[0],
printf(" ********************************************************************\n");
printf(" * 1:序號 2:歌星名 3:評分 *\n");
printf(" ********************************************************************\n");
case 1:printf("序號改為:");scanf("%s",&ss[j].xuhao);break;
case 2:printf("姓名改為:");scanf("%s",ss[j].name);break;
scanf("%f",&ss[i].pingfen[i]);
printf(" ******************************************************************\n");
printf(" ******************************************************************\n");
printf("序號 歌星 評委1 2 3 4 5 6 7 8 9 10 平均分最差評委最好評委\n");
{ printf("%3s%6s%8d%5d%5d%4d%4d%4d%4d%4d%4d%4d%8d%8d%6d\n",ss[j]. xuhao,ss[j].name,
ss[j].pingfen[0],ss[j].pingfen[1],ss[j].pingfen[2],ss[j].pingfen[3],
ss[j].pingfen[4],ss[j].pingfen[5],ss[j].pingfen[6],ss[j].pingfen[7],
ss[j].pingfen[8],ss[j].pingfen[9],ss[j].pinjunfen,ss[j].xuanpingwei[0],
printf("序號 歌星 評委1 2 3 4 5 6 7 8 9 10 平均分最差評委最好評委\n");
printf(" ********************************************************************\n");
printf(" ********************************************************************\n");
printf("序號 歌星 評委1 2 3 4 5 6 7 8 9 10 平均分最差 評委最好評委\n");
for(i=0;i<t;i++) printf("%3s%6s%8d%5d%5d%4d%4d%4d%4d%4d%4d%4d%8d%8d%6d\n",ss[i].xuhao,ss[i].name,
ss[i].pingfen[0],ss[i].pingfen[1],ss[i].pingfen[2],ss[i].pingfen[3],
ss[i].pingfen[4],ss[i].pingfen[5],ss[i].pingfen[6],ss[i].pingfen[7],
ss[i].pingfen[8],ss[i].pingfen[9],ss[i].pinjunfen,ss[i].xuanpingwei[0],
5.7計算模塊:計算當前輸入信息,判斷平均分,最好評委,最差評委。
通過對本程序的寫入,運行,調試,我知道如何將分離的模塊函數綜合起來,將C語言課程中學到的理論知識運用到實際中,編寫一個小小的明星評分系統,很有些成就感。
在運行程序中,我有幾次忘了改文件的輸出格式,導致輸出結構體亂碼,文件的寫入方式不對,也導致文件不能打開。明星評分系統寫的函數不對,也導致輸出的結果不對,最后改對了。
感謝學校能給我們這次機會實習,有幸接觸到計算機編程,雖然和專業不大關系,但我們學習到了編程的奧秘和樂趣。
[1] 譚浩強. C程序設計(第三版)[M]. 北京: 清華大學出版社, 2005.
[2] 張冬梅, 劉遠興, 陳晶, 等. 基于PBL的C語言課程設計及學習指導[M]. 北京: 清華大學出版社, 2011.
歡迎光臨 (http://www.raoushi.com/bbs/) | Powered by Discuz! X3.1 |