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

admin2020-10-21  58

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

选项

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

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

最新回复(0)