请用c语言编写程序输出100~999之间的所有回文数。

如题所述

对于三位数来说,只要百位和个位相同就是回文数,根据此思路,写程序如下:

#include<stdio.h>
int main()
{
for(int i=100;i<1000;i++)
{
if(i/100==i%10)
printf("%d ",i);
}
}

希望接纳。^_^o~ 努力!
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-09-28
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

void check (int i)
{
char p[6],q[6];
int length;
register int j,r;

_itoa (i, p, 10); //数字到字符的转化
length = strlen(p); //获得p的长度
r = length; //
q[r] = '\0'; //
r--; //
for (j= 0 ; j<length; j++){ //这一部分将p从后向前逆序拷贝给r(纯属个人习惯)
q[r] = p[j]; //
r--; //
} //
if (!strcmp (p, q)) // 注意strcmp,该函数返回FALSE如果两个字串相等,TRUE如果不相等(我想你的问题可能就在这里)
printf ("%d\n", i);
}

int main()
{
int i;
for (i=100; i<=999; i++)
check(i);
return 0;
}追问

程序运行错误

追答

不好意思,vc下那个可以,wintc就有问题了,我重新弄了一个,你试试:
/*求100到999的回文数*/

#include
#include
#include

void select(char* ,char* );

int main(void)
{
int i,j,k,l;
char a[4],b[4];

for(i = 100;i = 0;j--,k++)
b[k] = a[j];
b[l] = '\0';
select(a,b);
}

return 0;

}

void select(char*a,char*b)
{
if(strcmp(a,b) == 0)
printf("%s\n",a);
}

第2个回答  2011-09-28
#include <stdio.h>
main()
{
int j,k,a[6]={-1,-1,-1,-1,-1,-1},pflag;
long int i,s,p;
for(i=100;i<999;i++)
{ s=i;pflag=1;
for(j=0;s;j++)
{ p=pow(10,j+1);
a[j]=s%p*10/p;
s-=s%p;
}
for(j=0;a[j]!=-1;j++);
if(j!=1)
for(k=0,j--;!(j-k==-1||j-k==0);k++,j--)
if(a[k]!=a[j])pflag=0;
if(pflag)printf("%d\n",i);
}
}
相似回答