冲刺蓝桥杯第一章输入与输出

取消同步流加速cin/cout运行时间

cin 与 cout 是 C++ 提供的函数输入输出方便但速度较慢,所以需要用指令进行输入输出加速,切记使用加速命令后不要同时使用cin/cout与scanf/printf。

cpp 复制代码
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);

scanf 与 printf 其实是 C 语言提供的函数。大多数情况下,它们的速度比 cin 和 cout 更快,并且能够控制输入输出格式。

其中有些类型输出需要注意:

  1. %s 表示字符串。
  2. %c 表示字符。
  3. %lf 表示双精度浮点数 ( double )。
  4. %lld 表示长整型 ( long long )。
  5. %llu 表示无符号长整型 ( unsigned long long ),无符号整数不能读
    入负数。

多组输入

题目描述

给你若干个数字,最后一个数字是 0,让你统计这些数字中有有多少个偶数,和所有奇数的和。

输入格式

一行,若干个数字,最后一个数字是 0。

输出格式

第一行是这些数字中的偶数的个数。 第二行是这些数字中奇数的总和。

样例

输入数据

复制代码
12 53 72 3 9 94 36 54 28 99 93 36 6 0

输出数据

复制代码
8
257

数据范围

所有输入的数字不超过 int 范围

code:

cpp 复制代码
#include<iostream>
using namespace std;
int main(){
    int n;
    int ans=0;
    int res=0;
    while(cin>>n&&n!=0){
        if(n%2==0) ans++;
        else res+=n;
    }
    cout<<ans<<endl<<res<<endl;
    return 0;
}//如果没有以零结尾则需要输入ctrl+z再按一下回车即可正常结束程序

getline读入带空格的字符串

在读入字符串的时候如果用 cin 或 scanf 会无法读入空格,因为cin 或 scanf 读入空格后会认为字符串读入已经结束。所以我们需要用getline 读入带空格的字符串。

题目描述1

小明刚写了一篇美妙的作文,请问这篇作文的标题中有多少个字符? 注意:标题中可能包含大、小写英文字母、数字字符、空格和换行符。统计标题字符数时,空格和换行符不计算在内。

输入格式

输入文件只有一行,一个字符串 s。

输出格式

输出文件只有一行,包含一个整数,即作文标题的字符数(不含空格和换行符)。

样例

输入数据 1

复制代码
Love makes the world go around

输出数据 1

复制代码
25

解释#1

标题中共有 30 个字符,其中 25 个字符是标题字符。

输入数据 2

复制代码
Ca 45

输出数据 2

复制代码
4

解释#2

标题中共有 5 个字符,包括 1 个大写英文字母,1 个小写英文字和 2 个数字字符, 还有 1 个空格。由于空格不计入结果中,故标题的有效字符数为 4 个。

code:

cpp 复制代码
#include<iostream>
using namespace std;
int main(){
    string s;
    getline(cin,s);
    int cnt=0;
    for(int i=0;i<s.size();i++){
        if(s[i]!=' ') cnt++;
    }
    cout<<cnt<<endl;
    return 0;
}

题目描述2

拓拓在写一个英文作文作业,但是他比较粗心潦草,打出的单词中间有许多个连续空格。现在请你编程帮他过滤掉单词中间的多余的空格,只留下一个空格。

输入格式

一行,一个字符串(长度不超过 200),句子的头和尾都没有空格。

输出格式

一行,一个字符串表示过滤之后的句子。

样例

输入数据 1

复制代码
Hello         world.  This is c++      language.

输出数据 1

复制代码
Hello world. This is c++ language.

code1:

cpp 复制代码
#include<iostream>
using namespace std;
int main(){
    string s;
    getline(cin,s);
    for(int i=0;i<s.size();i++){
        if((s[i]==' '&&s[i+1]!=' ')||s[i]!=' ') cout<<s[i];
    }
}

code2:

利用cin读入时忽略空格符,进行循环读入。

cpp 复制代码
#include<iostream>
using namespace std;
int main()
{
    string s;
    while(cin>>s) {
        cout<<s<<" ";
    }
}

getline与cin混用产生的问题及字符串与数字的转换

cin 读入后会剩一个换行符, getline 会把这个换行符读进来导致

直接结束字符串读入,所以在使用的时候尽量避免 getline 与 cin 混用。

题目描述

小明刚写了一篇美妙的作文,请问这篇作文的标题中有多少个字符? 注意:标题中可能包含大、小写英文字母、数字字符、空格和换行符。统计标题字符数时,空格和换行符不计算在内。

输入格式

第一行一个整数 n,表示字符串长度(包含空格在内)

第二行一个字符串 s。

输出格式

输出文件只有一行,包含一个整数,即作文标题的字符数(不含空格和换行符)。

样例

输入数据 1

复制代码
30
Love makes the world go around

输出数据 1

复制代码
25

解释#1

标题中共有 30 个字符,其中 25 个字符是标题字符。

输入数据 2

复制代码
5
Ca 45

输出数据 2

复制代码
4

解释#2

标题中共有 5 个字符,包括 1 个大写英文字母, 1 个小写英文字母和 2 个数字字符, 还有 1 个空格。由于空格不计入结果中,故标题的有效字符数为 4 个。

code:

cpp 复制代码
#include<iostream>
using namespace std;
int main(){
    string s1;
    string s2;
    getline(cin,s1);
    getline(cin,s2);
    int cnt=0;
    int n=stoi(s1);//stoi 函数将字符串转化为了数字,如果想将数字转化为字符串可以使用 to_string()
    for(int i=0;i<n;i++){
        if(s2[i]!=' ') cnt++;
    }
    cout<<cnt;
    return 0;
}
相关推荐
wfbcg17 小时前
每日算法练习:LeetCode 36. 有效的数独 ✅
算法·leetcode·职场和发展
沈跃泉17 小时前
C++串口类实现
c++·windows·串口通信·串口类
智者知已应修善业17 小时前
【51单片机非精准计时2个外部中断启停】2023-5-29
c++·经验分享·笔记·算法·51单片机
沐雪轻挽萤17 小时前
3. C++17新特性-带初始化的 if 和 switch 语句
开发语言·c++
QQ6765800817 小时前
基于YOLO26算法的智慧农业橙子图像识别 橙子采摘识别 水果采摘识别 高清采摘过程图像识别 YOLO+voc个数据集第10410期
算法·yolo·橙子采摘·水果采摘识别·高清采摘过程图像识别
潇洒畅想18 小时前
1.2 希腊字母速查表 + 公式阅读实战
java·人工智能·python·算法·rust·云计算
酉鬼女又兒18 小时前
零基础快速入门计算机组成原理:《DRAM 刷新方式小结 & SRAM/DRAM 优劣及主存缓存划分》
考研·职场和发展·电脑·计算机组成原理
weixin_5134499618 小时前
EXTREME-PARKOUR项目学习记录
人工智能·学习·算法·机器人
测绘第一深情18 小时前
MapQR:自动驾驶在线矢量化高精地图构建的端到端 SOTA 方法
数据结构·人工智能·python·神经网络·算法·机器学习·自动驾驶
Magic--18 小时前
C++ 智能指针
开发语言·c++·算法