【问题标题】:How to print out more than 9 in the function?如何在函数中打印出超过9个?
【发布时间】:2018-11-29 12:32:05
【问题描述】:
#include <stdio.h>

void numDigits(int count, int number) {
    while (number > 0)
    {
        number = number / 10;
        count = count + 1;
    }
    printf("\nThe number of positive intergers is %d.\n", count);
}

int main()
{
    int number;
    int count = 0;
    printf("Please enter a number: ");
    scanf_s("%d", &number);
    numDigits(count, number);
    return 0;
}

对于超过 9 位的数字,此代码会打印出“9”。如果用户输入 0123456789,它应该等于 10,但此代码改为显示“9”。

【问题讨论】:

  • 你从零开始!改用 1234567890
  • 当您将01(在第 9 次迭代中)除以 10 时,它将返回 0。因此,在下一次迭代中,number 变为 0 并终止循环。
  • 要考虑前导零,您需要将数字读取为string

标签: c integer digits


【解决方案1】:

您将号码保存为int,并且不会记录前导0。无论用户输入0123456789 还是123456780,对于程序来说都是一样的,因为两者都存储为123456789。相反,您应该将其作为字符串读入:

char buf[20];   // holds a maximum of 20 digits, different amounts can be specified

然后再做

scanf_s("%19s", buf);   // include one less than the same length that was specified in buf's definition

您甚至不需要函数来对整数进行运算并计算数字,只需使用 strlen 即可:

printf("\nThe number of positive intergers is %d.\n", strlen(buf));

【讨论】:

    猜你喜欢
    • 2017-07-27
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    • 2015-01-01
    相关资源
    最近更新 更多