有谁可以请帮我这个程序编码?

时间:2013-08-13 12:55:26

标签: c reverse

我有一个程序要做我的作业。该计划很简单。它要求反转用户输入的数字,然后使用while循环打印它。当用户输入以零开头的数字时,就会出现问题。

例如:

Enter the number: 0089
The reversed number is : 9800

这是输出的方式。相反,我得到“98”作为答案。

并提前致谢。

3 个答案:

答案 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;
}