首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下应用程序说明和C程序,将C程序段中(1)~(6)空缺处的语句填写完整。 【说明】 某大学征询学生意见,从各学院预选的n(n≤60)位优秀大学生中,评选出“十佳大学生”。以下【C程序】对各位学生选票进行相关的统计、排序等处理。 (1
阅读以下应用程序说明和C程序,将C程序段中(1)~(6)空缺处的语句填写完整。 【说明】 某大学征询学生意见,从各学院预选的n(n≤60)位优秀大学生中,评选出“十佳大学生”。以下【C程序】对各位学生选票进行相关的统计、排序等处理。 (1
admin
2009-02-15
38
问题
阅读以下应用程序说明和C程序,将C程序段中(1)~(6)空缺处的语句填写完整。
【说明】
某大学征询学生意见,从各学院预选的n(n≤60)位优秀大学生中,评选出“十佳大学生”。以下【C程序】对各位学生选票进行相关的统计、排序等处理。
(1)各学院预选的优秀大学生按1,2,…顺序连续编号,每个编号用两个字符表示,即01,02,…。
(2)所回收的选票按以下格式存于文件source中,每行字符串对应一张选票。其中,姓名占10个字符,学院名称占30个字符,大学生编号占20个字符。
(3)对应名次的大学生编号可以有空缺,但必须用00表示。
(4)若编号超出规定范围,或编号重复出现,按照废票处理。
(5)按选票中所列“十佳大学生”顺序给出各名大学生的得分。评分标准如下:
一 二 三 四 五 六 七 八 九 十
15 12 9 7 6 5 4 3 2 1
(6)按各位大学生得分数由高到低顺序排队,并按以下格式列出“十佳大学生”排行表。
名次 大学生编号 合计得分 合计得票数
若得分相同,则得票数多的在前;若得分和得票数都相同,则编号小的在前。
以下【C程序】中所应用到的函数fopen、fclose和fgets都是I/O程序库中的函数。
【C程序】
#include <stdio. h>
#define n 60
long int tn[n], td[n], score[n+1][10], order[n];
char s[80];
int mark[]=(15,12,9,7,6,5,4,3,2,1);
FILE *fp, *fopen();
Main()
{ int c, g, k, I, j, b[10];
long int e, d, t, tt, dd;
char * p;
for(i=0; i<=n; i++)
for(j=0; j<10; j++)
score
[j]=0;
fP=fopen("source", "r"); /*以读方式打开文件source*/
p=fgets(s, 80, fp); /*读fp所指文件的下一行字符串于s*/
while(*p){
g=l; k=0; p+=40;
while(k<10){
c=((*p++)-’0’)*10+((*p++)-’0’);
b[k++]=c)
if(c<=n){
if(c)
{ i=0;
While( (1) );
If( (2) ){g=0; break;}
}
else{g=0; break;}
}
If(g)
For(i=0; i<k; i++)
If(b
)
(3);
p=fgets(s, 80, fP);
}
Fclose(fp); /*关闭fp所指文件*/
For(i=1; i<n; i++){
For(t=0, d=0, j=0; j<10; j++){
t +=(e=score
[j]);
d +=e * mark[j];
}
tn[i-1]=t; td[i-1]=d; order[i-1]=i;
}
For(i=0; i<n-1; i++){
k=i;
for(j=i+1; j<n; j++)
if((t=td[order[j]-1])>(d=td[order[k]-1]))
k=j;
else
if(t==d){
tt=(4);
dd=(5);
for(c=0; c<10; c++)
if((e=(6))>0){
k=j; break;}
else
if(e<0)break;
}
If(k!=i){
t=order[k]; order[k]=order
; order
=t;
}
}
For(i=0; i<10; i++)
Printf("%2d%2d%d%d\n", i+1, order
, td[order
-1], tn[order
-1]));
}
}
选项
答案
(1)c!=b[i++],或其他等价形式 (2)i<k,或其他等价形式 (3)score[b[i]][i]++,或其他等价形式 (4)order[j] (5)ordcr[k] (6)score[tt][c]-score[dd][c]
解析
仔细阅读本试题的程序说明和【C程序】后,可得出评选“十佳大学生”的数据格式和算法。该C程序先读入一行字符,进行合法性检查后再进行选票统计;读入所有选票后,再计算每个大学生的得分和选票数,最后进行排序输出。
通常,阅读一个C程序时,应先明白程序中所用变量的含义,这对解题是很有帮助的。程序中所用变量的含义,除了可在程序说明中了解之外,还可以通过程序中的输入/输出语句来获知。对照程序说明中给出的输出次序可以了解到,数组order是用来存放第i名大学生的编号,数组td用来存放大学生的总分,数组tn用来存放大学生得到的选票总数。
程序中用while(*p){...}语句所包含的程序段进行合法性检查并进行统计。合法性检查即排除非法的选票。指针p用于表示每次读入的一行80个字符的首地址,语句“p+=40”使p指向每张选票的第40个字符,把每张选票上的大学生编号转换成十进制数c,并存入数组b中。由于每张选票最多可选十名,因此需用k<10来进行循环控制。
由于(1)、(2)空缺处位于while(*p){...}的内循环中,且由语句“g=0; break;”(即变量g为0时跳出该循环)和语句“if(g)”可知,譬为合法性标记,因此(1)、(2)空缺处所填写的语句完成选票的合法性检查。由于非法选票有“编号超出规定范围”和“编号重复出现”两种,因此应当把当前编号c和已处理过的编号b
(i=0...k-1)进行比较,从而来判断是否满足“编号超出规定范围”,即(1)空缺处应填入“c!=b[i++]”。另外,当前编号c已存放在第k个字符中,当i小于k时,即表示有编号重复,因此(2)空缺处应填入“i<k”。
(3)在空缺处的“for(i=0; i<k; i++)”循环程序段中,数组b
表示编号为b
的大学生,在该张选票上被评为i+1名;数组score[b
]
表示编号为b
的大学生,被评为i+1名的选票有score[b
]
张。当一张选票上的10个编号都合法时,则应把该选票上的数据存入数组score中,即对编号为b
的大学生所得的第i+1名选票加1,因此(3)空缺处应填入“score[b
]
++”。
“fclose(fp);”之后的语句是对大学生的得分进行统计工作,其结果分别存放在大学生编号数组Order、选票总数变量tn和总分变量td中,然后进行排序。由语句的结构可知,用变量k标记得分最高的位置,即编号为order[k]的大学生得分为本次排序中最高,然后在外层for循环中进行条件交换,由此可知,该排序采用的是选择排序算法。
在排序过程中如果得分相同,即程序中条件“if(t==d)”成立,则必须根据两名大学生的得票情况进行排序,得分名次在前、票数多者排在前面。(6)空缺处所填写的语句是对得票数相同的情况进行排序处理,e为控制变量,用来存放编号为Order[j]和Order[k]的相同名次的得票数的比较结果,并根据该比较结果确定是否进行位置交换。因此(4)空缺处所填写的内容是“order[j]”;(5)空缺处所填写的内容是“order[k]”;(6)空缺处所填写的内容是“score[tt][c]—score[dd][c]”,即编号为j的大学生与编号为k的大学生的得票数之差。
转载请注明原文地址:https://jikaoti.com/ti/wTW7FFFM
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
下列选项中,不属于网络操作系统的是______。
Windows多窗口的排列方式不包括()。
下列关于Word文本编辑的叙述中,不正确的是(33)。
为在Excel2010的A1单元格中生成一个60到100之间的随机数,则应在A1单元格中输入________________。
在Word2010文档中,某个段落最后一行只有一个字符,()不能把该字符合并到上一行。
在浏览网页时,当鼠标指针移至某些文字或某些图片时,会出现手形状,通常是由于网页在这个地方做了(17)。
西部某省考试机构工作人员统计了去年下半年三个地区四种资格的报考人数,将统计表抄录如下(其中有一个数据抄错了): 信息处理技术员小王很快就找出了错误的数据,并进行了纠正。错误的数据是(32),该数据应纠正为(33)。33.
在Excel2003中,A1到E6单元格的值如下图所示,若在A7单元格中输入计算众数的函数“=MODE(A1:E6)”,按回车键后,则.A7单元格显示的值为(47)。
在Excel中,设单元格A1中的值为100,B1中的值为200,A2中的值为300,B2中的值为400,若在A3单元格中输入函数“=SUM(A1:B2)”,按回车键后,A3单元格中的值为()。
阅读下列说明,根据网页显示的效果图,回答问题1至问题6。【说明】以下是用ASP实现的一个网络留言系统。用IE打开网页文件index.asp后的效果如图5-1所示。[index.asp文档的内容]<!--#includ
随机试题
应用中枢性抗胆碱药时,氯丙嗪的不良反应加重的是
组成药物中含有蒲黄、五灵脂的方剂是
根据《中华人民共和国土地增值税暂行条例》的规定,纳税人转让房地产所取得的收入包括()。
道德______是对道德规范及其执行意义的认识,其结果是获得有关的道德观念,形成道德信念。
从我国古代文献看,商代甲骨文中已有“稻”字出现,在《诗经》中已将黍、稻并提。春秋以前,因我国北方种稻量少,水稻被列为五谷之末,如“禾、稷、菽、麦、稻”;而至宋代,便因种植数量多而升至五谷之首了,民间更流传着“苏湖熟,天下足”的说法;到了明代,更有天下谷类“
阅读以下文字。完成下列题。我记得念大三的时候,期末考试的题目有一道特别难,全班就我一个人能基本上做出来。可是等卷子发下来,我发现那道题目老师只给了1/4的分数,感到很委屈,因为我只是把答案的小数点点错了地方。老师耐心开导我,我也理解了老师重扣分的
贫困常常使人想到低矮的土房、破旧的被褥、浑浊的双眼。这的确是生活在城市最低生活标准线下的贫困人家。男人病逝,欠下很多钱,量个孩子一个有点残疾,但他们家窗明几净,有冰箱、洗衣机,有漂亮的窗帘和门帘。女主人的笑容就像她的屋子一样明朗,她说,冰箱、洗衣机都是邻居
(2018年山东)《山东省新旧动能转换重大工程实施规划》提出,加快形成“三核引领、多点突破、融合互动”的新旧动能转换总体布局。这里的“三核”指的是()。
具有保密资质的公司中一名涉密的负责信息系统安全的安全管理员提出了离职申请,公司采取的以下安全控制措施中,_______可能存在安全隐患。
GregLogan:Thesewerethetrialsforthe1988OlympicsinSeoul,Korea.Untilthisdive,Ihadbeenahead.Butnow,somethi
最新回复
(
0
)