某些算法題的輸入沒有要求輸入長度,而是直接輸入長度未知的數(shù)組
下面講講如何方便地輸入不定長度的數(shù)組:
- 我在一次筆試中第一次遇到這種輸入數(shù)組的方式,當(dāng)時(shí)想的比較復(fù)雜,直接是按照字符串輸入,然后處理字符串,將數(shù)組賦值。
#include <iostream>
using namespace std;
int main()
{
string str;
int nums[5000] = {0};
getline(cin, str);
int i, count = 0;
for (i = 0; i<= str.length(); i++) {
if (str[i] == ' ' || str[i] == '\0') {
int j = i-1;
int plus = 1;
while (j >= 0) {
if (str[j] == '-') { //是負(fù)數(shù)
nums[count] *= -1;
count++;
break;
}
if (str[j] <= '9' && str[j] >= '0') {
nums[count] += plus * (str[j] - '0');
plus *= 10;
j--;
if (j < 0) count++; //算上第一個(gè)數(shù)
} else {
count++;
break;
}
}
}
}
for (i = 0; i < count; i++) {
cout<<nums[i]<<" ";
}
cout<<endl;
}
- 然而筆試后我上網(wǎng)看了一下網(wǎng)友的分享,發(fā)現(xiàn)了更簡(jiǎn)單的用法:
#include <stdio.h>
int main(){
int num;
int i = 0, count = 0;
int arr[10];
while(1){
scanf("%d", &num);
count++;
char c = getchar();
arr[i++] = num;
if(c == '\n'){ //監(jiān)測(cè)到回車
break;
}
}
for (i = 0; i < count; i++) {
cout<<arr[i]<<" ";
}
cout<<endl;
}