求助 这个程序为啥运行不出结果
#include<stdio.h>int main()
{
int i,j,a,c,d=0;
for(i=100;i<1000;i++)
{
for(j=100;j<1000;j++)
{
a=i*j;
while(a)
{
d=d*10;
c=a%10;
d=d+c;
a=a/10;
}
if(d==a)
printf("%d",a);
}
}
return 0;
} 判断三位数两数的乘积是否为回文数并输出
ydww 发表于 2019-10-26 18:33
判断三位数两数的乘积是否为回文数并输出
没输出说明d一直不等于a。可能你判断回文数的方式有问题。
可以查一查如何判断回文数。我这里可以给你写个例子。
#include<stdio.h>
bool Test( int a )
{
int c = 0;
if( a % 10 == 0 )
return false;//除去100这种最后一位是零的整数,它们不是回文数
//此处可以只计算这个数字的一半,如121这个数,如果前一半和后一半一致,那么就是一个回文数。
//c表示反转后数字的前一半
while( a > c )
{
c = c * 10 + a % 10;
a = a/10;
}
return ( (a == c) || ( a == c / 10 ) );
}
int main()
{
int a;
for(a=1;a <= 500; a++)
{
if( Test(a) )
{
printf("%d\n", a);
}
}
return 0;
}
haha_1 发表于 2019-10-26 22:55
没输出说明d一直不等于a。可能你判断回文数的方式有问题。
可以查一查如何判断回文数。我这里可以给你写 ...
我知道了,a通过循环之后就变了,应该循环前把啊赋值给另一个变量,让它循环。
谢谢
页:
[1]