学习笔记,奇安信笔试题第二题输入问题:[1,2,3,4,5,6]。以及读入时不知道数量输入回车结束的问题,如“1 2 3 4 5 6”回车结束。

之前做题遇到一些输入的问题,平时我们写代码的时候大多数时候是知道输入数据的个数,所以我们在循环读入的时候可以设置结束条件,但是会遇到随机个数的输入,这里做一下学习记录。

#include
#include
#include
using namespace std;
**//输入一个字符串,格式为[1,2,3,4]。其中的数字是随机个数,有两个中括号,数字中间靠“,”隔开。目的是提取出来数字。**
/*int main()
{
    vectordata;
    int n;char x;
    while(cin>>x)
    {
        if(x==']')
        {
            break;
        }
        cin>>n;
        //先判断的好处是这个字符若是“]”就直接跳出,不必要再进行输入数字。若是在while循环的条件中直接(cin>>x>>n)&&(x!=']'),这样在                   //输入用例的时候会再输入一个数字在后面才会结束,和题目输入不符合。
        data.push_back(n);
    }
    vector::iterator bian;
    bian = data.begin();
    for(;bian != data.end();bian++)
    {
        cout<<*bian;
    }

}*/

//这里就是不知道输入数字的个数,只知道按回车结束,可以使用c语言中的scanf来判断输入的是否为间隔空格,不是则直接跳出循环,或者直接判断是不是换行符,若是就跳出循环。这里的存储数据结构更好的是使用vector容器或链表,因为vector容器是动态数组,正好符号题目不知道输入的个数。
int main()
{
    int data[100],x=0,i=0;
    char fuhao = 0;
    while(scanf("%d%c",&x,&fuhao))
    {
        data[i++]=x;
        if(fuhao=='\n')//if(fuhao==10)//if(fuhao!=32)
            break;
    }
    data[i]=x;
    for(int j =0;j<i;j++)
    {
       cout<<data[j]<<endl;
    }

}

你可能感兴趣的:(c,c++,学习,算法,数据结构)