2 kid 0203 kid_0203 于 2016.02.15 14:39 提问

求助c语言回文数问题~~~

图片说明
图片说明

 #include<stdio.h>
int main()
{
    int i,t=0,s=0;
    for(i=1000;i<10000;i++,s=0,t=0){
        t=i;
        while(t){
            s=s*10+t%10;
            t/=10;
        }
        if(s==i) printf("%d",i);
    }
    return 0;
} 

结果是0分......
请问哪里错了

8个回答

leilba
leilba   Rxr 2016.02.15 15:08
已采纳

每个输出是不是需要一个换行呢?

 #include<stdio.h>
int main()
{
    int i,t=0,s=0;
    for(i=1000;i<10000;i++,s=0,t=0){
        t=i;
        while(t){
            s=s*10+t%10;
            t/=10;
        }
        if(s==i) printf("%d\n",i);
    }
    return 0;
} 
caoczy
caoczy   2016.02.15 15:16

请问这个是哪个网站?

wangzhiyu1980
wangzhiyu1980   2016.02.15 15:30

这是你程序的输出:估计这么一大串评分系统没法识别了
10011111122113311441155116611771188119912002211222222332244225522662277228822992
30033113322333333443355336633773388339934004411442244334444445544664477448844994
50055115522553355445555556655775588559956006611662266336644665566666677668866996
70077117722773377447755776677777788779978008811882288338844885588668877888888998
9009911992299339944995599669977998899999

xianfajushi
xianfajushi   2016.02.15 16:41

就运行结果没问题,若吹毛求疵来看,似乎循环内t=0是没必要的。
似乎问题不在运行结果上,是否分毫不差复制?自然复制比任何弹指神功都快!写程序似乎不需要弹指神功!

xianfajushi
xianfajushi   2016.02.15 16:46

程序算法都没错,改if(s==i) printf("%6d",i);

fengdian29147001
fengdian29147001   2016.02.15 16:50

s每次都需要初始化的

fengdian29147001
fengdian29147001 据我观察初始化S后,应该不会错
接近 2 年之前 回复
u011924467
u011924467   2016.02.15 17:01

算法复杂度太高了,也就20个,千位和个位取1-9,百位和十位取0-9即可。

qq_30076791
qq_30076791   2016.02.15 18:38

输出需要换行——\n。
这个题其实两个for穷举就可以了。
#include

int main()

{

int i,j;

for(i=1; i<=9; i++)

for(j=0; j<=9; j++)

printf("%d%d%d%d\n",i,j,j,i);

return 0;

}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!