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

[ACM_3] n组数据 | getchar() | getline(cin,s)

目录

14. 第⼀⾏是⼀个整数n,表示⼀共有n组测试数据, 之后输⼊n⾏ 字符串

15. 第⼀⾏是⼀个整数n,然后是n组数据,每组数据2⾏,每⾏ 为⼀个字符串,为每组数据输出⼀个字符串,每组输出占⼀⾏

16. 多组测试数据,第⼀⾏是⼀个整数n,接下来是n组字符串, 输出字符串

17. 多组测试数据,每组测试数据的第⼀⾏为整数N (1<=N<=100),当N=0时,输⼊结束,第⼆⾏为N个正整数, 以空格隔开,输出结果为字符串

示例模拟

输入1:N=5,序列 3 4 2 1 5


14. 第⼀⾏是⼀个整数n,表示⼀共有n组测试数据, 之后输⼊n⾏ 字符串

练习题 14. 句⼦缩写

模板

int n;
string result, s;
cin >> n;
getchar(); // 吸收⼀个回⻋,因为输⼊n之后,要输⼊⼀个回⻋
while (n--) {
    getline(cin, s);
    for (int i = 1; i < s.size() - 1; i++) {
    }

正确:

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

string solve(string& s)
{
    if(s.empty()) return "";
    string ret;
    ret+=toupper(s[0]);
    for(int i=1;i<s.size();i++)
    {
        if(s[i]==' ' && s[i+1]!=' ')
        {
            ret+=toupper(s[i+1]);
        }
    }
    return ret;
}

int main()
{
    int n=0;
    while(cin>>n)
    {
        getchar();  
//!!!! 清除输入缓冲区残留的换行符
        string s;
        while(n--)
        {
            getline(cin,s);
            cout<<solve(s)<<endl;
        }
    }
    return 0;
}

关于 大小写转化


15. 第⼀⾏是⼀个整数n,然后是n组数据,每组数据2⾏,每⾏ 为⼀个字符串,为每组数据输出⼀个字符串,每组输出占⼀⾏

正确

//实现 字符串 数据插入
#include<bits/stdc++.h>
using namespace std;

int main()
{
    int n=0;//组
    cin>>n;
    getchar();
    string a,b;
    while(n--)
    {
        getline(cin,a);
        getline(cin,b);
        int pos=a.size()/2;
        a.insert(pos,b);
        cout<<a<<endl;
    }
    return 0;
}

  • 一定要记得 get char

16. 多组测试数据,第⼀⾏是⼀个整数n,接下来是n组字符串, 输出字符串

练习题:16. 位置互换

正确·


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

int main()
{
    int n=0;//组
    cin>>n;
    getchar();
    string a;
    while(n--)
    {
        getline(cin,a);
        string ret;
        for(int i=0;i<a.size();i++)
        {
            ret+=a[i+1];
            ret+=a[i];
            i++;
        }
        cout<<ret<<endl;
    }
    return 0;
}

17. 多组测试数据,每组测试数据的第⼀⾏为整数N (1<=N<=100),当N=0时,输⼊结束,第⼆⾏为N个正整数, 以空格隔开,输出结果为字符串

练习题:17. 出栈合法性

  • 首先 要理解 这里的栈模拟过程

示例模拟

输入1:N=5,序列 3 4 2 1 5

操作步骤

栈状态

目标指针位置

说明

入栈1

[1]

j=0 (C[0]=3)

栈顶1 ≠ 3,继续入栈

入栈2

[1,2]

j=0

栈顶2 ≠ 3,继续入栈

入栈3

[1,2,3]

j=0

栈顶3 = C[0]=3,弹出3,j=1

入栈4

[1,2,4]

j=1 (C[1]=4)

栈顶4 = C[1]=4,弹出4,j=2

检查栈顶2

[1,2]

j=2 (C[2]=2)

栈顶2 = C[2]=2,弹出2,j=3

检查栈顶1

[1]

j=3 (C[3]=1)

栈顶1 = C[3]=1,弹出1,j=4

入栈5

[5]

j=4 (C[4]=5)

栈顶5 = C[4]=5,弹出5,j=5

栈空

[]

-

合法,输出 Yes

正确:

#include <iostream>
#include <stack>
#include <vector>
using namespace std;

int main() {
    int n;
    while (cin >> n && n != 0) {  // 处理多组输入
        vector<int> a(n);
        for (int i = 0; i < n; i++) cin >> a[i];  // 改用动态数组 

        stack<int> stk;
        int j = 0;
        for (int i = 1; i <= n; i++) {  // 按顺序入栈1~n 
            stk.push(i);
            // 每次入栈后检查栈顶是否匹配目标序列
            while (!stk.empty() && stk.top() == a[j]) {  // 添加空栈判断 
                stk.pop();
                j++;
            }
        }
        cout << (stk.empty() && j == n ? "Yes" : "No") << endl;  // 双重验证合法性 
    }
    return 0;
}

相关文章:

  • 代码重构学习
  • 塔能物联运维:成功打破物联网设备之间的互联互通难题
  • 蓝桥杯备赛学习笔记:高频考点与真题预测(C++/Java/python版)
  • Java 中序列化和反序列化
  • C语言【模仿strcpy】
  • kkFileView的安装和使用
  • fabric test-network启动
  • RAI Toolbox详解
  • 同一个网段下内网机器通过转发网络到堡垒机来访问外网的方式
  • Java进阶版线程池(超详细 )
  • TorchServe部署模型-index_to_name.json
  • 硕日新能SRNE Solar 荣获 TÜV NORD 目击实验室认可资质!
  • FRP驱动本地摄像头实现远程图传
  • js异步机制
  • Unity3D多线程与协程优化分析
  • 【资料分享】瑞芯微RK3506(3核ARM+Cortex-A7 + ARM Cortex-M0)工业核心板选型资料
  • 【KWDB 创作者计划】_ruby基础语法
  • JVM虚拟机篇(七):JVM垃圾回收器全面解析与G1深度探秘及四种引用详解
  • C语言【输出字符串中的大写字母】
  • Codeforces Round 1016 (Div. 3)
  • 做网站设计哪家好/seo到底是做什么的
  • bl做视频网站/聊城今日头条最新
  • 珠海建站程序/关键词搜索引擎工具爱站
  • 脑洞大开的创意设计/整站seo排名外包
  • 怎样去查网站备案号/做推广哪个平台好
  • 十大奢侈品牌logo图片/深度优化