任务是使用int
获取scanf("%d")
然后使用printf("%с")
再次打印它,而不使用像atoi,itoa这样的标准函数。我知道我需要将所有数字除以加{{1} char和打印它,但我怎么能分开它。我想到了用于分割\0
和number%10 + /0
以减少1个字符的数字的循环。
因此代码看起来应该像这样平滑
number/10
}
同样可以有负数,所以我需要一些#include <conio.h>
#include <stdio.h>
main(void)
{
int number,reserve ;
char Array[50];
scanf_s("%d",&number);
if (number > 0 || number == 0)
{
do
{
reserve = number % 10;
printf("%c", reserve + '/0');
number /= 10;
} while (number != 0);
}
else
{
number *= -1;
printf("-");
do
{
reserve = number % 10;
printf("%c", reserve + '/0');
number /= 10;
} while (number != 0);
}
_getch();
return 0;
语句来检查它是否为负数,如果它是循环应该避免它,所以我们不会得到像if
< / p>
所以我不知道循环是否正确(希望有人能解决它并解释我应该如何)。等待你的建议。
答案 0 :(得分:1)
该行的一个副作用
number = number % 10;
是您丢失了number
的原始值。所以当你去做
number = number/10;
总是会得到零值。要解决此问题,请将原始值存储在其他位置,或使用其他变量进行字符转换(模10,然后加\0
)。
此外,您的循环需要重新检查。当除法的结果为零(即没有更多的数字要打印)时,这个模数加法,加法\0
,除,重复,应该停止。另一件需要考虑的事情是:这些数字的打印顺序是什么?
我会留给您,以弄清楚如何确定int
的值是否大于或小于零,因为您没有在此代码段中尝试过。
答案 1 :(得分:0)
这将有助于您,为您的目的采纳
#include <stdio.h>
int main() {
int a;
int i = 0;
int str_size = 0;
char str[11] = {};
char tmp;
scanf("%d", &a);
while (a) {
str[str_size++] = a % 10 + '0';
a /= 10;
}
str_size--;
while (i < str_size) { // rewind
tmp = str[i];
str[i++] = str[str_size];
str[str_size--] = tmp;
}
printf("%s", str);
return 0;
}