![](/img/trans.png)
[英]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.