[英]Reverse of 5 digit number & check orignal number and reverse number is different or same?
[英]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;
}
我想在不使用任何循環的情況下反轉一個數字,到目前為止我已經包含了這些步驟,但我不確定它是否正確:
這些步驟對嗎? 我嘗試使用該程序但沒有任何運氣,直到我得到正確的步驟。
示例:
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.