做题时碰到的一个问题,为了读取未知数目的数目试了好几种方法。
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int a, b, isa = true, cou = 0;
cin >> a;
while(cin.get() != '\n'){
if(isa) cin >> b;
else cin >> a;
if(isa){
if(cou == 0){
if(b != 0)
printf("%d %d", a*b, b - 1);
else
printf("%d %d", 0, 0);
cou = 1;
}
else {
if(b != 0){
printf(" %d %d", a*b, b - 1);
}
}
}
isa = !isa;
}
printf("\n");
return 0;
}
上面的时完整的代码,因为我题目的要求是每次读入两组数字。
如果每次只需要读取一组数字的话,可以将代码简化为如下(以将数字累加为例子)。
int a = 0, sum = 0;
cin >> a;
sum = a;
while(cin.get() != '\n'){
cin >> a;
sum += a;
}
解析一下代码:
- cin.get()的作用时读取空格外加检测是否已检测完所有数字(主要目的), 如果为空格,则除去空格,除去的方法就是将空格zhu装入缓存(buff)。这一点可以为我们使用scanf()来读取数字或字符提供好处。防止读入了空格。
还没有接触到其他更好的方法或一次读入多个数字的方法,以后见到了再补充。