昨天做了一个笔试,里面第一个编程题有一个需求类似这样的
输入第一行一个整数,保存到整数N
输入第二行N个整数,用空格隔开,保存到一个整数数组。
当时这里卡住了,神烦,基础还是不牢固
后来百度找了一下代码,自己测了一下:
#include <stdio.h>
#include <iostream>
#include <vector>
using namespace std;
int main()
{
#if 0
int N = 0;
scanf("%d", &N);
int num[100];//这里N未知的话不可以创建数组num[N],创建向量到是可以。
int i = 0;
while(scanf("%d", &num[i++])){
if(getchar() == '\n')
break;
}
for(int j = 0; j < N; j++)
printf("%d ", num[j]);
#endif
#if 1
int n;
cin >> n;
vector<int> num(n);//创建向量,向量的容量为n
for(int i = 0; i < n; i++){
cin >> num[i];
}
for(int j = 0; j < n; j++){
cout << num[j] << " ";
}
#endif
return 0;
}
第一种是标C的方法,用getchar()来获取空格,到获取到回车时,循环体结束;
如果输入:
3回车
1空格2空格3回车
可以正确输出:1 2 3
但是如果输入:
3回车
1空格2空格3空格回车
就会发现有问题了
第二中是C++的方法:
如果输入:
3回车
1空格2空格3空格回车
也可以正确输出: 1 2 3