C++语法基础课 习题5 —— 字符串

news2024/9/20 5:56:33

文章目录

  • 例题
    • 1. 760.字符串的长度(fgets函数)重点!
    • 2. 761.字符串中数字的个数
    • 3. 763.循环相克令
    • 4. 765.字符串加空格(getline函数+auto用法)重点!
    • 5. 769.替换字符 重点!
    • 6. 773.字符串的插入(substr函数)重点!
    • 7. 772.只出现一次的字符(难题)
  • 习题
    • 1. 762.字符串匹配
    • 2. 768.忽略大小写比较字符串大小
    • 3. 767.信息加密
    • 4. 766.去除多余的空格
    • 5. 764.输出字符串
    • 6. 770.单词替换

例题

1. 760.字符串的长度(fgets函数)重点!

Acwing 760.字符串的长度

  • 使用fgets函数
#include <iostream>
#include <cstdio>
using namespace std;

int main()
{
	char str[101];
	fgets(str,102,stdin);// stdin是系统定义好的变量,fgets会把回车读进来,就是说不会过滤回车
	
	int len = 0;
	for(int i = 0;str[i] && str[i] != '\n';i++) len++;// str[i]遇到\0就跳出来, str[i]不能等于回车,因为fgets会自动读入回车
	
	cout << len << endl;
	return 0;
}
  • 使用getline函数
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;

int main()
{
    string str;
    getline(cin,str);
    
    cout << str.size() << endl;
    return 0;
}
  • 方法3
#include<iostream>
#include<cstdio>
using namespace std;

int main()
{
    char c;
    
    int len = 0;
    while(~scanf("%c",&c)) len++;
    
    cout <<len << endl;
    return 0;
}

2. 761.字符串中数字的个数

Acwing 761.字符串中数字的个数

#include<iostream>
#include<cstdio>
using namespace std;

int main()
{
    char str[101];
    fgets(str,102,stdin);
    
    int cnt = 0;
    for(int i = 0;str[i]; i++)
        if(str[i] >= '0' && str[i] <= '9')
            cnt++;
    
    cout << cnt << endl;
    return 0;
}

3. 763.循环相克令

Acwing 763.循环相克令
在这里插入图片描述

#include<iostream>
#include<cstdio>
using namespace std;

int main()
{
    int n;
    cin >> n;
    
    while(n--)
    {
        string a,b;
        cin >> a >> b;
        
        int x,y;
        if(a == "Hunter") x = 0;
        else if(a == "Bear") x = 1;
        else x = 2;
        
        if(b == "Hunter") y = 0;
        else if(b == "Bear") y = 1;
        else y = 2;
        
        if(x == y) puts("Tie");
        else if (x == (y + 1) % 3) puts("Player1");% 使用%可以让10,21,02均符合
        else puts("Player2");
    }
    return 0;
}

4. 765.字符串加空格(getline函数+auto用法)重点!

Acwing 765.字符串加空格

#include<iostream>
using namespace std;

int main()
{
    string a;
    getline(cin, a);// getline函数只能用到string类型
    
    string b;
    for(auto c : a) b = b + c + ' ';
    
    b.pop_back();// 把新生成的字符串最后的空格删除
    
    cout << b << endl;
    return 0;
}

5. 769.替换字符 重点!

Acwing 769.替换字符

#include<cstdio>
#include<iostream>

using namespace std;

int main()
{
    char str[31];
    scanf("%s",str);// 读入到回车或者'\0'就结束了
    
    char c;
    scanf("\n%c", &c);// 读入要替换的字符,读入字符不会自动过滤掉前面的回车\n,会读入回车。需要在前面加\n
    
    for(int i = 0;str[i];i++)
        if(str[i] == c)
          str[i ] = '#';
    
    puts(str);
    return 0;
}

6. 773.字符串的插入(substr函数)重点!

Acwing 773.字符串的插入
在这里插入图片描述

  • substr函数可以查找从i开始,长度为len的字符串
    在这里插入图片描述
#include<iostream>
using namespace std;

int main()
{
    string a, b;
    
    while(cin >> a >> b)
    {
        int p = 0;
        for(int i = 0;i < a.size();i++)// string字符串本身就是数组
            if(a[i] > a[p])
                p = i;// 得到Ascii值最大的字符的下标
    
        //前一个指从坐标0开始,长度为p+1的字符,后面是从坐标p+1开始,到最后的字符
        cout << a.substr(0, p+1) << b << a.substr(p+1) << endl;
    }
    return 0;
}

7. 772.只出现一次的字符(难题)

Acwing 772.只出现一次的字符

#include<iostream>
#include<cstdio>
#include<cstring>// 字符串的函数
using namespace std;

int cnt[26] = {0};// 存储每个字母出现的次数
char str[100010];// 存储字符串

int main()
{
    cin >> str;
    
    // str[i]里面都是小写字母,小写字母 - 'a'结果是整数,0-25分别表示a-z,'a'在做运算时都是整数运算
    for(int i = 0;str[i];i ++) cnt[str[i] - 'a'] ++;// cnt[]++表示对当前数组元素进行自增操作,元素值+1
    
    for(int i = 0;str[i];i ++)
        if(cnt[str[i] - 'a'] == 1)// 判断cnt[]中哪一个的元素值为1
        {
            cout << str[i] << endl;
            return 0;
        }
    
    puts("no");
    return 0;
}

习题

1. 762.字符串匹配

Acwing 762.字符串匹配

#include<iostream>
using namespace std;

int main()
{
    double k;
    string a, b;
    cin >> k >> a >> b;
    
    int cnt = 0;
    for(int i = 0;i < a.size();i++)
        if(a[i] == b[i])
            cnt++;
    
    if((double)cnt / a.size() >= k) puts("yes");
    else puts("no");
}

2. 768.忽略大小写比较字符串大小

Acwing 768.忽略大小写比较字符串大小

#include<iostream>
#include<cstdio>// char需要
#include<cstring>// strcmp需要

using namespace std;

int main()
{
    char a[100], b[100];
    fgets(a, 100, stdin);
    fgets(b, 100, stdin);
    
    // fgets多了回车符,需要去掉回车符
    if(a[strlen(a) - 1] == '\n') a[strlen(a) - 1] = 0;
    if(b[strlen(b) - 1] == '\n') b[strlen(b) - 1] = 0;
    
    for(int i = 0; a[i];i++)
        if(a[i] >= 'A' && a[i] <= 'Z') 
            a[i] += 32;// 变成小写
            
    for(int i = 0; b[i];i++)
        if(b[i] >= 'A' && b[i] <= 'Z') 
            b[i] += 32;
    
    int t = strcmp(a, b);
    if(t == 0) puts("=");
    else if(t < 0) puts("<");
    else puts(">");
    
    return 0;
}

3. 767.信息加密

Acwing 767.信息加密

#include<iostream>
using namespace std;

int main()
{
    string s;
    getline(cin, s);// 读入有空格的字符串
    
    for(auto &c : s)
    {
        if(c >= 'a' && c <= 'z') c = 'a' + (c - 'a' + 1) % 26;// 后面表示新的偏移量
        else if(c >= 'A' && c <= 'Z') c = 'A' + (c - 'A' + 1) % 26;
    }
    
    cout << s << endl;
    return 0;
}

4. 766.去除多余的空格

Acwing 766.去除多余的空格

  • cin 做法
#include<iostream>
using namespace std;

int main()
{
    string s;
    while(cin >> s) cout << s <<' ';// cin 遇到空格就停止读入,读入一个字符串,就加一个空格
    
    return 0;
}
  • 方法2:双指针算法

在这里插入图片描述

5. 764.输出字符串

Acwing 764.输出字符串

#include<iostream>

using namespace std;

int main()
{
    string a,b;
    getline(cin, a);
    
    for(int i = 0;i < a.size();i++)
        b += (char)(a[i] + a[(i+1)%a.size()]);// %因为i为最后一个字母时,i+1要变为零
    
    cout << b << endl;
    return 0;
}

6. 770.单词替换

Acwing 770.单词替换

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/139208.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python逆向进阶教程笔记(1)

视频地址&#xff1a;Day1初识JS逆向 混淆与无混淆数据加密方案解析实战-36Kr数据加密解析 (AES数据逆向)_哔哩哔哩_bilibili 未完待续 一、排错 1.1&#xff09; 目的&#xff1a;抓页面借口&#xff0c;简单请求会被拦截 1.2&#xff09; 网址&#xff1a;乌海市公共资源…

OSPF-MGRE实验(1.3)

要求&#xff1a; 1、首先为每个路由器配置接口ip和环回ip实现第一个目标 r1&#xff1a; [r1]interface GigabitEthernet 0/0/0 [r1-GigabitEthernet0/0/0]ip add 16.1.1.1 24 [r1-GigabitEthernet0/0/0]int gi0/0/1 [r1-GigabitEthernet0/0/1]ip add 61.1.1.1 24 [r1-Gigab…

java File类详细

目录 File创建 1.File&#xff08;String pathname&#xff09; 2. File&#xff08;String parent,String child&#xff09; 3.File(File f,String child) file类的使用 基本操作&#xff1a; 文件夹的操作 File创建 1.File&#xff08;String pathname&#xff09; …

一起快速了解单片机入门知识吧!

从事计算机和电子信息技术行业的都熟知单片机一词&#xff0c;但是你真的了解单片机吗&#xff1f;单片机的种类有哪些&#xff1f;单片机有什么特点&#xff1f;单片机的工作原理是什么&#xff1f;下面一起来了解单片机知识吧&#xff01;在学习单片机知识前&#xff0c;我们…

多数据库学习之SQL Server查询表自增主键字段信息SQL

多数据库学习之SQL Server查询表自增主键字段信息SQL前言概念SQL样例方式一&#xff1a;系统内置存储过程查找方式二&#xff1a;通过INFORMATION_SCHEMA模式下系统视图获取方式三&#xff1a;通过sys模式下系统视图获取参考链接前言 Microsoft SQL Server简介 Microsoft SQL S…

Zookeeper详解(三)——开源客户端curator

开源客户端curator (true re de) curator是Netflix公司开源的一个zookeeper客户端&#xff0c;后捐献给apache&#xff0c;curator框架在zookeeper原生API接口上进行了包装&#xff0c;解决了很多zooKeeper客户端非常底层的细节开发。提供zooKeeper各种应用场景(比如&#xf…

CSS3 动画案例

文章目录变形效果案例照片墙过渡效果案例鼠标移动显示内容图片文字滑动效果白光闪过效果手风琴效果动画案例脉冲动画loading效果灯光闪烁动画代码变形效果案例 照片墙 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>&…

ESP IDF:观察者Observer用例实现

ESP IDF:观察者 Observer用例实现 #include <stdio.h> // #include #include // using namespace std; //抽象的英雄 抽象的观察者 Observer class AbstractHero { public: virtual void Update() 0; }; std::list<AbstractHero*> mlist; std::list<Abstr…

Linux:vim工具

文章目录一.vim简单介绍1.1vim使用1.2vim常见的模式二.vim中的指令2.1set nu/set nonu(调出/取消行号)先导&#xff1a;下面这些命令都是在命令模式下运行2.2yy/p(复制/粘贴)2.3dd(剪切)2.4u/ctrl r(撤销/把撤销撤销)2.5shift g/g g(光标定位末尾/光标定位第一行)2.6shift 4/sh…

Docker高级篇_mysql主从复制、redis集群

目录Docker复杂安装详说安装mysql主从复制安装redis集群3主3从Redis集群&#xff08;基于哈希槽分区&#xff09;主从容错切换迁移主从扩容主从缩容Docker复杂安装详说 安装mysql主从复制 1.新建主服务容器3307 docker run -d -p 3307:3306 --privilegedtrue -v /zhoujmi/my…

Spring Framwork_01

Core Container(核心容器):管理对象的技术 1.Beans 2.Core 3.Context 4.SpEL Core&#xff1a;核心工具包&#xff0c;包括字节码操作cglib、asm&#xff0c;资源的抽象Resource&#xff0c;对象实例化化工具等等。 Beans&#xff1a;Bean 的定义、Bean 的创建以及对 Bean 的解…

【自学Java】Java循环结构

Java循环结构 Java while教程 在 Java 语言 中&#xff0c;关键字 whie 用于判断一个判断条件&#xff0c;如果返回值都是 true&#xff0c;那么它会一直执行。与 if 不同之处在于&#xff0c;if 只会执行一次&#xff0c;而 while 中&#xff0c;只要条件满足&#xff0c;会…

【迅为iMX6Q】开发板 u-boot 2015.04 SD卡 启动

前言 最近为了深入研究 嵌入式Linux 的开发&#xff0c;把【迅为iMX6Q】开发板 找了出来&#xff0c;重新搭建了开发编译环境 【迅为iMX6Q】开发板 的 u-boot&#xff0c;放在了 android 源码中&#xff0c;可以从 【迅为iMX6Q】开发板 网盘资料里&#xff0c;下载 iTOP-iMX6_…

Windows下redis环境搭建(可查看源码及Debug调试进入源码)及简易使用

Windows下redis环境搭建&#xff08;可查看源码及Debug调试进入源码&#xff09;及简易使用 在我们使用redis进行学习的过程中&#xff0c;在Windows平台上进行学习是一个非常高效的选择&#xff0c;因此下面介绍如何在Windows环境下搭建一个redis环境&#xff08;即可Debug调试…

数据结构之入门二叉树

文章目录前言1.二叉树的知识铺垫2.二叉树的具体实现1.递归实现前中后序遍历2.其它相关接口的实现1.求二叉树的节点个数2.求叶子节点个数3.二叉树查找值为x的节点3.求树高度4.求k层节点的个数5.层序遍历6.判断二叉树是否是完全二插树3.总结前言 之前用数组实现了一种特殊的完全…

解决word写论文改成两栏时mathtype的公式无法居中的问题

想要的格式 投论文的时候&#xff0c;有很多期刊的要求是两栏排版&#xff0c;比如中国电机工程学报 理论上&#xff0c;用mathtype输入的公式&#xff0c;会根据word的格式自动地调整自己的缩进量&#xff08;更确切地说&#xff0c;是会自动调整制表位&#xff09;。比如下…

新手入门指南之玩转蓝桥云课(线上运行虚拟机,c++,Java,Javaweb,python环境,以及如何成功利用命令行运行这些环境)

目录 你好&#xff0c;蓝桥云课 &#x1f44b; &#x1f332;欢迎来到蓝桥云课&#x1f332; 为什么要用 Linux 实验精神 蓝桥云课课程 加入课程 开始实验 实验环境 讨论发帖 实验报告 有效学习时间 我们的目标是星辰大海 &#x1f350;Linux 桌面环境使用指南&…

【C++ Primer】阅读笔记(4):string

目录 简介初始化string对象初始化方法直接初始化与拷贝初始化string对象上的操作操作方式读取string对象(cin>>s、cout<<s)getline(is,s)empty()size()string对象的比较(>、<、<=、>=)两个string对象相加(s1+s2)字面值与string对象相加遍历string对象参…

Jenkins复制和导出导入job

一、同一个Jenkins中复制job如果是同一个Jenkins复制job&#xff0c;只需要在创建Job时&#xff0c;选择Copy from一个已有的job即可。也就是在下方上面的红框中输入你新建job的名称&#xff0c;在下面的红框中输入你想要复制的job(已经建好的job)&#xff0c;然后点击确定。这…

【C初阶】实用调试技巧

实用调试技巧前言一、什么是bug&#xff1f;二、调试是什么&#xff1f;&#xff08;一&#xff09;调试&#xff08;二&#xff09;调试的基本步骤&#xff08;三&#xff09;Debug和Release的介绍。1.简单介绍三、Windows环境调试介绍&#xff08;一&#xff09;调试环境的准…