| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
兄弟姐妹们,有人能帮我看一下,为什么我写的这段代码出来的结果是0呢???   
 
原题目如下图: 
 
 
我写的代码如下: 
- #include<stdio.h>
 
  
- int main()
 
 - {
 
 -     int i, j, num, num0 = 0, temp, max = 0;
 
  
-     for(i = 10; i < 100; i++)
 
 -     {
 
 -         for(j = 10; j <= i; j++)
 
 -         {
 
 -             num = i * j;
 
 -             temp = num;
 
  
-             while(temp)//求该数的倒置数
 
 -             {
 
 -                 num0 = num0 * 10 + temp % 10;
 
 -                 temp /= 10;
 
 -             }
 
  
-             if(num0 == num)//判断是否回文数
 
 -             {
 
 -                 if(max < num)
 
 -                 {
 
 -                     max = num;
 
 -                 }
 
 -             }
 
 -         }
 
 -     }
 
  
-     printf("最大的由三位数乘积构成的回文数是:%d\n", max);
 
  
-     return 0;
 
 - }
 
 
  复制代码 
 
 本帖最后由 jackz007 于 2021-1-13 21:47 编辑 
- #include <stdio.h>
 
  
- int foo(int n , int * a , int * b)
 
 - {
 
 -         int d , e , i , j , r                                    ;
 
 -         for(r = d = 0 , e = n ; e ; e /= 10) d = d * 10 + e % 10 ;
 
 -         if(d == n) {
 
 -                 for(i = 100 ; i * i < n + 1 ; i ++) {
 
 -                         if(! (n % i)) {
 
 -                                 j = n / i                        ;
 
 -                                 if(i > 99 && i < 1000 && j > 99 && j < 1000) {
 
 -                                         * a = i                  ;
 
 -                                         * b = j                  ;
 
 -                                         r = 1                    ;
 
 -                                         break                    ;
 
 -                                 }
 
 -                         }
 
 -                 }
 
 -         }
 
 -         return r                                                 ;
 
 - }
 
  
- int main(void)
 
 - {
 
 -         int i , j , k                                            ;
 
 -         for(k = 999 * 999 ; k > 99 * 99 ; k --) {
 
 -                 if(foo(k , & i , & j)) {
 
 -                         printf("%d = %d * %d\n" , k , i , j)     ;
 
 -                         break                                    ;
 
 -                 }
 
 -         }
 
 - }
 
  复制代码
        编译、运行实况
 - D:\00.Excise\C>g++ -o x x.c
 
  
- D:\00.Excise\C>x
 
 - 906609 = 913 * 993
 
  
- D:\00.Excise\C>
 
  复制代码
        你算出来和这个答案一样吗? 可以肯定地说,906609 一定是所有两个 3 位数乘积所得回文数中最大的那一个。  
 
 
 |   
 
 
 
 |