【发布时间】:2020-12-17 13:13:18
【问题描述】:
我需要编写一个需要 2 位数字(X 和 n)的程序,然后打印 X,并将 X 的最后 n 位反转。
例如
输入:12345 3
输出:12543
输入:523 2
输出:532
我已经写了一个控制机制来检查n是否大于或等于X的位数 例如,如果输入是 6343 和 7,则程序会打印出应该更改输入并再次接受输入。
我的主要问题是我找不到反转最后 n 位数字的算法。我可以用这段代码反转任何 int
int X, r = 0;
printf("Enter a number to reverse\n");
scanf("%d", &n);
while (X != 0)
{
r = r * 10;
r = r + n%10;
X = X/10;
}
printf("Reverse of the number = %d", r);
但我不知道两个如何反转最后一个数字。你能给我一些想法吗?
【问题讨论】:
-
可能最容易将输入值转换为 char 数组,修改它,然后转换回来(如果需要)。
-
另外你的'n'变量是未声明的。除非这只是您代码的一部分?
-
或者,由于您的输入是一个字符串,所以首先不要费心将其转换为 int。 (例如,不要使用
scanf("%d",... -
注意使用
pow(10,...)及其几乎正确答案的解决方案的浮点问题。最好将整数数学用于整数类型问题。
标签: c