簡體   English   中英

如何反轉一個三位數

[英]How to reverse a 3 digit number

代碼:

#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 以及輸出,反向
  2. 要求用戶輸入一個數字來反轉
  3. 使用 scanf 存儲數字
  4. 獲取數字的最后一位,num1= n/100
  5. 從用戶處獲取中間數字,num2=(num%100)/10
  6. 要從用戶那里獲取最后一位數字,num3=(num%10)/100

這些步驟對嗎? 我嘗試使用該程序但沒有任何運氣,直到我得到正確的步驟。

示例:

Enter a number: 263
Output: 362

號碼始終是 3 位數字,沒有任何變化

首先,你的 num3 是錯誤的,即在下面修改,其次,reverse 計算錯誤

#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;
}

使用多樣化的方法

int main()
{
    char string[4];
    int reverse = 0;

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

    if (reverse > 999)
        return 0;

    sprintf_s(string, "%d", reverse);

    char c1 = string[0];
    string[0] = string[2];
    string[2] = c1;

    reverse = atoi(string);

    printf(" The reverse is %d", reverse);
    return 0;
}

或者如果你不想使用 atoi

int main()
{
    char string[4];
    int reverse = 0;

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

    if (reverse > 999)
        return 0;

    sprintf_s(string, "%d", reverse);

    printf(" The reverse is %c%c%c", string[2], string[1], string[0]);

    return 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);

我認為這是一個更好的版本

   #include<stdio.h>
   int main()
   { 
   int num,n1,n2;
   printf("enter the number : ");
   scanf("%d",&num);
   n1=num%10;
   num=num/10;
   n2=num%10;
   printf("%d",n1*100+n2*10+num/10);
   return 0;
   }

我認為這段代碼無法使代碼更簡潔,盡管您可以通過創建新函數並反轉n個數字來使用遞歸。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM