C语言课程设计报告完整版.docx
《C语言课程设计报告完整版.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告完整版.docx(12页珍藏版)》请在冰豆网上搜索。
C语言课程设计报告完整版
C语言课程设计实习报告
学生姓名:
学生学号:
所在班级:
任课教师:
课程成绩:
1.题目需求
(1)在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。
选手的最后得分为:
去掉一个最高分和一个最低分后其余8个数的平均值。
(2)同时对评委评分进行裁判,即在十个评委中找出最公平(即评分最接近平均分)和最不公平(即与平均分差距最大)的评委。
2.需求分析
根据题目要求,由于数据间单,仅涉及到简单排序及转换,程序中应提供显示、输入、输出、排序等操作,同时还可以提供键盘式选择菜单实现功能选择。
3.总体设计
这个系统可分为三个模块(见图1),评分、对评委测评、退出。
其中主要功能是最终得分和对评委测评两个模块。
4.详细设计
主函数比较简洁,只提供输入、功能处理和输出部分的函数调用。
其中各功能模块用菜单方式选择;另外,菜单部分也可以写成函数。
其流程图如图2所示。
[程序]
}#include
#include
main()/*主函数*/
{voidVote_score();/*声明评分函数*/
voidBaW();/*声明对裁判测评函数*/
intn,w;
do
{puts("\t\t**************************MENU*************************\n\n");/*选择菜单*/
puts("\t\t\t\t1.Voteandthescore");/*对歌手评分*/
puts("\t\t\t\t2.Bestandworestvoter");/*对裁判测评*/
puts("\t\t\t\t0.Exit");/*退出*/
puts("\n\n\t\t****************************************************\n\n");
printf("Choiceyournumber(0-2):
[]\b\b");
scanf("%d",&n);
if(n<0||n>2)/*对选择的数字做判断*/
{w=1;
getchar();
}
elsew=0;
}
while(w==1);/*选择功能*/
switch(n)
{
case1:
Vote_score();break;
case2:
BaW();break;
case0:
exit(0);
}
}
voidVote_score()/*评分函数*/
{
inta[10],b[10],i,j,k,B,n,w;
floatA;
B=0;
printf("inputthecontent:
\n");
for(i=0;i<10;i++)/*输入评选内容并求的评分之和*/
{
scanf("%d",&a[i]);
b[i]=a[i];
B=B+b[i];
}
for(i=0;i<9;i++)/*对评分按从小到大排序*/
for(j=1;j<10;j++)
if(b[i]>b[j])
{k=b[i];
b[i]=b[j];
b[j]=k;}
A=(B-b[0]-b[9])/8.0;/*舍去最低分和最高分求平均分*/
printf("Thefinalscore%f.\n",A);/*输出结果*/
printf(“Whatdoyouwhattodo?
”);
printf("\t\t\n********************1.MENU**********\n\n***********2.Exit*********\n\n");/*选择菜单*/
printf("\t\t\tChoiceyounumber:
[]\b\b");
scanf("%d",&n);
if(n<1||n>2)/*对选择的数字做判断*/
{w=1;
getchar();
}
elsew=0;
while(w==1);/*选择功能*/
switch(n)
{
case1:
main();break;/*返回主函数*/
case2:
exit(0);/*退出*/
}
}
#include
voidBaW()/*对裁判测评函数*/
{
inta[10],b[10],i,j,k,B,n,w;
floatA,f,c[10],d[10];
B=0;
printf("inputthecontent:
\n");
for(i=0;i<10;i++)/*输入评选内容并求的评分之和*/
{
scanf("%d",&a[i]);
b[i]=a[i];
B=B+b[i];
}
for(i=0;i<9;i++)
for(j=1;j<10;j++)
if(b[i]>b[j])
{
k=b[i];b[i]=b[j];b[j]=k;
}
A=(B-b[0]-b[9])/8.0;
for(i=0;i<10;i++)/*求得各评分与平均分之差的绝对值*/
{
c[i]=fabs(a[i]-A);
d[i]=c[i];
}
for(i=0;i<9;i++)/*对所求绝对值按从大到小排序*/
for(j=1;j<10;j++)
{
if(d[i]{
f=d[i];d[i]=d[j];d[j]=f;
}
}
for(i=0;i<10;i++)/*找出最公平评委*/
if(c[i]==d[9])
printf("Thebestvoter'snumberis%d.\n",i);
for(i=0;i<10;i++)/*找出最不公平评委*/
if(c[i]==d[0])
printf("Theworstvoter'snumberis%d.\n",i);
printf(“Whatdoyouwhattodo?
”);
printf("\t\t\n********************1.MENU**********\n\n***********2.Exit*********\n\n");/*菜单*/
printf("\t\t\tChoiceyounumber:
[]\b\b");
scanf("%d",&n);
if(n<1||n>2)/*对选择的数字做判断*/
{w=1;getchar();
}
elsew=0;
while(w==1);/*选择功能*/
switch(n)
{
case1:
main();break;/*回主菜单*/
case2:
exit(0);/*退出*/
}
5.上机操作
1.编译、链接和运行。
(略)
2.结果
(1)主菜单函数:
效果如图3所示。
图3主菜单
(2)评分模块:
在主界面出现后输入1回车,选择评分函数。
效果如图4。
图4进入评分功能
输入评分内容。
效果图如图5
图5输入评分内容
回车后得出最终得分并出现选择菜单。
效果图如图6。
图6得出最终得分75.125000并出现选择菜单
输入1回车回到主函数。
效果图如图7。
图7回到主菜单
输入2进入对裁判测评模块,并重复输入刚才的评分内容。
效果图如图8。
图8进入测评模块并重复输入刚猜的评分内容
按回车得出最公平裁判的序号和最不公平裁判序号。
并出现选择菜单。
效果图如图9
图9得出序号为9的为最公平裁判。
序号为5的为最不公平裁判。
选择2按回车退出。
效果图如图10。
图10退出
6.总结
程序比较简单,在这里用一些
程序裁判测评模块中大部分和评分模块
相同,但结果指向不同。
程序中调用了数学函
数中的求绝对值函数fabs.
程序中有大量的数组排序,用for循环操
作。