首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
已知数据文件IN56.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsVal(),其功能是:把千位数字和十位数字重新组合成一个新的十位数 (新十位数的十位数字是原4位数的千位数字,新十位数的个位数字是原4
已知数据文件IN56.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsVal(),其功能是:把千位数字和十位数字重新组合成一个新的十位数 (新十位数的十位数字是原4位数的千位数字,新十位数的个位数字是原4
admin
2009-02-19
30
问题
已知数据文件IN56.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsVal(),其功能是:把千位数字和十位数字重新组合成一个新的十位数 (新十位数的十位数字是原4位数的千位数字,新十位数的个位数字是原4位数的十位数字),以及把个位数和百位数组成另一个新的十位数(新十位数的十位数字是原4位数的个位数字,新十位数的个位数字是原4位数的百位数字),如果新组成的两个十位数均为素数且新十位数字均不为零,则将满足此条件的4位数按从大到小的顺序存入数组b中,并要计算满足上述条件的4位数的个数cnt,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT56.DAT文件中。
注意:部分源程序已给出。
程序中已定义数组:a[200],b[200],已定义变量:cnt。
请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。
试题程序:
#include
#define MAX 200
int a[MAX],b[MAX],cnt=0;
int isprime(int m)
{
int i;
for(i=2;i<=m/2;i++)
if(m%i==0) return 0;
return 1;
}
void isval()
{
}
void readDat( )
{
int i;
FILE *fp;
fp=fopen("IN56.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\n",b
);
printf("\n");
writeDat();
}
writeDat()
{
FILE *fp;
int i;
fp=fopen("OUT56.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+ten; /*把千位数字和十位数字重新组合成一个新的十位数*/ cd=lO*data+hun; /*把个位数和百位数组成另一个新的十位数*/ if(isprime(ab)&&isprime(cd)&&ab!=O&&cd!=0) /*如果新组成的两个十位数均为素数且新十位数字均不为零*/ { b[cnt]=a[i]; /*把满足条件的数存入数组b中*/ cnt++; /*统计满足条件的数的个数*/ } } for(i=0;i<cnt-1;i++) /*将满足此条件的4位数按从大到小的顺序存入数组b中*/ for(j=i+1;j<cnt;j++) if(b[i]<b[j]) { data=b[i]; b[i]=b[j]; b[j]=data; } }
解析
本题考查的知识点如下:
(1)将4位数各位上的数拆分为独立的数字。
(2)循环结构的使用。
(3)判断结构中多个条件的布尔运算。
在本题中,首先要将4位数各位上的数字拆分为独立的数字。这要借助运算符“%”(取余)与“/”(整除)。将一个4位数整除1000则可得到其千位上的数字,除以1000取余再整除100则可得百位上的数字,除以100取余再整除10则可得十位上的数字,除以10取余则得个位上的数字。求得各位上的数字后,就可以重新组合进行比较。题中已给出判断素数的函数,只要带入求出数据即可。各条件必须同时满足,所以田“与”运算。题中要求将符合条件的数按从大到小的顺序存入数组b,可以先将符合条件的数存入数组b/再对数组b进行排序。排序使用“选择排序法”。
转载请注明原文地址:https://kaotiyun.com/show/5ZcZ777K
本试题收录于:
三级数据库技术题库NCRE全国计算机三级分类
0
三级数据库技术
NCRE全国计算机三级
相关试题推荐
Windows98虽然只支持单处理器结构的PC机,但它通过提供虚拟机、进程和线程等机制,能很好地支持多道程序在PC机中的运行。下面有关Windows98处理器管理的叙述中,正确的是( )。
为了使AX和BX寄存器中的两个16位二进制数具有相同的符号位,下面的程序段中应填写什么指令? PUSH AX __________ TEST AX,8000H JZ SAME XOR BX,8000H SAME:POP
下面关于IEEE-1394的叙述中,错误的是( )。
在Windows98中,系统注册表由3个文件构成(即注册表数据分存在3个文件中),它们分别是Config.pol、System.dat和【】。
IEEE802.11是无线局域网采用的通信协议标准,其中IEEE802.11g是目前比较广泛采用的一种,它的数据传输速率最高可以达到______Mb/s。
把高级程序设计语言编制的源程序转换成机器能执行的程序,这是由【 】系统软件完成的。
下面是关于过程调用和宏调用的叙述,其中( )是正确的。
下面一段程序要实现的功能是:在内存中从地址SOURCE开始有一个长度为50的字符串,测试该字符串中是否存在数字,如有则将DL的第三位置1,否则将该位置0。 BEGIN: MOV CX,50 MOV S
以下叙述中错误的是( )。
CCD芯片的像素数目是数码相机的重要性能指标,它与可拍摄的图像分辨率有密切的关系。假定一台200万像素数码相机,它所拍摄的像片能达到的最大分辨率是多少?______
随机试题
真人养脏汤的药物组成有
A.同步直流电除颤B.非同步直流电除颤C.静脉注射阿托品、肾上腺素D.静脉注射异丙肾上腺素E.高压氧对于心搏停顿,为迅速恢复有效心律,应用
A.保健食品B.医疗器械C.化妆品D.药品不以治疗疾病为目的,但具有调节机体功能,用于特定人群食用的是
中标通知书发出后,招标人与中标人订立合同,订立合同前,中标人应当提交()。
发展高新技术及利用高新技术改造传统产业,淘汰落后生产技术与能力,其核心目的在于推动()。
产品缺货频率、满足率和发出订货的完成情况三个性能指标被认为是物流客户服务基本特点中的()。
根据图1、图2回答问题经初步核算,全年生产总值为2710.28亿元,按可比价格计算,比上年增长13.7%,这一增速为1985年以来最快增长水平。三次产业实现全面增长,其中,第一产业增加值为455.67亿
在永恒“变化”的过程中,有的东西是要永恒坚持的,那就是学习方法论和颖悟性,还有“做人”。上面这段话主要支持了这样一种观点,即()。
howpupilsaretreatedinschoolswithyoungpeoplefarfromlookatA.wemust(68)______theinsecuritythatparentshaveforth
在考生文件夹下“samp3.accdb”数据库中已经设计好表对象“tStudent”和“tGrade”,同时还设计出窗体对象“fGrade”和“fStudent”。请在此基础上按照以下要求补充“tStudent”窗体的设计:在“fStudent”窗体打
最新回复
(
0
)