输入不定长度的数组
2017-08-26 本文已影响0人
Keizo
某些算法题的输入没有要求输入长度,而是直接输入长度未知的数组
下面讲讲如何方便地输入不定长度的数组:
- 我在一次笔试中第一次遇到这种输入数组的方式,当时想的比较复杂,直接是按照字符串输入,然后处理字符串,将数组赋值。
#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] == '-') { //是负数
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++; //算上第一个数
} else {
count++;
break;
}
}
}
}
for (i = 0; i < count; i++) {
cout<<nums[i]<<" ";
}
cout<<endl;
}
- 然而笔试后我上网看了一下网友的分享,发现了更简单的用法:
#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'){ //监测到回车
break;
}
}
for (i = 0; i < count; i++) {
cout<<arr[i]<<" ";
}
cout<<endl;
}