之前做题遇到一些输入的问题,平时我们写代码的时候大多数时候是知道输入数据的个数,所以我们在循环读入的时候可以设置结束条件,但是会遇到随机个数的输入,这里做一下学习记录。
#include<iostream>
#include<vector>
#include<stdio.h>
using namespace std;
**//输入一个字符串,格式为[1,2,3,4]。其中的数字是随机个数,有两个中括号,数字中间靠“,”隔开。目的是提取出来数字。**
/*int main()
{
vector<int>data;
int n;char x;
while(cin>>x)
{
if(x==']')
{
break;
}
cin>>n;
//先判断的好处是这个字符若是“]”就直接跳出,不必要再进行输入数字。若是在while循环的条件中直接(cin>>x>>n)&&(x!=']'),这样在 //输入用例的时候会再输入一个数字在后面才会结束,和题目输入不符合。
data.push_back(n);
}
vector<int>::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;
}
}