马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
话说正好在做第一阶段测试题,最后一题虽然有点脑洞大,但是还是摸索出来了回文数如何判断的代码。但是,当我加入了外部2重循环后,问题就一直无法解决…………
首先,我为了让计算更快,改变了原先的要求,只为了实验代码的正确性。
下面这个代码,是为了求出一个由两个2位数相乘得到的最大的回文数。
给代码:#include <stdio.h>
int main()
{ //num是用来被判定的数,invert是倒置数
int num = 0, huiwen = 0, t = 0, invert = 0, i, j;
for(i = 10; i <= 99; i++)
{
for(j = 10; j <= 99; j++)
{
num = i * j; //用i*j凑出一个num,i和j分别在10~99循环
if(num > huiwen) //判断目前数字是否大于已有的回文数,如果满足再判断是不是回文数
{
t = num; //从这里开始是求倒置数
while(t)
{
invert = invert * 10 + t % 10;
t = t / 10;
}
//倒置数求出于invert
if(invert == num) //如果倒置数和原数字相等,就将数值赋予huiwen
{
huiwen = invert;
}
}
}
}
printf("huiwen = %d\n", huiwen);
return 0;
}
以上代码,中间求倒置数,到判断回文数一段,我自己单独运行过,可以正常工作,能够找出回文数。
但是外部加了2层循环以及一个if判断之后,就出现问题了;不管我如何修改,调试,都无法找到任何回文数……
最后隔断都打印一下各变量的值以后发现,在num=i*j;之后的那个if语句,一直都不会进入……即便里面的条件是真num>huiwen……我没辙了……只好来这里问问,看谁有时间看一下吧。 |