求解回文数
本帖最后由 hevv 于 2011-3-7 15:52 编辑所谓回文数是从左至右与从右至左读起来都是一样的数字,如:121是一个回文数。编写程序,求出100—900之间的所有回文数
#include<iostream>
using namespace std;
int main()
{
int Hnum,Tnum,Rnum;
for(Hnum=100;Hnum<=900;++Hnum)
{
Rnum=Hnum;
Tnum=0; //记得每次循环后把该值置零!
do
{
Tnum=Tnum*10+Rnum%10; //这里面不可以直接用hnum参与运算,否则它的值就会被改变,导致循环错误!
Rnum/=10;
} while(Rnum);
if(Hnum==Tnum)
cout<<Hnum<<" ";
}
return 0;
}
这个程序看似简单,但是do-while语句里面的代码却很经典(这个不是我的原创)! 汗……
是在提问不?还隐藏~~ 回复 2# raotf
不隐藏就不隐藏吧! 难道不觉得 程序没有执行效率吗? 本帖最后由 hevv 于 2011-4-9 19:11 编辑
回复 4# LNH_Sniper
那你给点意见!怎么修改
还有 我这个 程序主要是在说明:
do
{
Tnum=Tnum*10+Rnum%10;
Rnum/=10;
}while(Rnum)!
这段代码 是我最为喜欢的地方! 没看懂,惭愧惭愧 #include<stdio.h>
#include<math.h>
void main()
{
int i=1,j=1;
for(int k=1;k<=20;k++)
{
printf("%d %d\n",i,j);
i=i+j;
j=i+j;
}
} while循环表示看不懂 紫烟风云 发表于 2013-3-25 16:42
厉害的{:5_108:} 紫烟风云 发表于 2013-3-25 16:42
斐波那契数列! 我竟然看懂了 #include<stdio.h>
int main(void)
{
int i,j,k;
for(k = 0;k < 10;k++)
{
printf("%d %d\n",i,j);
i = i + j;
j = i + j;
}
} #include<stdio.h>
int main()
{
int a,b,c,count = 0;
for(a=100;a<=900;++a)
{
c=a;
b=0; //记得每次循环后把该值置零!
do
{
b=b*10+c%10; //这里面不可以直接用a参与运算,否则它的值就会被改变,导致循环错误!
c/=10;
} while(c);
if(a==b)
{
count ++;
printf("%-5d",a);
if(!(count % 10))
{
putchar('\n');
}
}
}
return 0;
}
页:
[1]