2

作者在 2009-03-14 21:58:15 发布以下内容
还是C语言问题,if(i>=half)

下列程序的功能是:寻找并输出11至999之间的数m,它满足m,m2和m3均为回文数。所谓回文数是指其各位数字左右对称的整数,例如121,676,94249等。满足上述条件的数如m=11,m2=121,m3=1331皆为回文数。请编制函数int jsValue(long n)实现此功能,如果是回文数,则函数返回1,反之则返回0。最后把结果输出到文件out93.dat中。
注意:部分源程序已给出。
请勿改动主函数main()。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int jsValue(long n)
{
    int i;                       /*定义循环控制变量*/
    int str,half;                /*存储字符串的长度*/
    char ch[20];                 /*字符数组,存储每个数的字符串形式*/
    ltoa(n,ch,10);      /*将长整数n转换成与其等价的字符串存入xy指向的字符串中,输出串为十进制*/
    str=strlen(ch);     /*求字符串的长度*/
    half=str/2;
    for(i=0;i<half;i++)
      if(ch[i]!=ch[--str])   /*判断字符串是否左右对称*/
        break;               /*不对称就跳出循环,判断下一个数*/
    if(i>=half)              /*如果字符串是回文*/
      return 1;              /*则返回1*/
    else
      return 0;              /*否则返回0*/
}

void main()
{
long m;
FILE *out;
out=fopen("out93.dat","w");
for(m=11;m<1000;m++)  
    {
     if(jsValue(m) && jsValue(m*m) && jsValue(m*m*m))
       {
        printf("m=%4ld,m*m=%6ld,m*m*m=%8ld\n",m,m*m,m*m*m);
        fprintf(out, "m=%4ld,m*m=%6ld,m*m*m=%8ld\n",m,m*m,m*m*m) ;
       }
    }
fclose(out);
}

默认分类 | 阅读 1623 次
文章评论,共0条
游客请输入验证码
浏览27302次
文章分类