|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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 位数乘积所得回文数中最大的那一个。
|
|