美文网首页
输入不定长度的数组

输入不定长度的数组

作者: Keizo | 来源:发表于2017-08-26 22:32 被阅读0次

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

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

    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;
    }
    

    相关文章

      网友评论

          本文标题:输入不定长度的数组

          本文链接:https://www.haomeiwen.com/subject/qmivdxtx.html