首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
已知在文件IN.dat中存有若干个(少于200个)四位数字的正整数,函数ReadDat()读取这若干个正整数并存入数组number中。请编写函数CalValue(),其功能要求是:①求出文件中共有的正整数个数totNum;②求这些数右移1位后,产生的新数是
已知在文件IN.dat中存有若干个(少于200个)四位数字的正整数,函数ReadDat()读取这若干个正整数并存入数组number中。请编写函数CalValue(),其功能要求是:①求出文件中共有的正整数个数totNum;②求这些数右移1位后,产生的新数是
admin
2010-09-05
41
问题
已知在文件IN.dat中存有若干个(少于200个)四位数字的正整数,函数ReadDat()读取这若干个正整数并存入数组number中。请编写函数CalValue(),其功能要求是:①求出文件中共有的正整数个数totNum;②求这些数右移1位后,产生的新数是奇数的数的个数totCnt以及满足此条件的这些数(右移前的值)的算术平均值totAve。最后调用函数writeDat()把所求的结果输出到OUT.dat文件中。
注意:部分源程序已经给出。请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。
#include <stdio.h>
#include <conio. h>
#define MAXNUM 200
int number [MAXNUM];
int totNum = 0; /* 文件IN.dst 中共有的正整数个数*/
int totCnt = 0; /* 符合条件的正整数的个数*/
double totAve = 0.0; /* 平均值 */
int ReadDat (void);
void writeDat(void);
void CalValue(void)
{
}
void main ()
{ int i;
for (i=0; i<MAXNUM; i++)
number
= 0;
if (ReadDat())
{ printf (" 数据文件 IN.dst 不能打开! \007\n");
return;
}
CalValue ();
printf(" 文件 IN.dst 中共有的正整数个数=%d个\n", totNum);
printf (" 符合条件的正整数的个数 =%d个\n", totCnt);
printf("平均值=%.2f\n", totAve);
writeDat ();
}
int ReadDat (void)
{ FILE *fp;
int i = 0;
if ((fp = fopen("IN.dat", "r")) == NULL)
return 1;
while (!feof(fp))
fscanf(fp, "%d,", &number [i++]);
fclose (fp);
return 0;
}
void writeDat (void)
{ FILE *fp;
fp = fopen("OUT.dat", "w");
fprintf(fp, "%d\n%d\n%6.2f\n", totNum, totCnt, totAve);
fclose (fp);
}
选项
答案
void CalValue(void) { int i, data; for (i=0; i<MAXNUM; i++) { if (!number[i]) break; if (number[i] > 0) totNum++; data = number[i]>>1; if (data%2) { totCnt++; totAve += number[i]; } } totAve /= totCnt; } [解题思路] 在for循环语句中,自变量i从0递增到MAXNUM对数组number中的每个数进行判断,如果number[i]的值大于0,说明number[i]的值为正整数,统计正整数个数的变量totNum加1;然后number[i]右移1位得到data的值;再对data的值除2求余数,如果其值为1,则统计变量totCnt加1,同时把number[i]的值加到totAve上,得到这些数的和。退出循环后,用totAve的值除以totCnt,就得到了这些数的算术平均值totAve。
解析
转载请注明原文地址:https://kaotiyun.com/show/iuvZ777K
本试题收录于:
三级数据库技术题库NCRE全国计算机三级分类
0
三级数据库技术
NCRE全国计算机三级
相关试题推荐
设关系R和S的元数分别是r和s,则集合{t|t=<tr,ts>∧tr∈R∧ts∈S}标记的是
对n个记录的文件进行起泡排序,所需要的辅助存储空间为
E-R模型转换为关系模式时,将一个多元联系转换为一个关系模式,关系模式的码为参与联系的各个实体的【】。
关系模式的任何属性()。
数据库管理系统提供用户对数据的操纵功能,实现对数据库数据的检索、插入、修改和删除,这属于数据库管理系统的基本功能中的______。
设只包含根节点的二叉树的高度为0,则高度为k的二叉树的最小节点数为_____。
下面哪一种方法不能用于提高文件目录检索效率?______。
单键表的每个结点中包括一个指针link,它指向该结点的后继结点。现要将指针q指向的新结点插入到指针p指向的单链表结点之后,下面的操作序列中哪一个是正确的?
若一棵二叉树中只有叶节点和左、右子树皆非空的节点,设叶节点的个数为1,则左、右子树皆非空的节点个数为【】。
一个公司有若干名兼职人员,而每个兼职人员有可能在多家公司打工,则公司与兼职人员之间具有
随机试题
1998年2月张某驾驶其父亲张老大的东风牌卡车行至城南环路时,因为逆行,又无驾驶证,被县公安交警支队执勤民警谈某等人将车扣押。该车在返回交警队停车场途中,谈某遇到路障没有采取制动措施,导致汽车底盘受挫,引擎报废。交警支队在事故认定书中认为事故并非民警操作不
胃食管反流的主要症状是
麻黄横切面特征为
建筑场地较小时,采用建筑基线作为平面控制,其基线点数不应少于()个。
商业银行的现金头寸与应收存款之和占总资产的比例构成()。
2013年1~10月,全国汽车商品累计进出口总额为1307.15亿美元,同比增长2.16%,同比年内首次呈现增长。其中:进口金额664.72亿美元,同比增长0.18%,结束了9月下降趋势;出口金额642.43亿美元,同比增长4.29%,增幅较前9月有所提升
填入下列句子中横线上词语,正确的一组是()。①相关部门多次派人来______这个公司的财务工作,发现了许多问题。②在我结婚的那天,妈妈拿出一个翡翠镯子给我,说那是祖上______下来的。
在IEEE802.4标准中,关于令牌总线说法不正确的是()。
TextAfterlunch,withoutpermissionfromtheirparents,thetwoboyssetofftoexplorethepartofthebeachwhich【C1】_____
ThespeakersaretalkingabouthowJeremypublishedhisnewbook.
最新回复
(
0
)