首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
已知数据文件IN26.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中。请编制一函数jsVal(),其功能是:把千位数字和个位数字重新组成一个新的十位数(新十位数的十位数字是原4位数的千位数字,新十位数的个位数字是原4位数的
已知数据文件IN26.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中。请编制一函数jsVal(),其功能是:把千位数字和个位数字重新组成一个新的十位数(新十位数的十位数字是原4位数的千位数字,新十位数的个位数字是原4位数的
admin
2009-02-24
45
问题
已知数据文件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://www.kaotiyun.com/show/XRYZ777K
本试题收录于:
三级网络技术题库NCRE全国计算机三级分类
0
三级网络技术
NCRE全国计算机三级
相关试题推荐
存储管理的目的是实现
典型的局域网可以看成由以下三部分组成:网络服务器、工作站与________。
第(38)至(41)题基于"学生-选课-课程"数据库中的三个关系:S(S#,SNAME,SEX,AGE),SC(S#,C#,GRADE),C(C#,CNAME,TEACHER)若要求查找选修"数据库技术"这门课程的学生姓名和成绩,将使用关系
文件系统提供按名存取功能,要求用户在读文刊:之前调用【】文件操作。
下列关于异步传输模式ATM技术的叙述中,哪一条是不正确的?
关系模型有三类完整性约束:实体完整性、参照完整性和用户定义的完整性。定义外键实现的是哪(些)类完整性?()
习惯上,CPU与哪个部件组成了计算机的主机?
按行优先顺序存下三角矩阵的非零元素,则计算非元素aij(1≤j≤i≤n)的地址的公式为
把关系看做二维表,则下列说法中错误的是
在数据库技术中,实体一联系模型是一种
随机试题
夫妻日常家事代理权
某外商投资企业的记账本位币为人民币,该企业收到外商作为实收资本投入的固定资产一台,协议作价为110万美元,当日的市场汇率为1美元=6.50元人民币。投资合同约定汇率为1美元=7.00元人民币。另发生运杂费2万元人民币,进口关税5万元人民币,安装调试费3万元
男,26岁,5天来鼻及牙龈出血,皮肤淤斑。血红蛋白55g/L,白细胞10.0×109/L,血小板16×109/L。骨髓增生极度活跃,绝大多数细胞呈清一色,胞浆内有大小不等颗粒及成堆Auer小体,过氧化酶染色强阳性。最可能的诊断是
我国统计调查以()为补充,搜集、整理基本统计资料。
某印刷企业非法印制完税凭证,除由税务机关责令改正外,根据情节轻重,可能实施的惩罚措施有()。
根据《保险法》,保险人法定解除保险合同的情形包括()。
面试的发展趋势有()。
某社区通过听证会形成了社区绿化空间使用方案。这一自治方式属于()。
MissGreenhadto______.Whenshereturnedfromthemeeting,MissGreenfound______herlesson.
Partofthefundswillbeusedto______thatoldlibrarytoitsoriginalsplendor.
最新回复
(
0
)