我也没搞明白这点,我用你的代码测试了一下,加上一点点的停顿就可以,不停顿结果也是0
#include <stdio.h>
#include <windows.h> // 加了这句,为了使用Sleep
int Upside_Down( int temp ); //用以计算传入值的倒置数
int main(){
int num, upside; //num为要判断的数,upside是其回文数
int i, j, temp, biggest;
for( i = 100 ; i<1000 ; i++ ){
for( j = i ; j<1000 ; j++ ){
num = i*j ; //此处代码可精简,只是没有精简的必要,精简后代码可读性将大大降低
upside = Upside_Down( num );
//printf("正在比对%4d * %4d = %8d和%8d。。。\n", i, j, num, upside);
Sleep(0.000000001); // 加了这句,让IO中断一小会儿
if( num - upside == 0 ){
printf("%8d是回文数!\n", num); // 改了这句,你原来的代码少了num
temp = num ;
if( temp > biggest )
biggest = temp;
}
}
}
printf("最大的由两个三位数的乘积构成的回文数是:%d", biggest);
return 0;
}
int Upside_Down( int temp ){ //用以计算传入值的倒置数
int upside, last;
while( temp ){ //temp不为0则持续循环
last = temp % 10; //取temp的最后一位
temp = temp / 10; //截去最后一位
upside = 10*upside + last; //将最后一位加到逆置数最后
}
return upside;
}
|