首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
已知数据文件IN26.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中。请编制一函数jsVal(),其功能是:把千位数字和个位数字重新组成一个新的十位数(新十位数的十位数字是原4位数的千位数字,新十位数的个位数字是原4位数的
已知数据文件IN26.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中。请编制一函数jsVal(),其功能是:把千位数字和个位数字重新组成一个新的十位数(新十位数的十位数字是原4位数的千位数字,新十位数的个位数字是原4位数的
admin
2009-02-24
57
问题
已知数据文件IN26.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中。请编制一函数jsVal(),其功能是:把千位数字和个位数字重新组成一个新的十位数(新十位数的十位数字是原4位数的千位数字,新十位数的个位数字是原4位数的个位数字),把百位数字和十位数字组成另一个新的十位数(新十位数的十位数字是原4位数的百位数字,新十位数的个位数字是原4位数的十位数字),如果新组成的两个十位数均是奇数并且两个十位数中至少有一个数能被5整除,同时两个新十位数字均不为零,则将满足此条件的4位数按从大到小的顺序存入数组b中,并要求计算满足上述条件的4位数的个数cnt,最后调用写函数writeDat(),把结果cnt及数组b中符合条件的4位数输出到OUT26.DAT文件中。
注意:部分源程序已给出。
程序中已定义数组:a[200],b[200],已定义变量:cnt。
请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。
试题程序:
#include 〈stdio.h>
#define MAX 200
int a[MAX], b[MAX], cnt = 0;
void jsVal()
{
}
void readDat()
{
int i;
FILE *fp;
fp = fopen("IN26.DAT", "r");
for(i = 0; i 〈 MAX; i++)
fscanf(fp, "%d", &a
);
fclose (fp);
}
main ( )
{
int i;
readDat ();
jsVal ();
printf("满足条件的数=%d\n", cnt);
for(i = 0; i 〈 cnt; i++)
printf("%d ", b
);
printf ("\n");
writeDat ();
}
writeDat ()
{
FILE *fp;
int i;
fp = fopen("OUT26.DAT", "w");
fprintf(fp, "%d\n", cnt);
for(i = 0; i 〈 cnt; i++)
fprintf(fp, "%d\n", b
);
fclose (fp);
}
选项
答案
void jsVal() { int i, thou, hun,ten,data,j; int ab, cd; for(i=0,i〈200,i++) { thou=a[i]/1000; /*求千位数字*/ hun=a[i]%1000/100; /*求百位数字*/ ten=a[i]%100/10; /*求十位数字*/ data=a[i]%10; /*求个位数字*/ ab=10*thou+data; /*把千位数字和个位数字重新组成一个新的十位数*/ cd=10*hun+ten; /*把百位数字和十位数字组成另一个新的十位数*/ if(ab%2==1 && cd%2==1 && (ab%5==0||cd%5==0)&& ab!=0 && cd!=0) { /*如果这两个十位数均是奇数并且两个十位数中至少有一个数能被5整除,同时两个新十位数字均不为零*/ b[cnt]=a[i]; /*则把满足条件的数存入数组b中*/ cnt++; } } for(i=0;i〈cnt-1;i++) /*将数组b中的数按从大到小的顺序排列*/ for(j=i+1;j〈cnt;j++) if(b[i]〈b[j]) { data=b[i]; b[i]=b[j]; b[j]=data; } }
解析
本题看起似乎比较繁琐,但只要仔细分析,把思路理清,还是不难解决的。由题意可以列出解题步骤如下:
(1)求得当前所取得的整数的千位、百位、十位、个位上的数字值。可以借助 “/”(除法)与“%” (取余)两个运算符。“thou=a
/1000;hun=a
%1000/100;ten=a
%100/10;data=a
%10;”这4条语句可以依次取得原4位数的千位、百位、十位及个位上的数字值。
(2)按照要求(第一个十位数:新十位数的十位数字是原4位数的千位数字,新十位数的个位数字是原4位数的个位数;第二个十位数:新十位数的十位数字是原4位数的百位数字,新十位数的个位数字是原4位数的十位数字)把求得的各个位上的数字值组成两个新的十位数ab和cd,用“ab=10*thou+data; cd=10*hun+ten;”语句实现。
(3)对新组成的两个十位数进行条件判断(判断条件的语句是“if(ab%2==1&&cd%2=1&& (ab%5==0||cd%5==0)&& ab!=0 && cd!=0)”)。如果满足条件,则把原来的4位数放到数组b中,同时用一个计数器变量cnt求出满足条件的4位数的个数。
(4)对数组b中的4位数用选择法进行从大到小的排序。
转载请注明原文地址:https://kaotiyun.com/show/XRYZ777K
本试题收录于:
三级网络技术题库NCRE全国计算机三级分类
0
三级网络技术
NCRE全国计算机三级
相关试题推荐
下列属于数据库系统阶段特点的是Ⅰ.数据结构化Ⅱ.数据共享性高Ⅲ.独立性高Ⅳ.数据无专门软件管理Ⅴ.冗余度大,不易扩充
下列关于SQLServer2000分布式事务协调服务程序的叙述中,哪一条是不正确的?()A)它是服务器端组件B)它是客户机端组件C)它允许客户的程序在一个事务中对分布在多个服务器上的数据源进行操作D)它能够保证数据库数据的一致性
下面关于函数依赖的叙述中,不正确的是______。
严格两阶段封锁协议要求事务所持有的所有______必须在事务提交后方可释放。
广域网WAN(WideAreaNetwork)也称为远程网,它覆盖的地理范围从几十公里到几千公里,其通信子网主要采用的是【】技术。
在Internet中计算机之间直接利用IP地址进行寻址,因而需要将用户提供的主机名转换成IP地址,这个过程称为域名解析。Internet域名解析有【】和反复解析两种方式。
若关系模式R中只包含两个属性,则
在下列叙述中,错误的是
关系模型是数据库系统最常用的一种数据模型。下列关于关系模型的说法,错误的是()
利用程序模拟脱机输入输出时外围控制机的功能,在主机的直接控制下实现脱机的输入输出功能,此时外围操作与CPU对数据的处理同时进行,这种技术称为()。
随机试题
患儿男,6岁。因发热6天,皮疹1天就诊,病后伴咽痛、纳差、乏力。院外应用多种抗生素治疗效果不佳。查体:T39.7℃,P128次/分,呼吸25次/分,BP108/75mmHg,精神差,咽峡部红肿,扁桃体充血肿大,双侧颌下和颈部可触及数个花生米大小淋巴结
采用汉明码纠正一位差错,若信息位为7位,则冗余位至少应为
胃的特性是
运算放大器应用电路如图所示,在运算放大器线性工作区,输出电压与输入电压之间的运算关系是:
根据《合同法》的规定,下列当事人可以解除合同的情形有()。
合伙协议未约定合伙企业的利润分配和亏损分担比例的,由各合伙人平均分配和分担。()
某工业企业2017年3月1日转让其位于县城的一栋办公楼,取得含税销售收入12000万元,对于该项销售行为企业选择增值税一般计税方法计税。2008年建造该办公楼时,为取得土地使用权支付金额3000万元,发生建造成本4000万元。转让时经政府批准的房地产评估机
甲公司2×16年12月实施了一项关闭C产品生产线的重组义务,重组计划预计发生下列支出:因辞退员工将支付补偿款100万元;因撤销厂房租赁合同将支付违约金10万元;因将用于C产品生产的固定资产等转移至其他车间使用将发生运输费2万元;因对留用员工进行培训将发生支
“温故而知新”体现的迁移类型是
第二代电子计算机所采用的电子元件是()。
最新回复
(
0
)