中 国 地 质 大 学
课程名称 计算机高级语言课程设计(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.51hei.com/bbs/) | Powered by Discuz! X3.1 |