c语言写程序,求100到9000之内的回文数。(用双重循环)

如题所述

(1)

#include "stdio.h"
#include "stdlib.h"
#include <string.h>
int main(void){
    int i;
    char a[5];
    for(i=101;i<9000;i++)
        if(i==atoi(strrev(itoa(i,a,10))))
            printf("%d ",i);
    printf("\n");
    return 0;
}

(2)

#include "stdio.h"
int main(void){
    int i,j,k;
    for(i=101;i<9000;i++){
        for(j=i,k=0;j;k++,j/=10);
        if(k==3 && i/100==i%10 || k==4 && i/1000==i%10 && i/100%10==i/10%10)
            printf("%d ",i);
    }
    printf("\n");
    return 0;
}

追问

谢谢,不过暂时我还看不懂你写的😱

追答

第一个是把数字变成字符串,然后把字符串倒过来,再把这个倒了的字符串变成数字,若与原来数字相等则为回文数。
第二个你应该看懂,否则这题你就无法做下去了。这代码的原理是先测数字位数,若是3位(k==3时),则比较一下个位和百位,若是4位(k==4),则要分别比较个位和千位以及十位和百位,若它们的比较结果是相等的则是回文数。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-04-07
对于三位数来说,只要百位和个位相同就是回文数,根据此思路,写程序如下: #include int main() { for(int i=100;i追问

那四位数怎么办?

各位和千位相同,十位和百位相同?

本回答被提问者和网友采纳