首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
对10个候选人进行选举,现有一个100条记录的选票文件ENG50.IN,其数据存放格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推。每一位候选人的记录内容均为字符0或1,1表示此人被选中,0表示此人未被选
对10个候选人进行选举,现有一个100条记录的选票文件ENG50.IN,其数据存放格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推。每一位候选人的记录内容均为字符0或1,1表示此人被选中,0表示此人未被选
admin
2009-02-19
35
问题
对10个候选人进行选举,现有一个100条记录的选票文件ENG50.IN,其数据存放格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推。每一位候选人的记录内容均为字符0或1,1表示此人被选中,0表示此人未被选中,全选或全不选(空选票)均为无效的选票。给定函数ReadDat()的功能是把选票记录读入到字符串数组xx中。请编制函数CoutRs()来统计每个人的选票数并把得票数依次存入Xyy[O]到yy[9]中,最后调用函数WriteDat()把结果”输出到文件OUT50.DAT中。
注意:部分源程序已给出。
请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。
试题程序:
#include
char xx[100)[11];
int yy[10];
int ReadDat(void);
void WriteDat(void);
void CoutRs(void)
{
}
void main()
{
int i;
for(i=0;i<l0;i++)
YY
=0;
if(ReadDat())
{
print f ( "数据文件ENG50. IN 不能打开! \n\007" );
return;
}
CoutRs();
WriteDat();
}
int ReadDat(void)
{
FILE *fp;
int i;
char tt[13];
if((fp=fopen("ENG50.IN","r"))==NULL)
return 1;
for(i=0;i<100;i++)
{
if(fgets(tt,13,fp)==NULL)
return 1;
memcpy(xx
,tt,10);
xx
[10]=0;
}
fclose(fp);
return 0;
}
void WriteDat()
{
FILE *fp;
int i;
fp= fopen("OUT50.DAT","w");
for(i=0;i<10;i++)
{
fprintf(fp,"%d\n",yy
);
printf ( "第%d 个人的票数=%d\n", i+l,yy
);
}
fclose(fp);
}
选项
答案
void CoutRs.(void) { int i,j=0,k=0; char*str; for(i=0;i<100;i++) { str=xx[i); /*指针str指向该行首地址*/ j=0; while(*str!=0) if(*str==’l’) /*统计’1’的个数*/ { j++; str++; /*取下一个字符*/ } elsestr++; /*如果该字符不是’l’,则什么都不做,取下一个字符*/ if(j!=0 && j!=10) /*如果既不是全选也不是空票,则为有效票*/ { Str=XX[i]; /*指针str指向该行首地址*/ k=0; while(*str) if(*str++==’1’) /*将每个人的得票数依次存入yy[0]到yy[9]中*/ yy[k++]+=1; else k++; } } }
解析
本题考查的知识点如下:
(1)二维数组的操作。
(2)指向数组的指针。
在本题中,要先判断选票是否有效。因为记录存放在一个二位数组中,为了简便我们为数组的一组元素定义一个指向数组的指针,例如,char*p=xx[2]。初始时该指针指向该组的第一个元素,指针地址每加1,则指向下一个元素。这样就可以轻松地统计每一个选票。设一变量标记每一个选票中1的个数,若其不为0和10,则选票有效。若选票有效,则依次查看哪一个元素为1,在数组yy相应的元素上加1。使用循环实现对所有记录的访问。
转载请注明原文地址:https://jikaoti.com/ti/5ZC7FFFM
本试题收录于:
三级数据库技术题库NCRE全国计算机三级分类
0
三级数据库技术
NCRE全国计算机三级
相关试题推荐
Windows 98提供了多种系统工具便于用户管理和维护计算机系统,提高计算机的运行效率。其中,可用于查看各种系统资源利用状态和目前已加载的各类驱动程序(如IRQ资源的使用情况、已加载的MS-DOS驱动程序等)的系统工具是______。
下面关于USB的叙述中,错误的是:
下面哪个中断不是内部中断?______
GNU开发工具套件中包含了编译器、连接器、调试器等工具,其中GCC是编译器、连接器工具,【77】是调试器工具。若要对某应用程序进行调试,则在编译该应用程序时,要在编译命令中加人参数【78】。
关于ARM嵌入式处理器的工作状态,以下说法正确的是()。
RTLinux基本的设计理念就是“架空”Linux内核,以便让其他实时进程能尽快地被执行。RTLinux开发者并没有针对实时操作系统的特性而重写Linux的内核,而是将Linux的内核代码做一些修改,将Linux的任务以及Linux内核本身作为一个【75】
若以S3C2410为核心的目标机上,已经移植成功Linux操作系统。若要开发该目标机的Linux应用程序,通常使用arm—linux一【79】交叉编译器来编译应用程序。若要对一个应用程序进行调试排错,则应该在编译命令中加【80】参数对它进行编译。
Armstrong公理系统中有一条推理规则为:若X→Y为F所逻辑蕴涵,且,则XZ→YZ为F所逻辑蕴涵。这条推理规则称作【】
随机试题
夜间驾驶汽车在人行横道前遇行人横过时怎样行驶?
应用于缩宫素催产和引产时应注意:
痛处灼热,流涎,目赤流泪。苔薄黄,脉数,应辨为
能够反映过去较长时间内膳食摄入水平的测量方法是
轻度肥胖的标准为小儿体重超过同性别同身高正常小儿均值的()
患者,男性,60岁,肺癌,曾做过放疗,全口无牙,下列最合适的全口义齿是
患者女,30岁。体温持续升高达39~40℃,持续数日,24小时波动不超过1℃,属于()
世界银行等国际金融组织的贷款项目,大都要求在国际范围通过()方式选择咨询单位。
按装修材料的实际应用分类,吊顶材料属于()。
求助者:我永远不会忘记这一切。当第一架飞机撞击美国世贸中心时,我正在大楼第十层的办公室里工作。我听到了撞击声,但我不能想象发生了什么。很快,有人大声喊道:“快出去,发生爆炸了。”我们往外跑,由于恐慌,我无法走动。有人拉着我跑,当我跑到足够远的地方,我看到大
最新回复
(
0
)