[英]Storing digits in array, C++
我正在從一個數字中獲取數字,如何將它們存儲在數組中?
int main()
{
int n;
std::cin>>n;
while (n > 0)
{
int digit = n%10;
n /= 10;
std::cout<<digit<<" ";
}
return 0;
}
最好的方法是使用向量,因為它們可以在運行時輕松調整大小,例如:
int main()
{
int n;
std::cin>>n;
std::vector<int> digitArray;
while (n > 0)
{
int digit = n%10;
n /= 10;
std::cout<<digit<<" ";
digitArray.push_back(digit);
}
std::reverse(digitArray.begin(), digitArray.end()); // reverse the order of digits
return 0;
}
可以像 C 風格的數組一樣訪問向量: digitArray[0]
= 第一個數字。
另一種方法可能是使用固定大小的數組,因為我們知道 32 位整數最多只能有 10 位長,例如:
int main()
{
int n;
std::cin>>n;
int digitArray[10] = {0}; //initialize all elements to 0
int size = 0;
while (n > 0)
{
int digit = n%10;
n /= 10;
std::cout<<digit<<" ";
digitArray[size] = digit;
++size;
}
std::reverse(std::begin(digitArray), std::begin(digitArray)+(size-1)); // reverse the order of digits
return 0;
}
大多數時候這會給你留下無用的元素,盡管這在這里可能無關緊要。
首先計算數字的數量,然后創建一個動態數組並在您從 lsb 移動到 msb 時將數字從最高到最低索引0
推送:
int main()
{
int n, count = 0;
std::cin>>n;
int m = n;
while(n > 0)
{
n /= 10;
++count;
}
int *a = new int[count];
while(m > 0)
{
a[--count] = m % 10;
m /= 10;
}
delete[] a; //don't forget to release the memory.
return 0;
}
要在c 中執行此操作,您必須首先分配一個數組。 對於 32 位 int,這可能是一個具有 10 位數字(+ NUL 字符)的固定數組,例如
int main()
{
int n;
std::cin >> n;
char a[11];
int i = 0;
while (n > 0) {
int digit = n % 10;
a[i] = digit;
++i;
n /= 10;
std::cout << digit << " ";
}
a[i] = '\0'; // final NUL byte
// the digits are now stored in reverse order in `a`
return 0;
}
這種方法可能會幫助您將任何類型的數字輸入到數組中。 甚至 tou 也可以在其中輸入任何二進制數字,例如 00001111。
#include<iostream>
#include<string>
using namespace std;
int main()
{
int n; //enter size of your number
cin>>n;
string input;
cin>>input; //enter your number
int arr[n];
for( int i=0;i<n;i++)
{
arr[i]=input[i] - '0';
}
for(int i=0;i<n;i++)
{
cout<<arr[i];
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.