下列程序的功能是:在3位整数(100至999)中寻找符合下面条件的整数,并依次从小到大存入数组b中:它
下列程序的功能是:在3位整数(100至999)中寻找符合下面条件的整数,并依次从小到大存入数组b中:它既是完全平方数,又有两位数字相同,例如144,676等。
请编制函数int jsValue(int bb[])实现此功能,满足该条件的整数的个数通过所编制的函数返回。
最后调用函数wfiteDat()把结果输出到文件OUTl2.DAT中。
注意:部分源程序已给出。
请勿改动主函数main()和写函数wnteDat()的内容。
试题程序:
include<stdio.h>
int jsValue(int bb[ ]
{
}
main ( )
{
int b[20], num;
num= jsValue(b);
writeDat (num, b);
}
writeDat(int num, int b[])
{
FILE *out;
int i;
ut = fopen("OUT12.DAT", "w");
fprintf(out, "%d\n", num);
for(i = 0; i <num; i++)
fprintf(out, "%d\n", b[i]);
fclose (out);
}
int isValue(int bb[]) { int i,j,k=0; int hun,ten,data; for(i=100;i=999;i++) { j=10; while(i*j=i) { if(i==i*j) /*如果该数是完全平方数*/ } hun=i/100; /*求该数的百位数字*/ data=i-hun*100; /*得到后两位数*/ ten=data110; /*求该数的十位数字*/ data=data-ten*10; /*求该数的个位数字*/ if(hun==ten || hun==data || ten==data)/*有两位数字相同*/ {bb[k]=i; /*则把该数存入数组bb中*/ k++;} /*统计满足条件的数的个数*/ } j++; } } return k; /*返回满足该条件的整数的个数*/ } 解析:解答本题,首先应该考虑用一个for循环来依次取得100到999之间的各个数,并对当前所取得的数进行两个条件判断:一是判断该数是否是完全平方数:二是判断该数是否有两位数字相同。如果以上两个条件同时满足,则把该数存放到b数组中,尽管题目要求所存的数必须从小到大,但我们取数的过程本身就是从小到大取得,因此,排序工作是没有必要做的,按照取数的顺序,把满足条件的数值存放到数组b中就可以了。判断某个数是否是完全平方数的方法是看该数是否可以拆成完全相同的两个数的积(当然要拆成的两个数一定是两位数),因此,我们再利用一个循环用10以上的两位数逐个去拆被判断的数,如果被判断的数恰好可以被完全拆分,则第一个条件成立,接着就开始依次取得被判断的数的百位、十位、个位上的数字值,看是否有两位数字相同。取得每一位上的数字值可以用“hun=i/100;data=i-hun*100: ten=data/10;data=data-ten*10:”几条语句来实现,hun变量得到的是百位上的数字,ten变量得到的是十位上的数字,data变量得到的是个位上的数字。
如何实现在Excel表的一组数据中找出任意几个数相加等于指定数据的?或者等于另外一个表中的任意几个 其他 2020-05-16 …
1.2.6.42.1806.从给你的这五个数字中找出规律猜出第六给数字 数学 2020-06-06 …
数学中找规律的题怎么做有什么方法例如:2、5、8、11……第N个数为?类似这样得题我的意思是这样大 其他 2020-06-08 …
英语翻译顾名思义,数据挖掘就是从大量的数据中挖掘出有用的信息.它是根据人们的特定要求,从浩如烟海的 英语 2020-06-26 …
在excel中,如何从一列数据中,找出8个不同的数据比如在A列中,从A1-A50里有50个数据,这 其他 2020-07-09 …
如何从给出的这组数字中找出几个数相加等于93743.66,984.0012,189.60-2.85 其他 2020-07-09 …
排列组合问题在6个数字中找4个进行排列,C64=15,如果假设这6个数字为123456,那其中这1 数学 2020-07-10 …
请在下列十五组数据中找出5个数字并满足以下条件:见[问题补充]请在下列十五组数据中找出5个数字并满 数学 2020-07-11 …
用156可以排成哪些三位数?这些数中哪些数既含有质因数3又含有质因数5?哪些数既含有质因数2又含有 数学 2020-07-18 …
哪位帮忙,什么叫“非平凡过程”?在数据挖掘中有这一个定义,数据挖掘是知识发现过程中的一个主要步骤, 数学 2020-07-20 …