首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
已知数据文件IN.dat中存有200个四位数,并己调用读函数rData()把这些数存入数组a中,请编写函数spellNum(),其功能是:把个位数字和千位数字重新组成一个新的二位数(新二位数的十位数字是原四位数的个位数字,新二位数的个位数字是原四位数的千位
已知数据文件IN.dat中存有200个四位数,并己调用读函数rData()把这些数存入数组a中,请编写函数spellNum(),其功能是:把个位数字和千位数字重新组成一个新的二位数(新二位数的十位数字是原四位数的个位数字,新二位数的个位数字是原四位数的千位
admin
2010-09-05
46
问题
已知数据文件IN.dat中存有200个四位数,并己调用读函数rData()把这些数存入数组a中,请编写函数spellNum(),其功能是:把个位数字和千位数字重新组成一个新的二位数(新二位数的十位数字是原四位数的个位数字,新二位数的个位数字是原四位数的千位数字),以及把百位数字和十位数字组成另一个新的二位数(新二位数的十位数字是原四位数的百位数字,新二位数的个位数字是原四位数的十位数字),如果新组成的两个二位数一个是奇数,另一个为偶数,并且两个二位数中至少有一个数能被17整除,同时两个新数的十位数字均不为 0,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数count。最后main()函数调用写函数wData(),把结果count以及数组b中符合条件的四位数输出到OUT.dat文件中。
注意:部分源程序已经给出。程序中已定义数组a[200]、b[200],己定义变量count。请勿改动数据文件IN.dat中的任何数据及主函数main()、读函数rData()和写函数wData()的内容。
#include <stdio. h>
#define MAX 200
int a[MAX], b[MAX], count = 0;
void spellNum ( )
{
}
void rData()
{ int i;
FILE *fp;
fp = fopen("IN.dat", "r") ;
for (i=0; i<MAX; i++)
fscanf(fp, "%d,", &a
);
fclose (fp);
}
void wData ()
{ FILE *fp;
int i;
fp = fopen("OUT.dat", "w");
fprintf(fp, "%d\n", count);
for (i=0; i<count; i++)
fprintf(fp, "%d\n", b
);
fclose (fp);
}
void main ()
{ int i;
rData ();
spellNum ();
printf ("满足条件的数=%d\n", count);
for (i=0; i<count; i++)
printf("%d ", b
);
printf ("\n");
wData ();
}
选项
答案
void spellNum() { 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; if (data==0 || hun==0) continue; ab = 10*data+thou; cd = 10*hun+ ten; if ((ab-cd)%2!=0 && (ab* cd)%17==0) { b[count] = a[i]; count++; } } for (i=0; i<count-1; i++) for (j=i+1; j<count; j++) if (b[i] <b[j]) { data = b[i]; b[i] = b[j]; b[j] = data; } } [解题思路] 对于每一个四位数,用这个四位数除以1000,可得到这个四位数千位上的数字输给变量thou;这个四位数对1000求余数然后再除以100,可得到这个四位数百位上的数字输给变量hun;这个四位数对100求余数然后再除以10,可得到这个四位数十位上的数字输给变量ten;这个四位数对10求余数,可得到这个四位数个位上的数字输给变量data。 因为data和hun作为新的两个二位数字的十位上数字,所以其值不能为0,因而在组建两个二位数之前,首先要判断data和hun这两个数字是否为0。然后用逻辑表达式(ab- cd)%2!=0 &&(ab* cd)%17==0来判断新组成的两个二位数是否一个是奇数,另一个为偶数并且至少有一个数能被17整除,如果上述逻辑表达式成立,则这个四位数是符合题目条件的一个数字,把其存入数组b中,同时计数变量count加1。最后利用两重循环对数组b中的数字进行从大到小的排序。
解析
转载请注明原文地址:https://kaotiyun.com/show/quvZ777K
本试题收录于:
三级数据库技术题库NCRE全国计算机三级分类
0
三级数据库技术
NCRE全国计算机三级
相关试题推荐
凡关系模式将导致数据冗余和存储异常,下列条目中属于存储异常问题的有()。Ⅰ.更新异常Ⅱ.插入异常Ⅲ.删除异常
关系代数是一种关系操纵语言,它的操作对象和操作结果均为______。
一个SQL语句原则上可产生或处理一组记录,而主语句一次只能处理一个记录,为此必须协调两种处理方式,这是通过使用_____机制来解决的。
当对视图进行UPDATE,INSERT和DELETE操作时,为了保证被操作的行满足视图定义中子查询语句的谓词条件,应在视图定义语句中使用可选择项【】。
数据库管理系统中的安全控制模块属于______。
在Oracle公司的开发工具Developer/2000中,用于生成联机文档的工具是______。
数据库运行控制功能包括数据的【】控制、【】控制、【】和数据恢复等4个方面。
计算机网络按所涉及的范围大小和计算机之间互联距离的不同,可分为______。
用于视图的数据包含
在Oracle公司的开发工具Developer/2000中,用于生成联机文档的工具是
随机试题
某女,46岁。症见头痛昏重、胸膈痞闷、脘腹胀痛、呕吐泄泻、舌苔白腻。医师诊断为外感风寒、内伤湿滞证,处以藿香正气滴丸。处方组成:苍术160g、陈皮160g、姜厚朴160g、白芷240g、茯苓240g、大腹皮240g、生半夏160g、甘草浸膏2
毛泽东在:1941年精辟论述“实事求是”原则的著作是()
在收购过程中,并购企业主要面临的风险有()
(2012年)甲公司和乙公司均为增值税一般纳税人,适用的增值税税率均为17%。甲公司于2009年9月30日向乙公司销售一批产品,应收乙公司的货款为2340万元(含增值税)。乙公司同日开出一张期限为6个月,票面年利率为8%的商业承兑汇票。在票据到期日,乙公司
王某2016年初需出国工作三年,拟在银行存入一笔钱请朋友分次取出正好付清三年房屋的物业费,每年6月末和12月末各支付3000元,若存款年利率为6%,那么2015年年末王某应在银行存入()元。[已知:(P/A,3%,6)=5.4172,(P/A,6
某市化工企业为增值税一般纳税人,主要业务为生产化妆品。2013年有关生产经营情况如下:(1)外购原材料取得增值税专用发票,支付价款2400元,增值税额408万元,发票已通过认证。(2)销售自产成套化妆品25万件,开具增值税专用发票,取
S公司新研发的产品由于其自身特性,加之公司的大力宣传,广受顾客青睐。该公司所在产业的产品市场增长率很高,虽然现在的相对市场占有率不是很大,但是未来发展的空间很大。根据波士顿矩阵理论,下列关于该产品的说法中正确的有()。
现有带绝缘皮的电线(如图10所示)、红色胶带、蓝色胶带和剪刀。简要说明教师在利用该教具进行演示时应注意的事项。
关于民事诉讼中的调解,下列说法错误的是()。
设直线y=kx与曲线y=所围平面图形为D1,它们与直线x=1围成平面图形为D2.求k,使得D1与D2分别绕x轴旋转一周成旋转体体积V1与V2之和最小,并求最小值;
最新回复
(
0
)