求回文数之里面的循环套循环
这个while循环是怎么进行的呀,可以详细讲讲嘛
它是b满足什么条件的时候停止循环

上面的代码,主要思路是先将m和n比较,将m修改为二者之中较小的数,n修改为二者之间较大的数,然后遍历区间m和n之间的每个整数,分别计算每个数的逆序数,循环结束再比较每个数和其逆序数是否相同,如果相同,则当前这个数就是回文数,然后就打印它的值。
测试代码如下:
#include <stdio.h>
void hw(int m,int n){
int t,i,a,b;
// 这个if用于将m设置为m和n之间较小的数,n设置为m和n之间较大的数,这样方便后面for循环遍历m和n区间的每个整数
if(m>n){
t=m;
m=n;
n=t;
}
// 遍历区间m和n之间的每个整数
for(i=m;i<=n;i++){
a=0; // a用于存储当前整数i的逆序数,每次计算前赋值为0
b=i; // 将b赋值为当前遍历到的整数i,以用于计算当前整数i的逆序数
while(b){ // 如果当前的整数b不为0,则循环提取b的剩余位上的整数,以计算i的逆序数,如果b为0,则退出while循环
a=a*10+b%10; // 依次从b的个位提取到最高位,然后逐步组成i对应的逆序数,再赋值到到变量a中
b=b/10; // b除以10,以便计算b的下一个数位上的数字
}
if(a==i){ // 如果i的逆序数和i相等,则i是回文数,就打印i的值,如此即可打印出区间m和n之间的所有回文数
printf("回文数有%d\n",i);
}
}
}
int main(void){
int m,n;
printf("请输入m和n的值:");
scanf("%d%d",&m,&n);
hw(m,n);
return 0;
}
