我完全陷入困境,在此代码中,此代码旨在 查找由两个3位数字的乘积制成的最大回文。 我有书面代码:
#include <stdio.h>
void main ()
{
unsigned long long int mul = 1, temp = 0, reverse = 0, pelindromenum=0;
int i, j;
for (i=100;i <=999;i++)
{
for(j=i;j<=999;j++)
{
mul = i*j;
temp = mul;
while (temp != 0)
{
reverse = reverse * 10;
reverse = reverse + temp%10;
temp = temp/10;
}
if (reverse == mul)
{
if (pelindromenum <= mul)
{
pelindromenum = mul;
}
}
}
}
printf ("%llu", pelindromenum);
}
它给了outut 0.我无法理解为什么它给0,我经历了很多次代码但是我找不到任何问题请帮帮我。
由于
答案 0 :(得分:1)
在计算完第一个后,你永远不会将reverse
重置为0,所以你永远不会发现任何回文。
答案 1 :(得分:1)
您没有在循环中重置reverse
。所以在第一次迭代后它就是垃圾。
在reverse = 0;
阻止之前添加while (temp!=0)
。
答案 2 :(得分:0)
你在代码中间乘以0,就是这样。
答案 3 :(得分:0)
此外,您实际上并未将pelindromenum
初始化为零。
unsigned long long int mul = 1, temp = 0, reverse = 0, pelindromenum;=0