读取未知数目的数字

做题时碰到的一个问题,为了读取未知数目的数目试了好几种方法。

#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()来读取数字或字符提供好处。防止读入了空格。

还没有接触到其他更好的方法或一次读入多个数字的方法,以后见到了再补充。

猜你喜欢

转载自blog.csdn.net/qq_40721694/article/details/82226381
今日推荐