请编制函数int findValue(int outBuf[]),其功能是;在三位整数(100~999)中寻找符合下面条件的整数,并依次从小到大存人数组b中;它既是完全平方数,又有两位数字相同,例如144,676等。 满足该条件的整数的个数通过所编制的函数

admin2012-07-20  22

问题 请编制函数int findValue(int outBuf[]),其功能是;在三位整数(100~999)中寻找符合下面条件的整数,并依次从小到大存人数组b中;它既是完全平方数,又有两位数字相同,例如144,676等。
满足该条件的整数的个数通过所编制的函数返回。
最后调用函数WriteData(int num,int b[])把结果输出到文件OUT.DAT中。
注意;部分源程序已给出。
请勿改动主函数main()和写函数WriteData()的内容。
试题程序;
#include
void WriteData(int,int b[]);
int findValue(int outBuf[])
{
}
void main()
{
  int b[20],hum;
  num=findValue(b);
  WriteData(hum,b);
}
void WriteData(int num,int b[])
{
  FILE*out;
  int i;
  out=fopen("OUT.DAT","w");
  printf("num=%d\n",num);
  fprintflout,"num=%d\n",num);
  for(i=0;i  {
    printf("b[%d]=%d\n",i,b);
    fprintf(out,"b[%d]=%d\n",i,b);
    }
    fclose(out);
}

选项

答案 int findValue(int outBuf[]) { int i,dl,d2,d3,count=0; for(i=10;i*i<1000;i++) { dl=i*i/100; //求该平方数的百位数字 d2=i*i/10%10; //求该平方数的十位数字 d3=i*i%10; //求该平方数的个位数字 if(d1==d2||d2==d3||d3==d1) outBuf[count++]=i*i; } return count; }

解析 本题主要考查数位分解及排序。基本思路是;由于最小的三位数100是10的平方,因此可以从10开始,判断每个数的平方值是否有两位数字相同,直到找到数的平方值大于999,这样既可遍历100~999中所有的平方数,循环中将满足条件的数存入数组outBuf中,由于遍历是从小到大的,因此数组outBuf中的元素已经按升序排列。
转载请注明原文地址:https://jikaoti.com/ti/D8R7FFFM
0

最新回复(0)