输入不定长度的数组

2017-08-26  本文已影响0人  Keizo

某些算法题的输入没有要求输入长度,而是直接输入长度未知的数组

下面讲讲如何方便地输入不定长度的数组:

  1. 我在一次笔试中第一次遇到这种输入数组的方式,当时想的比较复杂,直接是按照字符串输入,然后处理字符串,将数组赋值。
#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;
}
  1. 然而笔试后我上网看了一下网友的分享,发现了更简单的用法:
#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;
}
上一篇 下一篇

猜你喜欢

热点阅读