1. 程式人生 > >C語言:輸入一個不確定位數的正整數,把位數翻轉出來!

C語言:輸入一個不確定位數的正整數,把位數翻轉出來!

Code:
  1. /*給一個正整數,要求: 
  2. 1.求出它是幾位數; 
  3. 2.分別輸出每一位數字; 
  4. 3.按逆序輸出各位數字, 
  5. */
  6. #include <stdio.h>
  7. #include <math.h>
  8. void main()  
  9. {  
  10.     int a,b,c,d,i=0;  
  11.     int sum = 0;  
  12.     int *p = newint[];  
  13.     printf("請輸入一個數:");  
  14.     scanf("%d",&a);  
  15.     //判斷這個數字的位數;
  16.     do {  
  17.         i++;  
  18.         p[i] = a%10;  
  19.         a = a/10;  
  20.     } while(a != 0);  
  21.     //輸出動態陣列中的值
  22.     d =i;  
  23.     while(d!=0){  
  24.         printf("%d,",p[d]);  
  25.         d--;  
  26.     }  
  27.     printf("這個數的位數是:%d/n",i);  
  28.     //反串打印出這個數值,用到pow函式pow(x,y)-->x的y此方;
  29.     for(c=1;c<=i;c++){  
  30.         b = pow(10,c-1);  
  31.         sum = b*p[c] + sum;  
  32.         printf("%d/n",sum);  
  33.     }  
  34.     delete[] p;  
  35. }  

這裡我想到的是用動態陣列的方法把每次求餘的結果儲存來,好像指標也行吧,好久不用了 不是很記得了!

附上動態陣列的方法:

int   main()  
  {    
    //用指標p指向new動態分配的長度為len*sizeof(int)的記憶體空間  
    int   *p=new   int[];   //如果是C++的話這個是不行的,系統會警告說沒有給定陣列長度。
    ...........  
    delete[]   p;  
    return   0;  
  }