当前位置: 首页 > news >正文

[ACM_1] 输入输出 | 多行 | 多组 | getline(cin,s) | cin处理

1. 多⾏输⼊,每⾏两个整数

错误:

#include<bits/stdc++.h>
using namespace std;
int a=0,b=0;

int main()
{
    while(1)
    {
        cin>>a>>b;
        cout<<a+b<<endl;
    }
    return 0;
}

正确:

#include<bits/stdc++.h>
using namespace std;
int a=0,b=0;

int main()
{
    while(cin>>a>>b)
    {
        cout<<a+b<<endl;
    }
    return 0;
}

多行输入,直接将输入流,放为循环条件


2. 多组数据,每组第⼀⾏为n, 之后输⼊n⾏两个整数

错误

#include<bits/stdc++.h>
using namespace std;
long long n=0,a=0,b=0;

int main()
{
    cin>>n;
    while(n--)
    {
        cin>>a>>b;
        cout<<a+b<<endl;
    }
}

注意:多组数据,n 也要循环输入

#include<bits/stdc++.h>
using namespace std;
long long n=0,a=0,b=0;

int main()
{
    while(cin>>n)
    {
    while(n--)
    {
        cin>>a>>b;
        cout<<a+b<<endl;
    }
    }
    return 0;
}

3. 若⼲⾏输⼊,每⾏输⼊两个整数,遇到特定条件终⽌

#include<bits/stdc++.h>
using namespace std;
long long a,b;

int main()
{
    while(cin>>a>>b)
    {
        if(a==0 && b==0) break;
        cout<<a+b<<endl;
    }
    return 0;
}

4. 若⼲⾏输⼊,遇到0终⽌,每⾏第⼀个数为N,表示本⾏后⾯ 有N个数

正确:

注意:如何实现累加 同行输入

#include<bits/stdc++.h>
using namespace std;
long long n=0,a=0,ret=0;

int main()
{
    while(cin>>n)
    {
        ret=0;  //初始化
        if(n==0) break;
        while(n--)
        {
            cin>>a;
            ret+=a;
        }
        cout<<ret<<endl;
    }
    return 0;
}
✔️这个地方 cin a,n 的输入 什么时候通过 换行,什么时候通过' '来实现,系统是怎么识别的
  • 空格和换行符对整数 cin >> 是等效的,均被视为分隔符
  • getline(cin,s) 空格不起作用,要通过换行符

5. 若⼲⾏输⼊,每⾏包括两个整数a和b,由空格分隔,每⾏输出 后接⼀个空⾏

正确:

#include<bits/stdc++.h>
using namespace std;
long long a,b;

int main()
{
    while(cin>>a>>b)
    {
        cout<<a+b<<endl;
        cout<<endl;
    }
    return 0;
}

⭕6. 多组n⾏数据,每⾏先输⼊⼀个整数N,然后在同⼀⾏内输⼊ M个整数, 每组输出之间输出⼀个空⾏

错误

#include<bits/stdc++.h>
using namespace std;
int N=0,n=0,a=0,ret=0;

int main()
{
    while(cin>>N)
{
    while(N--)
    {
        cin>>n;
        int ret=0;
        while(n--)
        {
            cin>>a;
            ret+=a;
        }
        cout<<ret<<endl;
        cout<<endl;
    }
}

    return 0;
}

多组数据之间也错误的换行了

正确

#include<bits/stdc++.h>
using namespace std;
int N=0,n=0,a=0,ret=0;

int main()
{
    while(cin>>N)
{
    while(N--)
    {
        cin>>n;
        int ret=0;
        while(n--)
        {
            cin>>a;
            ret+=a;
        }
        cout<<ret<<endl;
        if(N!=0) cout<<endl;
    }
}
    return 0;
}

加个判断就好啦~


⭕7. 多组样例,每组输入字符串,字符⽤空格分隔 ,输出 为⼩数点后两位

格式:

string s;
 while (getline(cin, s)) { // 接受⼀整⾏字符串
 for(int i = 0; i < s.size();i++) { // 遍历字符串

      cout << fixed << setprecision(2) << ans << endl;
    //!!!! 两位小数格式输出

正确

#include <bits/stdc++.h>
using namespace std;
double ret = 0.00, ans = 0.00;
string s;

int main() {
  while (getline(cin, s)) {
    int count = 0;
    double ret = 0.00;
    if(s.empty()) return 0;
    for (int i = 0; i < s.size(); i++) {
      if (s[i] != ' ') {
        count++;
        if (s[i] == 'A')
          ret += 4.00;
        if (s[i] == 'B')
          ret += 3.00;
        if (s[i] == 'C')
          ret += 2.00;
        if (s[i] == 'D')
          ret += 1.00;
        if (s[i] == 'F')
          ret += 0.00;
        if (s[i] == 'E' || s[i] >= 'G')
          ret = -1.00;
      }
      if (ret == -1.00)
        break;
    }
    if (ret == -1.00)
      cout << "Unknown" << endl;

    else {
      ans = ret / (double)count;
      cout << fixed << setprecision(2) << ans << endl;
    //!!!! 两位小数格式输出
    }
  }

  return 0;
}

8. 多组测试⽤例,第⼀⾏为正整数n, 第⼆⾏为n个正整数,n=0 时,结束输⼊,每组输出结果的下⾯都输出⼀个空⾏

错误

#include<bits/stdc++.h>
using namespace std;
int n=0;

int main()
{
    while(cin>>n)
    {
        if(n==0) break;
        int sum=0,count=0;
        vector<int> nums(n);
        int a=0;
        while(n--)
        {
            cin>>a;
            sum+=a;
            nums.push_back(a);
        }
        int ans=sum/nums.size();
        for(int& n:nums)
        {
            count+=abs(n-ans);
        }
        cout<<count/2<<endl<<endl;
        //积木移动 要除以2
    }
    return 0;
}

正确


9. 多组测试数据,每组数据只有⼀个整数,对于每组输⼊数据, 输出⼀⾏,每组数据下⽅有⼀个空⾏

正确·

#include<bits/stdc++.h>
using namespace std;

int main()
{
    string s;
    while(getline(cin,s))
    {
        int ret=0;
        for(char& c:s)
        {
            int n=c-'0';
            if(c%2==0) ret+=n;
        }
        cout<<ret<<endl<<endl;
    }
}

在C++11及以前中,整数和字符串互相转化的api


oj url :卡码网KamaCoder

http://www.dtcms.com/a/122365.html

相关文章:

  • 【MySQL】——事务的隔离性
  • Dubbo的简单介绍
  • 数据分析-Excel-学习笔记Day1
  • LeetCode Hot100 刷题笔记(2)—— 子串、普通数组、矩阵
  • Ubuntu22.04——YOLOv8模型训练到RK3588设备部署和推理
  • 实现抗隐私泄漏的AI人工智能推理
  • Linux进程控制:fork、exit与waitpid的江湖恩怨
  • C# 根据指定路径、文件格式、创建日期清理文件夹内文件,包括子目录
  • 从Transformer到世界模型:AGI核心架构演进
  • 微信小程序 -- 原生封装table
  • UV安装与使用
  • asp.net core 项目发布到 IIS 服务器
  • 场外期权只适合上涨行情吗?
  • CSS语言的游戏AI
  • ResNet改进(18):添加 CPCA通道先验卷积注意力机制
  • 从个人博客到电商中台:EdgeOne Pages的MCP Server弹性架构×DeepSeek多场景模板实战解析
  • 1.VTK 使用CMakeLists
  • Linux 编程中的 I/O 复用
  • Element UI 设置 el-table-column 宽度 width 为百分比无效
  • React九案例中
  • 敏捷迭代实战经验分享
  • leetcode_数组 189. 轮转数组
  • Odrive0.5.1-FOC电机控制 arm_cos_f32.cpp arm_sin_f32.cpp代码实现(一)
  • 中科岩创基坑自动化监测解决方案
  • 【11】数据结构之基于线性表的查找算法
  • 【消息队列kafka_中间件】一、快速入门分布式消息队列
  • Android 中Intent 相关问题
  • STM32CubeMX-H7-12-IIC读写MPU6050模块(中)-MPU6050模块详解以及软件IIC驱动
  • Node.js是js语言在服务器编译运行的环境,什么是IP和域名
  • Python包管理工具uv简单使用