从大数字读取数字作为个别数字

时间:2015-12-06 02:00:18

标签: c

如何将数字读取为数字中的单个数字?

int main() {
long long int num1;
printf("enter number: ");
scanf("%lld", &num1);

例如,如果用户输入是123456789,我如何将4用作单个数字?

4 个答案:

答案 0 :(得分:4)

因为问题中的scanf()调用使用了%lld说明符,它解释了十进制的输入,我们可以假设你想要十进制的数字。假设数字是正数:

  1. 首先除以10的幂。要从右侧提取第六个数字,除以具有六位数的10的幂,例如100000。这给出了1234.如果要检索可变数字,可以使用重复除以10将正确的数字移动到该位置,如Ashiquzzaman's answer所示。如果你想要左边的数字,首先要计算数字中的数字:除以10,直到商为零。
  2. 使用模运算符%从除法中提取余数10.这得到4。
  3. 如果数字为负数,division in C rounds toward zero。这意味着-123456789将在第一步后生成-1234,在第二步后生成-4

答案 1 :(得分:1)

您可以将输入作为long long int,然后提取数字,如下所示:

#include <stdio.h>
#include<math.h>
int getDigit(long long number, int idx)
{
    number = abs(number);
    while(idx--)
        number/=10;
    return number%10;
}
int main()
{
    long long int num1;
    int indexOfDigit = 4;
    printf("enter number: ");
    scanf("%lld", &num1);
    printf("%d\n", getDigit(num1, indexOfDigit));
}

示例输入:123456789

示例输出:5

有关说明,请参阅answer

tepples

答案 2 :(得分:0)

将其作为一系列字符读取(基本上就像它是一个字符串一样),在循环中使用scanf中的%c直到读取EOF

int main()
{
  int digit;

  printf("enter number: ");
  digit = getchar();
  while (digit != EOF)
  {
    /* Process digit */
    digit = getchar();
  }
}

答案 3 :(得分:0)

您可以将输入存储为char *并使用char [3]访问第四位数字?