c - 如何存储我要分离的整数的数字?
问题描述
我遇到的问题是,我想取一个整数并将其分开。例如:用户输入: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;
}
解决方案
这种方法的问题在于它依赖于用户输入,我正在使用范围 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;
}
推荐阅读
- python - Python:使用 curses 库打印 ASCII 文本文件
- python - 在计算两个排序数组的中位数时,是否有较小的数组驱动二进制搜索?
- javascript - 如何在谷歌脚本中总结从今天开始的 7 天?
- swiftui - 如何在 SwiftUI 中设置自定义环境键?
- javascript - 在 Vuex 中更新状态?
- docker - 为什么我不能在 Dockerfile 中运行命令,但我可以在我的 Docker 容器中运行?
- excel - 基于范围的窗口计数和概率
- ios - 连接插座的 NS Unknown Key 异常
- networking - 如何确定未知网络上的 IPv4 设置?
- php - 通过包含 PHP 变量嵌入视频时在 HTML 文件中得到意外结果