如何从3位整数中提取单个数字?

时间:2013-07-17 03:02:03

标签: c int

这不是一个功课问题,我只是好奇。如果我有一个计算3位数字的程序,比如123,我怎么才能得到“1”?我试图在最后打印一条消息,说“(第一个数字)告诉你......和(最后两位数字)告诉你......”但我不确定如何保存或获得那个单数字。有任何想法吗?除了使用数组之外,这是一种更简单的方法吗?谢谢。

3 个答案:

答案 0 :(得分:6)

您可以使用整数除法100

#include <stdio.h>

int main()
{
  printf( "%d\n", 123/100 ) ;

  return 0 ;
}

更通用的方法是使用10后续的模数和10的整数除法来删除最后一位数,直到数字小于10

int num = 123 ;
while( num >= 10 )
{
    printf( "%d\n", num % 10 ) ;
    num = num / 10 ;
}
printf( "%d\n", num  ) ;

如果您可以从上到后以相反的顺序显示您的数字,则此方法不需要任何额外的存储空间,否则您可以将结果存储在数组中。

答案 1 :(得分:2)

  • 获取号码的长度。
  • 迭代&amp;得到每个数字。

以下是一个示例:

#include <stdio.h>
#include <math.h>

int main ()
{
  int n = 123, i; char buffer [33];

  int len = n==0 ? 1 : floor(log10l(abs(n)))+1;

  for(i=n;len--; i=(int)(i/10)) buffer[len] = (i%10);

  printf("%d", buffer[0]);   // First Digit
  printf("%d", buffer[1]);   // Second Digit
  printf("%d", buffer[2]);   // Third Digit... so on

  return 0;
}

答案 2 :(得分:-1)

如果你想以简单的方式做,我的意思是,如果你想让它只为一个数字编程,例如123,那么Shafik的第一个例子就足够了。

如果您想从末尾取出数字,那么Shafik的第二个例子就足够了。

欢迎提出建议,如果有人看到改进,谢谢:)

从一开始就拿出数字怎么样,这是我对你的问题的不同看法,我从头开始取数字:

#include<stdio.h>
int main()
{
  int di , i , num , pow = 1;
  setbuf ( stdout , NULL);
  printf ("enter the number of digits of the number\n");// specify at run time what will be the number of digits of the array.
  scanf ( "%d" , &di);
  int a[di];

  printf ("enter the %d digit number:\n",di);// 
  scanf ( "%d" , &num);//One thing is to be noted here that user can enter more digits than specified above , It is up to user to enter the specified digits , you can improve this program by making a check whether user enters the specified digits or not , better do it as exercise.
  while( di > 1 )
    {
    pow = pow * 10;
    di--;
    }

  i = 0;
  while ( num > 0)
    {
      a[i]=num/pow;
      num=num%pow;
      pow=pow/10;
      i++;
    }
  printf("the digits from the beginning are :\n"); 
  for(int j = 0 ; j < i ; j++)
    printf("%d\n",a[j]);
  return 0;
}

重要 - 如果用户输入的数字多于指定的数字,则使用数组存储数字时,会打印额外的数字作为数组的第一个元素,正如我所说,您可以进一步改进此程序如果你想要并检查用户输入的位数,祝你好运:)

注意 - 这只是查看问题的另一种方式,两种解决方案最终都会产生相同的结果。我只想这样说。