我目前正在学习 C 作为类(class)的一部分,我的任务是在不使用任何算术的情况下反转数字的顺序(任务的措辞)。 我目前有这个:
#include <stdio.h>
int main()
{
int n, reverse = 0;
printf("Enter a number to reverse\n");
scanf("%d", &n);
while (n != 0) {
reverse = reverse * 10;
reverse = reverse + n_10;
n = n / 10;
}
printf("Reverse of entered number is = %d\n", reverse);
return 0;
}
但是这个解决方案使用算术。我该如何改变它来完成任务?
从练习表中,“即使在三点
数字这种幼稚的方法很快就会变得难以用算术来管理(尝试一下!)。
您的目标:设计 3 位数字的解决方案,而不使用任何算术。(提示:使用 scanf。)”
问题的措辞令人困惑,但要明确的是,问题是: 如何反转数字的顺序,例如123456789 到 987654321,无需使用数学。所以解决方案是 scanf 读取数字并循环交换数字,如下答案。
最佳答案
您可以将其作为字符串读取。
int main()
{
char str[80];
fgets(str, 80, stdin);
strrev(str);
printf("%s\n", str);
}
void strrev(char *str)
{
char *end, tmp;
end = str + strlen(str) - 1;
for (; end > str; --end, ++str) {
tmp = *end;
*end = *str;
*str = tmp;
}
}
不知道你是否认为指针算术是“算术”
关于c - C 中整数的顺序颠倒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35416225/