首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
对10个候选人进行选举,现有一个100条记录的选票数据文件IN29.DAT,其数据存放的格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依次类推。每一位内容均为字符0或1,1表示此人被选中,0表示此人未被选中,若
对10个候选人进行选举,现有一个100条记录的选票数据文件IN29.DAT,其数据存放的格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依次类推。每一位内容均为字符0或1,1表示此人被选中,0表示此人未被选中,若
admin
2009-02-19
42
问题
对10个候选人进行选举,现有一个100条记录的选票数据文件IN29.DAT,其数据存放的格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依次类推。每一位内容均为字符0或1,1表示此人被选中,0表示此人未被选中,若一张选票选中人数小于等于5个人时则被认为是无效的选票。给定函数ReadDat()的功能是把选票数据读入到字符串数组xx中。请编制函数 CountRs()来统计每个人的选票数并把得票数依次存入yy[0]到yy[9]中,最后调用函数WriteDat()把结果yy输出到文件OUT29.DAT中。
注意:部分源程序已给出。
请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。
试题程序:
#include 〈stdio.h>
char xx[100] [11];
int yy[10];
int ReadDat (void);
void WriteDat(void);
void CountRs(void)
{
}
main ( )
{
int i;
for (i=0; i〈10; i++)
yy
= 0;
if (ReadDat ( ) )
{
print f ("选票数据文件IN29. DAT不能打开! \007 \n");
return;
}
CountRs ( );
WriteDat ();
}
int ReadDat (void)
{
FILE *fp;
int i;
char tt[13];
if((fp = fopen("IN29.DAT", "r")) == NULL)
return 1;
for (i = 0; i 〈 100; i++)
{
if(fgets(tt, 13, fp) == NULL)
return 1;
memcpy(xx
, tt, 10);
}
fclose (fp);
return 0;
}
void WriteDat(void)
{
FILE *fp;
int i;
fp = fopen("OUT29.DAT", "w");
for(i = 0; i 〈 10; i++)
{
fprintf(fp, "%dkn", yy
);
printf("第%d个人的选票数=%d\n", i+1, yy
);
}
fclose(fp);
}
选项
答案
void CountRs(void) { int i, count, j; char*pf; for(i=0; i〈10;i++) yy[i]=0; /*给数组YY初始化置0*/ for(i=0; i〈100; i++) { pf=xx[i]; count=0; /*使指针pf指向各行的首地址*/ while (*pf) if(*pf==’1’) { count++; /*统计得票数count*/ pf++; } else pf++; if(count>5) /*当count值大于5时为有效票数*/ { pf=xx[i]; /*使指针Pf指向该行的首地址*/ j=0; while(*pf) /*统计每个人的得票数,并依次存入yy[0]到yy[9]*/ if (*pf==’1’) { yy[j]+=1; j++; pf++; } else if (*pf==’0’) { pf++; j++; } } } }
解析
根据题意可知,本题涉及到了一个二维字符数组,该数组中含有100条记录,每条记录又包括长度为10位的字符串,并且该字符串中的字符只含有“0”(表示未选中)和“1”(表示选中)两个字符(用来标识某人的被选中情况)。本题要求要统计每个人的选票数,也就是要统计每行中字符为“1”的个数,来借助一个指向字符指针的变量pf,首先让该指针指向各行的首地址,然后按照行方向依次指向当前行的各个字符,每找到一个字符就对它进行条件判断:看其是否为“1”,如果为“1”,则给用来统计得票数的变量count加1。当count值大于5时(选票中选中人数小于等于5个人时则被认为是无效选票),我们才做把得票数依次存入yy[0]到yy[9]中。注意,在yy数组中的每一项都存的是一个得票的总数。
转载请注明原文地址:https://www.kaotiyun.com/show/xacZ777K
本试题收录于:
三级数据库技术题库NCRE全国计算机三级分类
0
三级数据库技术
NCRE全国计算机三级
相关试题推荐
Pentium微处理器进行存储器读操作时,在时钟周期T1期间,完成下列哪一项操作?( )
下列接口标准中,( )接口标准不能弥补RS-232C在传输距离和传输效率上的不足。
进程是一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程。进程从创建到终止其状态分为5种,它在执行过程中不断地在这几种状态之间切换,并且状态的转换是有一定的条件和方向的。在以下的进程状态及其状态转换示意图中,问号(?)所指的状态应为【 】。
Wndows98采用了层次型的模块结构,系统由许多功能不同的模块组成。在下列动态模块中、( )是Windows图形功能的核心。
假定被检验的数据M(x)=1000,其选择生成多项式为G(x)=x3+x+1,该数据的循环冗余校验码(CRC码)应为( )。
关于“新一代计算机”或“未来型计算机”的特点有许多叙述,例如,Ⅰ.新一代的计算机系统主要着眼于机器的智能化Ⅱ.新一代的计算机系统速度极快,容量无限制,体积很小Ⅲ.它具有较自然的人机通信能力Ⅳ.它不但能听、能说,而且能思考
汉字有多种不同的编码标准,下面关于不同编码标准之间关系的叙述中,错误的是()。
下面有关嵌入式系统开发过程的描述语句中,不恰当的是()。
如果一种存储器的总线工作频率为333MHz,数据线宽度为32位,每个存储器总线周期传输1次数据,则该存储器的带宽为【55】MB/s。AM29LV160是一种典型的NORFlash芯片,芯片内部具有20条地址线和16条数据线,该芯片的存储容量为【56】MB
基于嵌入式WEB服务器的应用系统中,其软件系统的4个重要软件组件是客户端__________【77】、WEB服务器、WEB页面、设备操控程序等。其中WEB页面是用于设备操控命令提交或设备状态信息显示的人机界面,它需要通过__________【78】接口来与
随机试题
A.右心室容量负荷过重B.心脏舒张受限C.左心室容量负荷过重D.右心室压力负荷过重E.机械性肺淤血状态下列病例发生心力衰竭时属于哪项病理生理机制女,30岁。原有风心病重度二尖瓣狭窄,因与人争吵,突发气急,咳嗽,咳粉红色泡沫样痰,大汗淋漓,入院
在施工进度控制过程中,如果由于承包单位自身原因造成工期拖延且不按指令改变延期状态时,则监理工程师不可以采用()手段进行处理。
某水利枢纽工程有混凝土重力坝、水电站等建筑物构成。施工单位与项目法人签订了其中某坝段的施工承包合同,部分合同条款如下:(1)合同总金额15000万元整;开工日期为2007年9月20日,总工期为26个月。(2)开工前项目法人向施工单位支付10%的工程预
电算化会计核算流程与手工会计核算流程基本相同。()
在人寿保险客户服务中,( )的业务量最大。
我国反垄断法律制度禁止具有市场支配地位的经营者,无正当理由限定交易相对人只能与其进行交易或者只能与其指定的经营者进行交易。下列各项中,属于法定正当理由的有()。
在贯彻“教育引导发展的原则”时,应该注意什么?
幼儿园教师了解幼儿的最主要目的是()
“三个有利于”标准具有内在的联系,其中最基本的是人民生活水平的改善。()
一种确定物种起源的方法是比较有亲缘关系的物种的遗传物质。科学家们认为两个物种的遗传物质越是相似,它们从同一祖先分化出来的时间距今就越近。在比较了大熊猫、棕熊猫、浣熊、长鼻浣熊和所有七种熊的遗传物质之后,科学家们发现:熊类和浣熊是在距今3000万至500
最新回复
(
0
)