西工大大作业报告.docx

上传人:b****5 文档编号:7233686 上传时间:2023-01-22 格式:DOCX 页数:12 大小:196.74KB
下载 相关 举报
西工大大作业报告.docx_第1页
第1页 / 共12页
西工大大作业报告.docx_第2页
第2页 / 共12页
西工大大作业报告.docx_第3页
第3页 / 共12页
西工大大作业报告.docx_第4页
第4页 / 共12页
西工大大作业报告.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

西工大大作业报告.docx

《西工大大作业报告.docx》由会员分享,可在线阅读,更多相关《西工大大作业报告.docx(12页珍藏版)》请在冰豆网上搜索。

西工大大作业报告.docx

西工大大作业报告

学院

班级

学号

姓名

摘要

简要说明:

随着各种选拔比赛的相继推出,其评分系统的合理性与便捷性也逐渐备受关注。

本程序针对歌星大奖赛的评分规则设计相应程序,较为全面地实现了目标要求,并结合各评委给分情况,对评委进行了简单考察。

更能直接的体现比赛的公平、公正、公开。

设计过程:

首先结合题目要求,鉴于其数值的统一与归属性强,故考虑利用数组记录评分。

合理地利用for循环及goto语句及各种循环间的嵌套,实现了数据的输入、处理、与输出。

设计亮点:

不拘泥于题目要求,能很好地联系实际,应用性较强首先,在数据输入时就其区域进行相关处理。

考虑到得分的明晰化,将得分与评委序号打包输出,同时对评委打分的合理性也进行相应考核,便于观众监督与了解。

不足之处:

程序相对较长,还未做到完全简洁化。

由于设计界面设计,程序结果反映较为单调,重要数据无法突出显示。

目录

1摘要3

1.1设计题目3

1.2设计内容3

1.3开发工具3

1.4应用平台3

2详细设计3

2.1程序结构3

2.2主要功能3

2.3函数实现4

2.4开发日志4

3程序调试及运行4

3.1程序运行结果4

3.2程序使用说明4

3.3程序开发总结4

4附件(源程序)4

1摘要

1.1设计题目

1、程序设计——《歌星大奖赛》;

2、素数幻方;

1.2设计内容

1.2.1歌星大奖赛——

1、完成原有任务:

在歌星大奖赛中,有十个评委为参赛选手打分,分数为1—100分。

选手最后得分为:

去掉一个最高分和去掉一个最低分后其余八个数的平均分。

请编写一个程序实现。

2、在此基础上追加任务:

同时对评委评分进行裁判,即在十个评委中找出最公平(即评分最接近平均分)和最不公平(即与平均分偏离最大)的评委。

3、思考流程:

在完成任务的目标下,限定得分域(score>=0||score<=100);输出评委号使分数明晰化;通过比较个评委所打分数与最终得分的偏离情况来对评委进行简单考核。

1.2.2素数幻方——

求四阶的素数幻方。

即在一个4X4的矩阵中,每一个格填入一个数字,使每一行、每一列和两条对角线上的4个数字所组成的四位数,均为可逆素数。

在实际编程中,采用了很多程序设计技巧,假如设置若干辅助数组,其目的就是要最大限度的提高程序的执行效率,缩短运行时间。

下面的程序运行效率是比较高的

 

1.3开发工具

开发工具:

VisualC++6.0

开发环境:

Win32

1.4应用平台

Windows2000/XP/Vista32位

2详细设计

2.1程序结构

2.2.1歌星大奖赛——

●首先,将一组评委打分记录到所定义数组内。

由题目中去掉最大值最小值的要求先假设当前的最大值max为C语言整型数的最小值-32768;

假设当前的最小值min为C语言整型数的最大值32767。

●考虑到得分的合理性,建立分值区域限定(score[i]<0||score[i]>100)。

由if语句判定,如输入错误,提示重新输入,并将重新输入的合理值读入。

●通过if语句比较筛选出其中的最高分、最低分,并计算总成绩及平均分。

●将评委所评分与平均分减的绝对值重新赋给数组,比较其中的最大最小值。

2.2.2素数幻方——

●首先设想采用穷举法,设定4X4矩阵中每一个元素的值后,判断每一行、每一列和两条对角线上的4个数字组成的四位数是否都是可逆素数,若是则求出了满足题意的一个解。

●充分利用题目中的“每一个四位数都是可逆素数”这一条件,可以放弃对矩阵中每个元素进行的穷举的算法,先求出全部的四位可逆素数(204个),以矩阵的行为单位,在四位可逆素数的范围内进行穷举,然后将穷举的四位整数分解为数字后,再进行列和对角线方向的条件判断,改进的算法与最初的算法相比,大大地减少了穷举的次数。

●对算法的进一步研究会发现:

当设定了第一和第二行的值后,就已经可以判断出当前的这种组合是否一定是错误的(尚不能肯定该组合一定是正确的)。

若按列方向上的四个两位数与四位可逆数的前两位矛盾(不是其中的一种组合),则第一、二行的取值一定是错误的。

同理在设定了前三行数据后,可以立刻判断出当前的这种组合是否一定是错误的,若判断出矛盾情况,则可以立刻设置新的一组数据。

这样就可以避免将四个数据全部设定好以后再进行判断所造成的低效。

 

2.2主要功能

2.2.1歌星大奖赛——

1)本程序可应用于评分制比赛中。

通过比较,确定并去掉所打分数中的最大最小值,将其余值计入有效得分,并进一步求得其平均分。

2)通过进一步比较每位评委所打分数与选手最终的分,对评委进行裁判,确定出打分相对合理与相对不合理的评委。

最分别输出这两位评委的打分及编号,更彰显了比赛的公正性。

3)将评分及评委编号一同输出,更方便核证与考察

2.2.2素数幻方——

求四阶的素数幻方。

即在一个4X4的矩阵中,每一个格填入一个数字,使每一行、每一列和两条对角线上的4个数字所组成的四位数,均为可逆素数。

2.3函数实现

2.3.1歌星大奖赛——

将评委打分记录入所定义数组,合理应用for循环语句的嵌套及if判断语句实现部分数值的判定。

筛选出最大最小值,同时也在追加问题中选出打分偏差最大最小值。

具体见2.1程序结构及2.2功能实现。

2.3.2素数幻方——

开始

找出全部四位的可逆素数;

确定全部出现在第一和最后一行的四位可逆素数;

在指定范围内穷举第一行

在指定范围内穷举第二行

若第一、第二、三行已出现矛盾,则继续穷举下一个数;

在指定范围内穷举第四行

判断列和对角方向是否符合题意

若符合题意,则输出矩阵;

否则继续穷举下一个数;

结束

2.4开发日志

6月3日,选择构思大作业;

6月4日,投入大部分时间,初步完成程序编写。

并基于美观合理的目的,对程序进行修改与完善;

6月6日,最终审核程序,并作进一步调试。

请同学检查并记录其评价与建议;

6月7日——10日,进一步检查并完成论文的写作。

3程序调试及运行

3.1程序运行结果

3.1.1歌星大奖赛——

运行截图

相关改进

【3-1】

此为刚开始考虑不周,未加入分值域限制时产生的错误,显然“197”已超过打分上限。

【3-2】

为避免发生输入错误而产生上述分值反常的发生,特作调整,效果如左图。

【3-3】

如果仅仅考虑选手所得分数,不能直观明晰评委态度。

为了做到真正的合理公开化,应将评委与相应分值一通输出。

【3-4】

在将评委与所打分值打包输出地同时,将选手得分做了陈列,能更清楚地反映选手的得分情况。

同时,对评委打分的合理性也做了相关考察。

3.1.2素数幻方——

3.2程序使用说明

3.2.1歌星大奖赛——

本程序设计过程中,全面考虑其使用性。

故输出相应的汉字提示,使界面更加人性话。

操作简单方便易于上手和推广。

1、首先,打开程序,根据实际评委数量确定数组长度;

2、根据界面提示,以此输入各位评委所打分值

3、如有输入错误,根据系统提示,进行相应改正

4、数据输入完全后,所得结果形式多样,一目了然

5、根据情况需要,选取相应结果进行相关分析。

3.2.2素数幻方——

3.3程序开发总结

此次程序设计大作业的编写,使我更深入得懂得了C语言的魅力不仅在于其丰富多变的形式,更在于它全面宽泛的应用价值。

单就歌星大奖赛的评分系统,有了此类程序设计的应用,带来的便捷是有目共睹的。

这也是我第一次完全独立地去设计一个系统化、实用性的程序。

虽然在编写过程中,无严重语法错误。

但着手前的考虑不周确实带来了不少阻碍。

设计一个实用性程序,不仅要求结果的正确无误,更要保障其符合实际情况,能带来真正意义上的方便。

本程序设计过程中,在一次次的尝试与总结下,我在原有简陋程序的基础上,加入分值域的限制,为了反应清楚,将分值与评委对号入座,并追加设计了对评委的考核标准。

一定程度上达到了实用性、合理性的要求。

总之,通过这次程序设计大作业,我充分练习了循环、数组等有关内容,对课本知识也有了纲要性地掌握。

我会更加认真对待每一次程序设计,努力提高自己的编程水平。

4附件(源程序)

2.2.1歌星大奖赛——

4.1未加入分值域限制及数值类型时的程序(初稿)(对应上图【3-1】):

#include

#include

voidmain()

{

intscore[11],i,max,min,sum;

max=-32768;/*先假设当前的最大值max为C语言整型数的最小值*/

min=32767;/*先假设当前的最小值min为C语言整型数的最大值*/

sum=0;/*将求累加和变量的初值置为0*/

for(i=1;i<=10;i++)

{

printf("Inputthescoregivenbyjudge%d=",i);

scanf("%d",&score[i]);/*输入评委的评分*/

sum+=score[i];/*计算总分*/

if(score[i]>max)max=score[i];/*通过比较筛选出其中的最高分*/

if(score[i]

}

printf("Canceledmaxscore:

%d\nCanceledminscore:

%d\n",max,min);

printf("Averagescore:

%d\n",(sum-max-min)/8);/*输出结果*/

}

4.2更换数据类型,并对数值合理性进行判断(对应上图【3-2】)

#include

#include

voidmain()

{

intscore[11],i,max,min,sum,a,b;

max=-32768;/*先假设当前的最大值max为C语言整型数的最小值*/

min=32767;/*先假设当前的最小值min为C语言整型数的最大值*/

sum=0;/*将求累加和变量的初值置为0*/

for(i=1;i<=10;i++)

{

lable:

printf("Inputthescoregivenbyjudge%d=",i);

scanf("%d",&score[i]);/*输入评委的评分*/

if(score[i]<0||score[i]>100)

{

printf("Wrongsocre\n");gotolable;

}/*对数值合理性的改进*/

sum+=score[i];/*计算总分*/

if(score[i]>max)

{

max=score[i];/*通过比较筛选出其中的最高分*/

a=i;}

if(score[i]

{

min=score[i];/*通过比较筛选出其中的最低分*/

b=i;}

}

for(i=1;i<=10;i++)

{

printf("%d[%d];",score[i],i);

if(i%5==0)

printf("\n");

}

printf("Canceledmaxscore:

%d[%d]\nCanceledminscore:

%d[%d]\n",max,a,min,b);

printf("Averagescore:

%d\n",(sum-max-min)/8);/*输出结果*/

}

4.3考虑入评委,是数据更明晰,同时对评委进行考察(最终完成版)(对应上图【3-4】)

#include

#include

voidmain()

{

doublescore[11],max,min,sum,aver,m,n;

inti,a,b,c,d;

max=-32768;/*先假设当前的最大值max为C语言整型数的最小值*/

min=32767;/*先假设当前的最小值min为C语言整型数的最大值*/

sum=0;/*将求累加和变量的初值置为0*/

for(i=1;i<=10;i++)

{

lable:

printf("%d号评委打分为:

",i);

scanf("%lf",&score[i]);/*输入评委的评分*/

if(score[i]<0||score[i]>100)

{

printf("*数据错误,请重新输入*\n");gotolable;

}

sum+=score[i];/*计算总分*/

if(score[i]>max)

{

max=score[i];/*通过比较筛选出其中的最高分*/

a=i;}

if(score[i]

{

min=score[i];/*通过比较筛选出其中的最低分*/

b=i;}

}

printf("\n");

printf("得分情况为:

\n");

for(i=1;i<=10;i++)

{

printf("%-0.2lf[%d];",score[i],i);

if(i%5==0)

printf("\n");

}

aver=(sum-max-min)/8;

printf("\n");

printf("去掉一个最高分:

%.2lf[%d]\n去掉一个最低分:

%.2lf[%d]\n",max,a,min,b);

printf("选手最终得分:

%.2lf\n",aver);/*输出结果*/

for(i=1;i<=10;i++)

score[i]=fabs(score[i]-aver);

for(i=1;i<=10;i++)

{

if(i%5==0)

printf("\n");

}

m=0;n=100;

for(i=1;i<=10;i++)

{

if(score[i]>m)

{

m=score[i];

c=i;

}

if(score[i]

{

n=score[i];

d=i;

}

}

printf("打分最合理的评委:

[%d]\n相对不合理的评委:

[%d]\n",d,c);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1