我有一个程序要做我的作业。该计划很简单。它要求反转用户输入的数字,然后使用while循环打印它。当用户输入以零开头的数字时,就会出现问题。
例如:
Enter the number: 0089
The reversed number is : 9800
这是输出的方式。相反,我得到“98”作为答案。
并提前致谢。
答案 0 :(得分:5)
当被要求做别人的家庭作业时,我喜欢用一种迟钝而紧凑的方式来做这件事。
void reverseNumber(void)
{
char c;
((c=getchar()) == '\n')? 0 : reverseNumber(), putchar(c);
}
答案 1 :(得分:4)
不是将0089输入作为数值读取,而是将其作为字符数组读取。这样就不会删除零。
答案 2 :(得分:1)
将数字作为字符串读取。
然后使用atoi()
(stdlib.h)在字符串中输出整数:
/* int atoi (const char *) */
以下是工作代码,可以完全满足您的问题:
// input: 0321
// output: 1230
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char str[80] = {0}, temp_str[80] = {0};
int num, i, length = 0, temp_length = 0;
printf("Enter a reversed number (e.g. 0089): ");
scanf("%s", str);
length = strlen(str);
temp_length = length;
printf("string_length: %d\n", length);
for ( i = 0; i < length; i++ ) {
temp_str[i] = str[temp_length - 1];
/* The string length is 4 but arrays are [0][1][2][3] (you see?),
so we need to decrement `temp_length` (minus 1) */
temp_length--;
}
printf("temp_str: %s\n", temp_str);
num = atoi(temp_str);
printf("num: %d\n", num);
return 0;
}