首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 某单位准备进行一次选举,对指定的n名(n<80)候选人进行投票。为了简化选举工作,事先印制了写有这n名候选人姓名的选票,投票者只需将选中者名下的圆圈涂黑即可。规定每张选票上
阅读以下说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 某单位准备进行一次选举,对指定的n名(n<80)候选人进行投票。为了简化选举工作,事先印制了写有这n名候选人姓名的选票,投票者只需将选中者名下的圆圈涂黑即可。规定每张选票上
admin
2008-05-15
31
问题
阅读以下说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
某单位准备进行一次选举,对指定的n名(n<80)候选人进行投票。为了简化选举工作,事先印制了写有这n名候选人姓名的选票,投票者只需将选中者名下的圆圈涂黑即可。规定每张选票上被涂黑的圆圈数不得超过3个,也不得少于1个,否则视为无效选票。投票结束后,所有选票经计算机扫描处理,形成了描述选票状态的文本文件。例如,n=8时所形成的文件如下:
01011000
10010100
10011000
11111111
00000000
00111000
其中,每行表示一张选票的数据,每列代表一位候选者的得票情况。第i行第j列为1,表示第i张选票上投了第j名候选人1票。
函数statisdc()的功能是读入选票数据,并统计每位候选者的得票数,函数返回有效选票数。
【C函数】
int statistic(FILE*fp,int candidatet[],int n)
{ /*从文件中读入选票数据,n为候选人数量(n<80),从有效选票中统计每位候选者的得
票数并存入candidate[],函数返回有效选票数*/
char str[80]; /*str保存读入的一张选票数据*/
int i,tag=0; /* tag用于判断每张选票是否有效*/
int q=0; /*q用于计算有效选票数*/
for(i=0;i<n; i++)
candidate
=0;
while((1)){
fgets(str,80,fP); /*读入一张选票数据*/
for(tag=0,i=0;(2);i++)
if (str
==’1’) tag++;
if((3)){/*若是有效选票,则进行统计*/
(4);
for(i=0; i<n; i++)
if.(str
==’1’) (5);
}
}
return q;
}/*statistic*/
选项
答案
(1)!feof(fp) (2)i<n && str[i]!=’\0’,或其等价形式 (3)tag>=1 && tag<=3,或其等价形式 (4)q++,或其等价形式 (5)candidate[i]++,或其等价形式
解析
本题考查C语言中的文件操作和简单数据处理。
C语言提供了大量的库函数,用于创建和使用数据文件。
在C语言中,必须在处理数据文件(甚至创建数据文件)之前将其打开。打开一个文件的库函数为
fopen(文件名,打开方式);
其中,文件名包含路径,以字符串形式给出,函数返回一个指针。打开方式如下表所示:
关闭文件的函数为fclose(文件指针)。
本题目中将文件指针作为参数传递给函数statistic(),表明文件已经打开,无须在该函数中打开和关闭文件。
根据文件打开之后的用途,可将进行读/写操作的数据文件分成两类:文本文件和二进制文件。
文本文件有一个结束标志(最后一个字符是码值为26的ASCII字符),读取函数在文件中发现该字符后向调用程序返回一个EOF。
文件指针为fp,feof(fp)用来测试fp所指向的文件当前状态是否“文件结束”,若是,则函数返回值为1,否则返回值为0。如果/顷序读入文本文件fp中的数据,每次读取一个字符,则代码如下:
while(!feof(fp))
{
ch=fgetc(fp);
.
.
.
}
因此,函数中空(1)处应填入“!feof(fp)”。
fgets()的作用是从指定文件中读入一个字符串,函数调用方式为“fgets(str,n,fp)”,从fp指向的文件输入n-1个字符,并把它们放到字符数组str中,如果在读入n-1个字符结束之前遇到换行符或EOF,则结束读入。
根据数据文件的内容安排,函数中通过语句“fgets(str,80,fp);”每次读入一行数据(一张选票的信息),str
为第i个候选人在本张选票上的得票情况。
题目中规定每张选票上被涂黑的圆圈数不得超过3个,也不得少于1个,否则视为无效选票。因此,对于读到的选票数据,首先应判断其是否有效。函数statistic()中的以下代码用于计算一张选票中“1”的个数,从而判断其有效性。
for(tag=0,i=0; (2) ;i++)/* tag用于判断每张选票是否有效*/
if (str
==’1’) tag++
当tag>3或tag<1时,选票无效。
题中已声明候选人数小于80并且通过参数传入了候选人的个数n,因此i的值应小于n,结合串结束标志“\0”将对数组str的元素的访问控制在有效下标范围内,因此空 (2)处填入“i<n&& str
!=’\0’,空(3)处应填入“tag>=1 && tag<=3”。
根据要求,还应计算有效选票的数量,因此空(4)处应填入“q++”。
若str
等于1,说明候选人i在本张选票上得了一票,所以空(5)处应填入“candidate
++’’(在计算票数之前,函数中应将每个候选人的初始得票数设置为0。)
转载请注明原文地址:https://kaotiyun.com/show/PsjZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
在Word2003中,下列关于插入图片的叙述,不正确的是(35)。
在Excel中,用&运算符进行运算时,其运算对象的类型应为______。
在PowerPoint 2000中,如果要更改幻灯片上对象出现的顺序,应设置“自定义动画”中的(62)。
文件ABC.bmp存放在F盘的T文件夹中的G子文件夹下,它的完整文件标识符是______。
银行的信息非常重要,对信息以及信息处理的安全性要求很高。安全性包括多项任务,但不(24)。
在Access中,表和数据库的关系是(67)。
信息系统设计方案中的操作界面部分,特别是输入界面设计方案需要征求信息处理技术员的意见。在如下设计理念中,(66)是不正确的。
以下关于Excel单元格操作的叙述,(52)是错误的。
在Excel2010中,若要计算出B3:E6区域内的数据的最大值并保存在B7单元格中,应在B7单元格中输入________________。
计算机网络中,防火墙的功能不包括________________。
随机试题
简述恶意程序的主要作用。
不属于静脉肾盂造影适应证的是
下列哪项不是急性胰腺炎腹痛的特点()
高强度螺栓按连接形式通常分为摩擦连接、张拉连接和承压连接等,其中()是目前广泛采用的基本连接形式。钢结构安装时,磨光顶紧的构件安装面要求顶紧面紧贴不少于()。
关于施工质量计划的说法,正确的是()。
根据《担保法》规定,下列不可以作为保证人的是()。
限制人身自由的行政处罚权即行政拘留的决定权只能由公安机关行使。()
根据《宪法》规定,在全国人大开会期间,对全国人大代表实施逮捕,需要经过其许可的国家机关是()。
a和b中有且只有一个为0,其正确的表达式是()。
(Ehime-ken)EhimeUniversityinMatsuyamaisseekingEnglishinstructorsforpostsofone-yeardurationattheEnglishEducation
最新回复
(
0
)