OJ平台循环读取输入的方式

(一)多行输入,每行多个数字,空格分隔 

链接:https://ac.nowcoder.com/acm/contest/320/G

计算一系列数的和

输入描述

输入数据有多组, 每行表示一组输入数据。

每行不定有n个整数,空格隔开。(1 <= n <= 100)。

输出描述:

每组数据输出求和的结果

示例1

输入

1 2 3
4 5
0 0 0 0 0

输出

6
9
0

 这算是循环读输入里面比较麻烦的题目了。如果一行只有两个数,那么可以用while(cin >> a >> b)来循环读,或者如果只有1行,那么可以用 while(cin >> a) 来循环读。但是现在既有多行,每一行又有多个数,要怎么解决呢?

先看答案再解释:

#include<iostream>
using namespace std;
 
int main()
{
    int a, sum;
    while(cin >> a)
    {
        sum = 0;
        while(true)
        {
            sum += a;
            if(cin.get() == '\n') break;
            cin >> a;
        }
        cout << sum << endl;
    }
    return 0;
}

首先解释下为什么 cin >> a 可以作为while循环的条件。 cin >> a这条语句的返回值其实是 >> 运算符的返回值,也就是左操作数cin,是输入流的引用,istream& 类型。而istream类型,它的父类重载了类型转换函数(),规定了如果读取失败,返回0,否则返回 void* this指针。因此,放在while循环里,会自动调用类型转换,从istream对象转换为一

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值