int jsValue(long n) {long int s=0,k; k=n; while(k) { s=s*10+k%10; k/=10; } if(s==n) return 1; if(s!

这是三级上机题的回文问题,题目大概是:寻找并输出11至999之间的数m,它满足m,m2和m3均为回文数while(k)是什么意思,return 1,return 0又是什么意思

t I,strl,half; 定义三个变量
char xy[20]; 定义一个数组
ltoa(n,xy,10); 把参数以10进制格式转换为字符串,存放在xy数组中
strl=strlen(xy); 得到数组长度,就是参数是几位的
half=strl/2; 得到数组中间位置,就是一个数字的中间啦
for(I=0;I<half;I++) 开始循环,只要循环数组长度的一般
if(xy[I]!=xy[--strl]) break; 第一位与相应后面的以为比较,不相等,那肯定就不是回文了,退出
if(I>=half) return 1; 如果循环一直进行,那最后肯定i会大于half,这时就是回文了,并且返回1
else return 0; 不是回文,返回2
}

int jsValue(long n)
{long int s=0,k; 定义两临时变量,s是个关键,用来存放倒置的数据
k=n;
while(k) 当k不为0就一直循环
{ s=s*10+k%10; 如果k=123,s就是321,你仔细研究下,123%10=3,123/10=12
k/=10;
}
if(s==n) return 1; 如果n倒过来还和本身相等,那就是回文了
if(s!=n) return 0; 否则不是
}

不知道这样讲你理解不。还是弄个数字来一步一步算算看,体会一下就明白了
希望你学习愉快!
温馨提示:答案为网友推荐,仅供参考
相似回答