请编制函数int checkValue(1ong n),其功能是:寻找并输出11至999之间的数m。它满足m,m2和m3均为回文数。所谓回文数是指其各位数字左右对称的整数,例如121.222,94249等。满足上述条件的数如m=11,m2=121,m3=1

admin2021-09-09  35

问题 请编制函数int checkValue(1ong n),其功能是:寻找并输出11至999之间的数m。它满足m,m2和m3均为回文数。所谓回文数是指其各位数字左右对称的整数,例如121.222,94249等。满足上述条件的数如m=11,m2=121,m3=1331皆为回文数。实现此功能,如果是回文数,则函数返回1,反之则返回0。最后把结果输出到文件OUT.DAT中。
    注意:部分源程序已给出。
    请勿改动主函数main()。
    试题程序:
    #include
    #include
    #include
    int checkValue(1ong n)
    {
    }
    void main()
    {
    long m;
    FILE*out;
    out=fopen(“OUT.DAT”,“w”);
    for(m=11;m<1000;m++)
    {
    if(checkValue(n1)&& checkValue(m*m)
    &&checkValue(m*m*m))
    {
    printf(“m=%4ld,m*m=%61d,m*m*m
    =%81d\n”,m,m*m,m*m*m);
    fprintf(OUt,“m=%4ld,m*m=%61d,m*
    m*m=%81d\n”,m,m*m,m*m*m);
    }
    }
    fclose(out);
}

选项

答案int checkValue(1ong n) { int i,strl,half; char xy[20]; hoa(n,xy,10); strl=strlen(xy); half=strl/2; for(i=0;i=half) return 1; else return 0; }

解析 本题将长整型n转换成为字符串存入数组xx中,取出字符串的长度,循环到字符串的中部,依次比较相时位置字符。如果碰到某一对不相同就跳出循环,此时如果i>=half,证明循环自然结束,返回1,n是回文教,否则循环是强制跳出,证明至少有一对字符不相同所以返回0,n不是回文数。
转载请注明原文地址:https://kaotiyun.com/show/TSOZ777K
0

随机试题
最新回复(0)