首页 > 解决方案 > 如何存储我要分离的整数的数字?

问题描述

我遇到的问题是,我想取一个整数并将其分开。例如:用户输入:23432。控制台应该打印“2 3 4 3 2。我遇到的问题是存储这些数字。例如,

  User Input : 2020
  assign input to num.
  digit = 2020 % 10 = 0 <--- 1st Digit
  num = num / 10 = 202
  digit2 = num % 10 = 2 <--- 2nd Digit
  num = num / 100 = 20.2 
  temp = round(num) = 20
  digit3 = num % 10 = 0 <--- 3rd Digit
  digit4 = num / 10 = 2 <---- 4th Digit

这种方法的问题在于它依赖于用户输入,我正在使用范围 1-32767,所以我不知道要创建多少位变量。使用我创建的结构,有人可以帮助它以某种方式运行,无论数字是多少,数字都以我描述的方式保存和打印?

int Rem(int num);
  int Div(int num);

  int main() {
      int num;
      printf("Enter an integer between 1 and 32767: ");
      scanf("%d", &num);
      Rem(num);
      Div(num);
      printf("%d","The digits in the number are: ");

  }


      int Rem(int num) {
          int rem = num % 10;
          return rem;
      }

      int Div(int num){
          int div = num / 10;
          return div;
      }

标签: calgorithm

解决方案


这种方法的问题在于它依赖于用户输入,我正在使用范围 1-32767,所以我不知道要创建多少位变量。

所以计算一下。您可以通过每次将变量增加 10 倍来做到这一点,直到再增加一次会使其大于您的输入数字:

int num;
printf("Enter an integer between 1 and 32767: ");
scanf("%d", &num);
int div = 1;
while(div * 10 <= num)
    div *= 10;

然后您可以将您的号码反复除以该除数以获得每个数字,每次将除数除以 10 以一次移动一个位置:

printf("The digits in the number are: ");
while(div > 0)
{
    printf("%d ", (num / div) % 10);
    div /= 10;
}

推荐阅读