|
20鱼币
本帖最后由 坦然自若 于 2019-7-23 11:19 编辑
#include <stdio.h>
int main()
{
int i, j, target, invert, num; //i是较大的那个三位数,j是较小的三位数
for (i = 999; i >= 100; i--)
{
for (j = 999; j >= 100; j--)
{
//求倒置数
target = i * j;
num = target;
invert = 0;
while (target)
{
invert = invert + target % 10;
target /= 10;
}
if (num == invert) //如果倒置数和原数一样用goto语句跳出循环
{
goto findit;
}
}
}
findit: printf("%d*%d=%d\n", i, j, num);
return 0;
}
不知道哪里错了,恳请哪位大神帮忙
本帖最后由 一木之禾 于 2019-7-23 11:44 编辑
我看来有两个问题,首先,invert你是想保存倒置的数,那样的话,每次加上target的末位数之前,应该先乘以10来达到移位。
其次,根据修改过上面这个问题之后的程序的结果来看,答案还是不对,原因是原数末尾可能是0,倒置之后再判断是否回文就显然不对了。至于怎么判断回文,你再思考思考。
另外,以后提问还是应该把代码放在代码框里,注意代码规范。
- while(target){
- invert = invert +target % 10;
- invert = invert*10;
- target /=10;
- }
复制代码
|
最佳答案
查看完整内容
我看来有两个问题,首先,invert你是想保存倒置的数,那样的话,每次加上target的末位数之前,应该先乘以10来达到移位。
其次,根据修改过上面这个问题之后的程序的结果来看,答案还是不对,原因是原数末尾可能是0,倒置之后再判断是否回文就显然不对了。至于怎么判断回文,你再思考思考。
另外,以后提问还是应该把代码放在代码框里,注意代码规范。
|