第7题
下列程序的功能是:在三位整数(100至999)中寻找符合条件的整数并依次从小到大存入数组中;该整数既是完全平方数,又有两个数字相同,例如144、676等。
请编制函数jsValue()实现此功能,满足该条件的整数的个数是通过所编制的函数返回。
最后调用函数writeDat()把结果输出到文件out7.dat中。
请勿改动主函数main()和写函数writeDat的内容。
}
main()
{
int b[20],num;
num=jsValue(b);
writeDat(num,b);
clrscr();
}
writeDat(int num,int b[])
{
FILE *out;
int i;
out=fopen("out7.dat","w");
printf("%d\n",num);
fprintf(out,"%d\n",num);
for(i=0;i
fprintf(out,"%d\n",b[i]);}
fclose(out);
}
【答案】
jsValue(int bb[])
{
int i,j,k=0;
int hun,ten,data;
for(i=100;i<=999;i++)
{
j=10;
while(j*j<=i)
{
if(i==j*j)
{
hun=i/100;data=i-hun*100;
ten=data/10;data=da
第7题
下列程序的功能是:在三位整数(100至999)中寻找符合条件的整数并依次从小到大存入数组中;该整数既是完全平方数,又有两个数字相同,例如144、676等。
请编制函数jsValue()实现此功能,满足该条件的整数的个数是通过所编制的函数返回。
最后调用函数writeDat()把结果输出到文件out7.dat中。
请勿改动主函数main()和写函数writeDat的内容。
}
main()
{
int b[20],num;
num=jsValue(b);
writeDat(num,b);
clrscr();
}
writeDat(int num,int b[])
{
FILE *out;
int i;
out=fopen("out7.dat","w");
printf("%d\n",num);
fprintf(out,"%d\n",num);
for(i=0;i<num;i++)
{printf("%d\n",b[i]);
fprintf(out,"%d\n",b[i]);}
fclose(out);
}
【答案】
jsValue(int bb[])
{
int i,j,k=0;
int hun,ten,data;
for(i=100;i<=999;i++)
{
j=10;
while(j*j<=i)
{
if(i==j*j)
{
hun=i/100;data=i-hun*100;
ten=data/10;data=data-ten*10;
if(hun==ten||hun==data||ten==data)
{bb[k]=i;k++;}
}
j++;
}
}
return k;
}
【解析】
考点:(1)在给定范围内按指定条件进行查找和筛选;
(2)对筛选后的结果进行排序处理。
本题的解题思路是:逐个判断100~999中的数字是否为完全平方数,若是完全平方数则将其各个位上的数字分离出来进行比较筛选,若有两个数字相同则将其存入数组bb中。判断是否为完全平方数,可以通过检索比其自身小的数的平方值,若有相等的,则是完全平方数,否则不是完全平方数。筛选数据可以通过一个if语句来实现。通过此算法处理后,不用再对数组bb进行排序,数组bb中的元素已经按升序排序。读者可以分析其中的道理。
程序的流程是:首先调用jsValue()函数,并将数组b作为参数传递给jsValue()函数,然后调用writeDat()函数将处理的结果写入文件out7.dat中。
在jsValue()函数中,首先通过参数接收数组b的首地址,用于以后存放处理好的数据。题目要求查找100~999之间的数据,故程序执行for循环(i=1000时循环结束),赋j的初值为10,当j*j<=i,即i有可能是一个完全平方数时,while循环的条件成立,当j*j>i时while循环结束,即i不可能是一个完全平方数。
内嵌if语句的功能是进一步判断i是否为一个完全平方数,当if语句条件成立时,以下四条语句的功能是将数据i分解,i/100得到百位上的数字,i-hun*100得到十位和个位上的数字,data/10得到十位上的数字,data-ten*10得到个位上的数字,接下来if语句的功能是对分离后的数字进行判断,如果百位与十位相等或者百位与个位相等,或者十位与个位相等时,即有任意两位数字相等,就把当前数字i存入到数组bb中,并且k加1,while循环结束,j加1进入下一次for循环。for循环结束后,将k返回。函数结束。
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |