以英文整数显示每个数字的程序不适用于以“ 0”开头的整数

日本通

我有一个任务,我必须编写一个程序,该程序从终端输入一个整数并提取并显示英文的整数。我不能使用数组或递归,我们只是从编程开始。

例如:“ 123”返回“一二三”

我的程序运行良好(大部分情况下),但是问题是,当您在终端中输入“ 0123”之类的程序时,程序将返回“八三” ... WTH?

这是我的代码:

// Program that takes an integer and displays each digit in English

#include <stdio.h>

int main (void)
{
    int num, digit;
    int reversed = 0, backupZero = 0;

    printf("Please enter an integer:\n");
    scanf("%i", &num);

    if (num == 0) // In case the input is just "0"
    {
        printf("zero");
    }

    while (num > 0) // Loop to reverse the integer
    {
        digit = num % 10;
        reversed = (reversed * 10) + digit;

        if ((reversed == 0) && (digit == 0)) // If the integer finishes in zero
        {
            ++backupZero; // Use this to add extra zeroes later
        }

        num /= 10;
    }

    while (reversed > 0)
    {
        digit = reversed % 10;
        reversed /= 10;

        switch (digit)
        {
            case 1:
                printf("one ");
                break;

            case 2:
                printf("two ");
                break;

            case 3:
                printf("three ");
                break;

            case 4:
                printf("four ");
                break;

            case 5:
                printf("five ");
                break;

            case 6:
                printf("six ");
                break;

            case 7:
                printf("seven ");
                break;

            case 8:
                printf("eight ");
                break;

            case 9:
                printf("nine ");
                break;

            default:
                printf("zero ");
                break;
        }

    }

    for (int counter = 0; counter < backupZero; ++counter) // Prints the extra zeroes at the end
    {
        printf("zero ");
        --backupZero;
    }

    printf("\n");

    return 0;
}

我承认我可能不擅长数学。

juanchopanza

当您用

scanf("%i", &num);

您要scanf推断数字的底数。开始与数字0其次是其他数字解释为八进制。所以0123不一样123实际上是83

0100 = 64
 020 = 16
  03 =  3
---------
0123 = 83

要将数字读取为以10为底的数字,请使用

scanf("%d", &num);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Linux / Unix实用程序在每个输入行的开头提取整数或十进制?

来自分类Dev

C ++枚举类整数不适用于数组下标

来自分类Dev

整数除法返回0

来自分类Dev

kendo ui网格过滤器不适用于整数类型的列

来自分类Dev

如何忽略以0开头的整数

来自分类Dev

类型PrintStream的方法println(int)不适用于参数(字符串,整数,整数,整数)

来自分类Dev

数字开头的Javascript 0

来自分类Dev

PyMC3多项式模型不适用于非整数观察数据

来自分类Dev

合并排序不适用于包含超过521096个元素的整数表

来自分类Dev

CPLEX12.9:强分支不适用于混合整数问题吗?

来自分类Dev

qsort()不适用于长整数数组

来自分类Dev

此自定义数组适配器不适用于整数

来自分类Dev

JavaScript函数不适用于整数

来自分类Dev

为什么char重载不适用于三元表达式中的整数和char?

来自分类Dev

SQLiteQueryBuilder中的selectionArgs不适用于列中的整数值

来自分类Dev

将字符添加到整数的开头

来自分类Dev

在整数的前面加上“ 0”

来自分类Dev

回波整数为0

来自分类Dev

通用排序适用于整数,但不适用于其他类型

来自分类Dev

最好的格式化程序,以显示可编辑的整数数组?(可能以0开头)

来自分类Dev

MySQL PDO不适用于整数

来自分类Dev

Python子字符串不适用于数字整数

来自分类Dev

Select2 val不适用于整数值

来自分类Dev

r rpart 仅适用于整数而不适用于因子?得到一棵没有深度的树

来自分类Dev

整数不适用于 if 语句

来自分类Dev

MySQL 查询仅匹配以整数开头

来自分类Dev

$lookup 不适用于以 $ 开头的字段

来自分类Dev

动态分配不适用于全局整数指针

来自分类Dev

strpos 不适用于搜索以 X 开头的术语

Related 相关文章

热门标签

归档