2017-10-12 31 views
0

代碼:如何扭轉一個3位數

#include <stdio.h> 

int main() 
{ 
    int n, num1,num2,num3, reverse ; 


     printf("Enter the number to reverse:\n"); 
     scanf("%d", &n); 

     num1 = n/100; 
     num2 = (n % 100)/10; 
     num3 = (n % 10)/100; 

     reverse = num3*100+ num2*10; 

     printf(" The reverse is %d", reverse); 


    system("pause"); 
    return 0; 
} 

我想扭轉了一些不使用任何循環,我包括到此爲止,但是我不知道這是否是正確與否:

  1. 聲明INT到NUM1,NUM2和NUM3沿witht輸出,反向
  2. 要求用戶輸入一個數字用scanf函數
  3. 扭轉
  4. 商店數量
  5. 獲取數,NUM1的最後數字= N/100
  6. 獲得從用戶,NUM2 =(NUM%100)/ 10
  7. 爲了得到來自用戶的最後一個數字,NUM3 =中間位( num%10)/ 100

這些步驟正確嗎? 我試着用程序工作,但沒有運氣,直到我得到正確的步驟。

例子:

Enter a number: 263 
Output: 362 

數總是3位數字,任何

+1

也許你可以顯示你的代碼。 –

+2

它是否始終是輸入中的3位數字? –

+0

可以遞歸地完成。沒有循環然後:) –

回答

2

首先,沒有任何變化,你的NUM3是錯誤的,那就是修改如下 其次,反向計算錯誤

#include <stdio.h> 

int main() 

{ 


int n, num1,num2,num3, reverse ; 


    printf("Enter the number to reverse:\n"); 
    scanf("%d", &n); 

    num1 = n/100; 
    num2 = (n % 100)/10; 
    num3 = n%10 ; 

    // num1 , num2 , num3 are digits only , to make a number use the below step 
    reverse = 100*num3 + 10*num2 + num1; 

     printf(" The reverse is %d", reverse); 



    system("pause"); 
    return 0; 
} 
+0

但是,我的程序不斷循環 –

+0

如何?根本沒有迴路。你可以運行這段代碼,並檢查 –

+0

哦好吧,是的,我明白了,非常感謝! –

0

如果中間數字計算得像

num2=(num%100)/10; 

那麼少顯著位計算如下

num3 = (num % 10)/1; 

或只是

num3 = num % 10; 

本聲明

reverse = num3+ num2+ num1; 

不給你期待什麼。你應該寫

reverse = 100 * num3 + 10 * num2 + num1; 

事實上,你不需要計算數字。只要輸入三位數字爲三個獨立的數字。:)

例如

#include <stdio.h> 

int main(void) 
{ 
    unsigned int n1, n2, n3; 

    printf("Enter a three-digit number: "); 
    scanf("%1u%1u%1u", &n1, &n2, &n3); 

    printf("Reversed number is %u%u%u\n", n3, n2, n1); 

    return 0; 
} 

程序輸出可能看起來像

Enter a three-digit number: 263 
Reversed number is 362 

如果你不想輸出前導零則你可以在程序中包含if語句。也就是說,不是這種說法

printf("Reversed number is %u%u%u\n", n3, n2, n1); 

你可以寫

printf("Reversed number is "); 
if (n3) printf("%u", n3); 
if (n3 || n2) printf("%u", n2); 
printf("%u\n", n1); 

在這種情況下,如果以例如

100 

進入,則輸出將是

1 

而不是

001 

或者您可以使用表達式100 * n1 + 10 * n2 + n1。例如

printf("Reversed number is %u\n", 100 * n3 + 10 * n2 + n1);