在数组中存储 int 的各个数字
Storing individual numbers of an int in an array
我试图编写一个程序,在其中我接受一个输入数字,示例 891 并在数组中输入每个数字,例如 x[0] = 8
、x[1] = 9
和x[2] = 1
试图使用递归来实现我的方法:
void calc(int val, int k)
{
static int number = val;
if((val/10))
{
calc(val/10, k--);
}
int x = number - val*pow(10, k);
cout << x << ", k = " << k << " and number = " << number << endl;
}
int main()
{
//write a program that converts a number to string
int number;
cout << "Enter a number: ";
cin >> number;
number = 891;
int k = 0;
//while(number/10 != 0)
k = 2;
calc(number, k);
}
基本上我试图使用我的递归函数来尝试打破在其更精细的部分中减少数字,但是我得到的输出(以val
为单位):91, 1, -8019.有没有办法我可以改进这一点,但要保持结构?
将数据放入数组和递归解决此问题都需要一些指针算法。您需要提前分配数组,这意味着您需要知道位数。您还需要传递指向数组的指针,以便递归调用可以分配给它。下面是满足这两个要求的简短解决方案。
#import <math.h>
#import <iostream>
using namespace std;
void calc(int num, int* digs) {
if (num > 0) {
calc(num/10, digs-1); //recursive call, doing head recursion
*digs = num %10; //assigning this digit
}
}
int main() {
//Get number from user
int inputNumber;
cout << "Input a number: ";
cin >> inputNumber;
int numDigits = log10(inputNumber) + 1;
int outputArray[numDigits];
//I give a pointer to the end of the array
//This is because we are receiving digits from the end
//So we traverse backwards from the end of the array
calc(inputNumber, outputArray+numDigits-1);
//Following is not logic, just printing
for (int i=0; i < numDigits; i++) {
cout << outputArray[i] << " ";
}
cout << endl;
}
void calc(int val)
{
cout << "digit:"<<val % 10<< " and number = " << val << endl;
if((val/10))
{
calc(val/10);
}
}
这将打印出每个数字(看起来像您尝试在函数中执行的操作)。
相关文章:
- 为什么将双精度转换为 int 似乎在第 16 位数字之后将其四舍五入?
- 整数区间(或 int 数组)中每个数字的出现次数
- 必须首先打印向量 v1 中最接近整数 x 的数字<int>
- 无符号的 int 到有效数字
- 返回 int 中可被 2 c++ 整除的所有数字的总和
- C++ - 将 int 读取为字母和数字序列
- 如何安全地将有符号字段从uint32_t提取到有符号数字(int或uint32_t)中
- 如果char可以在C++中存储数字,为什么我们需要int
- 检查字符串是否是数字,然后将该数字转换为 int?
- C++在减去 int 时向 int 添加一个额外的数字
- 如何使用 c++ 中的 int* count(const string&s)计算字符串中每个数字的出现次数?
- 当我将 const int 声明/初始化为 5 时,它被初始化为一个大数字
- 如何将int分解为数字并以相同的顺序为向量分配数字
- 从C 到C#调用INT []显示随机大数字,而不是原始数组成员
- 如何将 int 的数字分配给数组 c++
- 如何正确编码此函数,以便它计算 int 的每个数字的总和
- C++ 从文件中读取 int,每个数字用逗号分隔
- 为什么将字符'g'读入 int 会产生此代码中的数字 -858993460?
- 如何将强调字符转换为数字(INT)CPP
- 如何从char数组中读取数字(int)值