我需要将用户输入分成单元并将它们存储在一个数组中。 例如,如果用户输入6547. Array将存储{6,5,4,7}在Linux上使用C ++
如果您能帮助我使用伪代码或解释算法,我将不胜感激。
我是初学者所以请不要提出建议高级功能(如果你这样做,请解释它的使用),因为我们到目前为止已经学过基础知识
N.B | 如果此问题已经得到解答,我在搜索中跳过了它,请指出我的问题。
答案 0 :(得分:0)
隔离最右边数字的数学:
digit = digit % 10;
将数字右移一位的数学运算:
new_number = old_number / 10;
每个字母和数字都可以表示为文本字符。例如,'5'是表示单个十进制数字5的字符。
将文本数字(字符)转换为数字的数学运算:
digit = char_digit - '0';
示例:
digit = '9' - '0';
将数字转换为文本数字(字符)的数学运算:
char_digit = digit + '0';
示例:
char_digit = 5 + '0';
答案 1 :(得分:0)
您的问题基本上分为几个部分,您需要弄清楚:
请尝试解释一下您是否对上述列表中的某些特定问题有疑问,或者在其他地方出现问题。
答案 2 :(得分:0)
假设变量input_string保存用户输入的数字&你想把它存储在一个名为'a'的数组中...这里是一个C片段..你可以轻松地将它转换为C ++代码.. 我建议将输入作为字符串而不是int,以便您可以直接插入从末尾提取的数字...(否则您可以从开始存储整数然后反转数组)
scanf("%s",&input_string)
size = strlen(input_string)-1
input = atoi(input_string)
while (input/10>0)
{
i=input%10;
input=input/10;
a[size]=i;
size--;
}
希望有所帮助!
答案 3 :(得分:0)
这是一个C ++ 11解决方案:
std::string input;
std::cin >> input;
int num = std::stoi(input);
std::vector<int> v_int;
for (unsigned int i = 0; i < input.size(); i++)
{
v_int.push_back(num % 10);
num /= 10;
}
// To get the numbers in the original order
std::sort(v_int.rbegin(), v_int.rend());
for (unsigned int i = 0; i < v_int.size(); i++) {
std::cout << v_int[i] << std::endl;
}
如果你想要它在c风格的数组中,请执行以下操作:
int* dynamic_array = new int[v_int.size()];
std::copy(v_int.begin(), v_int.end(), dynamic_array);
delete dynamic_array;