2016-11-25 34 views
0

所以我在C中得到了以下任務:用戶輸入兩個整數,我們稱它們爲n1和n2,這樣n1 < = n2。 程序必須在n1和n2之間打印所有可能的整數(包括n1和n2),並且數字中的所有數字都增加其值。 例如,如果用戶輸入1234和1260,程序將打印1236,1237,1238,1239,但不是1240,因爲0小於4. 然後它將打印1356,1357,1358,1359。如何比較數字任務

我不允許使用數組(否則它會很容易),函數,甚至是電源函數。 於是我想出了下一個僞代碼:

  1. 做一個循環,取數N1,並計算它具有位數。
  2. 然後做一個循環,將n1(數字的位數-1)倍,然後用它的結果的其餘部分,它會做%。 在這一點上,你留下了一些數字。
  3. 然後再取n1,並將其除以(數字的位數-2)次,然後用結果的其餘部分進行計算,結果爲%。 在這一點上,你剩下一些數字。
  4. 比較兩位數字。如果第一個數字小於第二個數字,則繼續通過提升數字位置(digitsNum--)來比較數字。
    • 做在循環步驟2-3-4。
    • 如果一切都檢查出來,打印n1;
    • promotion n1(n1 ++),(up to n2)
    • 再次循環一切。

的問題是,有什麼我可以使用所有restricions,我發現我的解決方案很難實施,而一旦我開始,我只是得到一個很大的混亂。 有什麼建議我該如何改進?

+0

顯示到目前爲止您已經做了什麼,甚至是錯誤的。 –

+0

這些限制究竟是什麼? – dbush

+0

到目前爲止請顯示您的研究/調試工作。請先閱讀[問]頁面。 –

回答

0

希望它可以幫助你。

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
int main() 
{ 
     int num;; 
     int num2; 
     int flag=-1; 
     int i=0,j=0; 
     int rem,rem2; 
     printf("Enter First Number\n"); 
     scanf("%d",&num); 
     printf("Enter Second Number\n"); 
     scanf("%d",&num2); 
     if(num>num2) 
     { 
       printf("Wrong inputs have given\n"); 
       exit(0); 
     } 
     int div=num2-num; 
     for(i=0;i<=div;i++) 
     { 
       num2=(num+i); 
       rem=(num2)%10; 
       num2/=10; 
       rem2=(num2)%10; 
       if(rem>rem2) 
       { 
         printf("....%d\n",num+i); 
       } 
     } 
     return 0; 
} 
+0

非常感謝你!我第一次嘗試理解這個問題更有意義。儘管我沒有看到j和flag變量的用法 – Invader

+0

@Invader我修改了我的最後一個程序來寫這個。所以忘了刪除j和標誌變量。 –