|
发表于 2022-2-13 16:02:34
|
显示全部楼层
我也没搞明白这点,我用你的代码测试了一下,加上一点点的停顿就可以,不停顿结果也是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;
- }
复制代码 |
|