新手的每日一问
#include <stdio.h>int main()
{
int i,j,max =0,temp = 0;
int result = 0;
for (i = 100;i<=999;i++)
{
for(j = 100;j<=999;j++)
{
result = i*j;
while(result)
{
temp = temp*10 + result%10;
result /= 10;
}
if (temp == result)
{
if (temp>max)
{
max = temp;
}
}
else
{
continue;
}
}
}
printf("%d",max);
return 0;
}
为什么我的max 结果始终都是0呢?,不能求出由两个 3 位数乘积构成的回文数{:10_334:}
while(result)
{
temp = temp*10 + result%10;
result /= 10;
}
//在这里,你的result已经是零了
if (temp == result)
那么if语句就无论如何也不会执行,所以max就不会改变
cookies945 发表于 2019-3-1 22:22
while(result)
{
temp = temp*10 + result%1 ...
哦哦哦,谢谢 GumpYu 发表于 2019-3-2 10:04
哦哦哦,谢谢
嗯一起加油学习啊
cookies945 发表于 2019-3-2 10:55
嗯一起加油学习啊
那为什么我增加了一个变量把result替换了之后结果还是等于0
#include <stdio.h>
int main()
{
int i,j,max =0,temp = 0;
int result = 0;
int result_0 = 0;
for (i = 100;i<=999;i++)
{
for(j = 100;j<=999;j++)
{
result = i*j;
result_0 = result;
while(result)
{
temp = temp*10 + result%10;
result /= 10;
}
if (temp == result_0)
{
if (temp>max)
{
max = temp;
}
}
else
{
continue;
}
}
}
printf("%d",max);
return 0;
}{:10_266:} 楼主能不能解释一下 你这每一步的逻辑是干嘛 就单看这部分
while(result)
{
temp = temp*10 + result%10;//这个temp的值 几次循环之后数值就会溢出 而且这个循环设计的意义是干什么?
result /= 10;
} 82457097 发表于 2019-3-3 17:44
楼主能不能解释一下 你这每一步的逻辑是干嘛 就单看这部分
我也没理解这步有什么用。。。你最终输出的max值是和temp值相同的,如果你程序的目的是为了求两个三位数乘积为回文数,那么temp值应该和一开始的result、值是一样的啊,可是你这步应该不可能使temp和一开始乘积的result值相同吧 润木 发表于 2019-3-3 18:32
我也没理解这步有什么用。。。你最终输出的max值是和temp值相同的,如果你程序的目的是为了求两个三位数 ...
得到回文输出的数啊 润木 发表于 2019-3-3 18:32
我也没理解这步有什么用。。。你最终输出的max值是和temp值相同的,如果你程序的目的是为了求两个三位数 ...
{:10_266:}好像是的,我自己脑袋混乱了。。。我还是重新写这个代码{:10_250:}
页:
[1]