补充函数,要求实现如下功能:寻找并输出11~999之间的数m,它满足m,m2,m3均为回文数(回文数是指各位数字左右对称的整数),例如12321,505,1458541等。满足上述条件的数如m=11时.m2=121,m3=1331都是回文数。请编写jsVa

admin2013-12-17  39

问题 补充函数,要求实现如下功能:寻找并输出11~999之间的数m,它满足m,m2,m3均为回文数(回文数是指各位数字左右对称的整数),例如12321,505,1458541等。满足上述条件的数如m=11时.m2=121,m3=1331都是回文数。请编写jsValue(1ong m)实现此功能。如果是回文数,则函数返回1,不是则返回0。最后。把结果输出到文件out.dat中。
    注意:部分源程序已经给出。
    请勿改动主函数Main()中的内容。
    试曩程序:
    #include
    #include
    #include
    int jsValue(10ng n)
    {
    }
    main()
    {
    long m;
    FILE*out;
    out=fopen(“out.dat”,“W”);
    for(m=11;m<1000l m++)
    if(jsValue(m)&&jsValue(nl*m)&&jsValue
    (m*m*m))
    {
    printf(“m=%41d,m*m=%61d,m*m*m
    =%81d\n”,m,m*m,m*m*m);
    fprintf(out,“m=%41d,m*m=%61d,m*m*
    m=%81d n”,m.m*m,m*m*m);
    }
    fclose(out);
    }

选项

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

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

最新回复(0)