头像

ghb_zZZ


访客:995

离线:9小时前


新鲜事 原文

ghb_zZZ
18小时前
周一周二复学测验,停更一周!


分享 预告

ghb_zZZ
7天前

今日由于蓝桥杯,停更一天,会找时间给大家讲蓝桥杯的题目,这次题目非常简单,一次处理完,望周知




ghb_zZZ
8天前

No.4 c++简单计算

hello大家好,前几节有很多朋友表示讲的内容太简单,能不能讲一些难的内容,关于这个的话,是肯定会讲的,但是需要慢慢来,毕竟看的人不只这些大佬我们先入门,再入土,我也会尽量加快进度和知识点的密度,喜欢的话可以点个赞鼓励一下,那么我们进入今天的正题————简单的计算。


我们说过,c++的输出可以输出一个算式的结果,那么我们今天就要来使用这一功能。首先,我们来输出固定算式 3+5 的结果,这属于上节课直接输出的内容这里直接看代码

#include <iostream>
using namespace std;
int main() {
    cout << 3 + 5;
    return 0;
}

直接输出,没有难度。那么题目不会就这么简单的,我们需要让程序输出不固定的两个数的和,而这两个数由输入决定。那么我们首先要知道如何输入两个数。
首先,我们需要让程序知道有这样两个数,然后才能通过输入告诉他这两个数是几。这就需要我们声明两个变量,分别存储我们输入的两个加数的值a,b。那么我们这里用 int这个类型存储。 int是一个整数类型,可以存储-2147483648~2147483647范围内的整数,我们这里用它来存储就可以。接着就是输入了,与输出相同,它也存在于 iostrea这个头文件中。与c“out”相对,输入就是c”in”了;输出是“<<”,那输入就是“>>”,还要注意的是,我们在输出时可以无节制的输出大量内容,而输入时只能一个值一个值的输入(string类型是一串) ,那么我们来看一下代码

#include <iostream>
using namespace std;
int main() {
    int a, b;//声明两个int类型的变量
    cin >> a >> b;//输入两个变量的值
    cout << a + b << endl;//输出两个变量的和。
    return 0;
}

这就是基础的a+b问题,链接到题库中的A+B
那么运算符号只有‘+’吗,不可能的,c++的基础运算比生活中的4则还要多一种,分别是‘+’‘-’‘’‘/’‘%’。‘+’‘-’大家应该都是知道的,就是加法和减法;‘’是乘法;而‘/’‘%’需要大家重点区分,‘/’在被除数和除数都是整数时为整除运算符,及不会得出小数,而‘%’读作‘取模’(简称‘模’,‘%%%’常用来表示膜拜大佬)是两个整数取余数的运算符。但当被除数或除数为小数时,那么‘/’就是普通的带小数除法符号了,而‘%’不能在有小数的情况下使用。


啊,又是短小精悍的一天呢。今天的内容就到这里了,留一个小作业,写出‘A-B’‘A*b’‘A/B’‘A%B’的代码,那我们就到这里,再见!




ghb_zZZ
10天前

001.PNG

002.PNG

003.PNG

004.PNG

005.PNG

006.PNG




ghb_zZZ
10天前

《c++从入门到入土》No.3 无需处理的直接输出

hello everyone,我们经过了两节课的理论和文字性的学习,今天,我们要开始写下第一条代码了!目的一是让大家熟悉c+ +的代码格式以及acwing的编译环境,二是学习如何用c+ +代码让程序输出一局话。下面我们正式开始!


我们直接放出需要解决的问题:

写一段代码,输出“hello c++, hello acwing!” 并换行输出“I love coding”。

输入:

输出:
hello c++, hello acwing!
I love coding

这是一道非常经典的问题,基本上是大家编程学习开始的必写内容,由于不需要任何算法思考,我们直接进入代码的构造环节。
大家如果电脑上有c+ +的编译器就可以在本地的编译器上写,如果没有也可以直接在acwing的云端编译器上写: 这里

框架

那么今天我们的第一部分就来写好代码的一个框架,如果有不明白的地方,请参考上节的内容,链接: 这里

1.头文件

头文件是每个程序必然的开始,c+ +中任何的输入输出以及很多常用的函数都可以通过调用头文件来实现。我们这次的任务就是进行一段文字的输出,那么我们就必须先写出包含输出方法的头文件———— iostream,这个头文件的名字就能体现出它所包含的内容和功能:“‘i’是‘in’表示输入,‘o’是‘out’表示输出,‘stream’在英语中是溪流,水流的意思”所以我们可以简单的把这个头文件理解为“输入输出流”,也就是c+ +中专管标准输入输出的头文件。我们今天要用到的就是他。第一段代码如下:

#include <iostream>

2.namespace

这部分的话没什么好说的,该说的都在上节的内容里,基本上永远不会变化,他永远还是那个少年。链接刚刚也给过大家了,我们直接把他写下来就可以

#include <iostream>

using namespace std;

3.主函数

今天的代码是直接输出一段话,所以没有任何变量和函数的定义所以我们直接写下主函数即可;

#include <iostream>

using namespace std;

int main() {

    return 0;
}

代码实现

完成了代码的框架,下面我们就开始写代码来实现要求的功能了。题目要求:“输出XXX”,那么我们先要知道,如何实现文字的输出。我们刚刚引入了输入输出流的头文件,那么现在就是他出场的时候了。当当当当 cout这就是我们今天的主角了,没有错,他就是标准输出,格式为 cout << 输出内容 << ...;cout加两个小括号加内容以及最后的分号,我们也可以看出,一个cout是可以输出多个内容的,但注意中间一定要用“<<”断开。
cout输出的内容很广泛,固定的文字,数字甚至算式的结果还有换行,举例如下:

1.数字

cout << 1 << 2 << 3;

效果:123

2.符号&&文本

cout << "abcde" << " " << "fghij";

效果:abcde fghij

3.算式结果

cout << 1 + 2;

效果:3

4.换行

cout << 1 << endl << 2; //endl就是换行了,end是结束,l表示行(hang),也就是一行的结束。

效果:
1
2

那么现在你应该知道如何完成题目所要求的输出了吧:

cout << "hello c++, hello acwing!" << endl << "I love coding";

那么我们把它填充到框架的主函数中,完成代码:

#include <iostream>

using namespace std;

int main() {
    cout << "hello c++, hello acwing!" << endl << "I love coding";
    reutrn 0;
}

好了,今天的内容就这些了,如果有误或建议可以右下角私信我哦,留下你的赞,我们下次见。




ghb_zZZ
11天前

No.2 走进c++代码

hello,大家吼!我们在第一节了解了一些关于c+ +的专业知识那么今天的第二节,我们就正式来了解一下c+ +的代码格式吧!
c+ +的代码大概由5部分组成(常见):
注:连接至百度百科

  1. 头文件
  2. 命名空间(namespace
  3. 全局变量
  4. 函数定义
  5. 主函数main

那么下面,我们一一的来看一看这五块内容(大致了解功能和格式,具体以后会分课详讲)



1.头文件

头文件是C语言及c++语言中必不可少的内容,被大量的使用在代码中,而它的功能也非常强大。他通常包含着一些已经写好的可以直接调用的功能函数,比如sqrt()就是一个包含在 <cmath> 头文件中的开根号函数,并且在写过头文件后可以直接使用。头文件还可能包含数据接口的声明,最简单的例子 cin, cout printf, scanf, freopen 等就是这样。头文件要写在代码的最开始格式为

#include <iostream>
#include <cstdio>
#include <bits/stdc++.h>
//#include <头文件名>
//头文件

//命名空间namespace

//全局变量

//函数

//主函数main

2.命名空间namespace

命名空间可以说是最平常的一个了,基本情况下就直接把他当做一个模板就好,每次写代码加上他,不需要任何的改变,这里不过多赘述,直接上代码格式 using namespace std,写在头文件之后,全局变量之前。

#include <iostream>
#include <cstdio>
#include <bits/stdc++.h>
//#include <头文件名>
//头文件

using namespace std;
//命名空间namespace

//全局变量

//函数

//主函数main

3.全局变量

说到全局变量,就先说说什么是变量,这里没有枯燥的术语,你大可以直接把它理解为一个箱子,变量有许多不同的类型(int, long long等,以后会讲),而这个箱子也有不同的种类之分。每个箱子可以放不同的东西,每种箱子可以放不同种类的东西,在程序中,你可以随时向箱子中存入物品,也可以随时取出物品,这个箱子就是变量,而存入取出的物品就是变量的值。需要注意的是,这个值的类型必须与箱子的种类相搭配,箱子要数字,你的值就得是数字,箱子能装一个字符,那你就要存字符,而且存入的物品必须在箱子的容积范围内。全局变量的定义在namespace之后,函数之前,格式为 变量类型 + 变量名

#include <iostream>
#include <cstdio>
#include <bits/stdc++.h>
//#include <头文件名>
//头文件

using namespace std;
//命名空间namespace

int a;
double b;
long long c;
//变量类型 + 变量名
//全局变量

//函数

//主函数main

4.函数

函数的定义就是比较高阶一些的内容了,这里简单的介绍一下,刚刚在头文件中说过,头文件会自带可以调用的函数,而如果你需要一个头文件中不存在的函数时,你就要自己去写了,这样可以在一定程度上简化你的程序,加快运行速度,也能够做出必要的递归操作。函数定义写在全局变量的定义之后,主函数之前或主函数之后。

#include <iostream>
#include <cstdio>
#include <bits/stdc++.h>
//#include <头文件名>
//头文件

using namespace std;
//命名空间namespace

int a;
double b;
long long c;
//变量类型 + 变量名
//全局变量

void dfs(int a, int b) {

    return;
}
//函数类型 + 函数名(函数中用到的变量){
//    函数内容;
//}
//函数

//主函数main

5.主函数

当当当当,那么最后登场的就是我们程序的核心,主体————主函数(main)了。它的功能非常简单而重要:所有的程序都要在这里运行,是代码的主体,它可能不是最长的,但是必须的,没有他,别的函数写的再长也没有办法读取变量和运算。主函数通常在代码的最后,或在函数之前。还需要注意的是,在主函数的最后,有一个return 0,它能够正常的让你的程序结束,有的时候如果不写也会产生一些不必要的麻烦,所以推荐大家写好。

#include <iostream>
#include <cstdio>
#include <bits/stdc++.h>
//#include <头文件名>
//头文件

using namespace std;
//命名空间namespace

int a;
double b;
long long c;
//变量类型 + 变量名
//全局变量

//函数类型 + 函数名(函数中用到的变量){
//    函数内容;
//}
//函数

int main() {

    return 0;
}
//int main() {
//    运行内容
//    return 0;
//}
//主函数main

ok,这就是代码的五大主要组成部分,那么接下来列举几项代码必须注意的格式问题,如果违规,代码会产生编译错误或错误执行,务必要记住:

  • 每行代码结束前必须要写分号!多数大括号后不需要!
  • 代码全英文,不要出现中文的符号!(输出时引号中可以有中文)
  • 变量名尽量不要出现函数名
  • 不要出现任何可能会被错误识别的内容

好啦,今天的内容都学废了吗,我们下次再见!




ghb_zZZ
12天前

《c+ +从入门到入土》No.1 认识c++

分享功能出来了(y总nb),话说我知道的好似有点晚,没关系,从今天开始,我们搞一个系列:《c++从入门到入土》
----------------正文分割线--------------------

定义

学习一样新东西,毋庸置疑的,我们首先就要知道这到底是什么东西。学习c++也是这样。这里引用一段专业术语(一下内容了解即可,非重点):

C+ +是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。

那么有些同学就会问了,那C语言又是什么呢?

C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。

再次重申,了解即可,我们只需记住,c+ +是一种程序设计语言,是C语言的继承和发展,即可。

特点

1.支持数据封装和数据隐藏(了解)

在C+ +中,类是支持数据封装的工具,对象则是数据封装的实现。C++通过建立用户定义类支持数据封装和数据隐藏。

简单说,使用完好定义的类的用户不需要知道类是如何工作的,只要知道如何使用它即可。

2.支持继承和重用

就是说,c+ +可以再现有类的基础上重新定义和声明新类型。

3.支持多态性(看看就行,不用当真)

采用多态性为每个类指定表现行为。多态性形成由父类和它们的子类组成的一个树型结构。在这个树中的每个子类可以接收一个或多个具有相同名字的消息。当一个消息被这个树中一个类的一个对象接收时,这个对象动态地决定给予子类对象的消息的某种用法。多态性的这一特性允许使用高级抽象。

这些东西嘛,c+ +专业人士也未必清楚,看一看就可以了哈。

工作原理

C+ +语言的程序因为要体现高性能,所以都是编译型的。但其开发环境,为了方便测试,将调试环境做成解释型的。即开发过程中,以解释型的逐条语句执行方式来进行调试,以编译型的脱离开发环境而启动运行的方式来生成程序最终的执行代码。
生成程序是指将源码(C+ +语句)转换成一个可以运行的应用程序的过程。如果程序的编写是正确的,那么通常只需按一个功能键,即可搞定这个过程。该过程实际上分成两个步骤。
第一步是对程序进行编译,这需要用到编译器(compiler)。编译器将C+ +语句转换成机器码(也称为目标码);如果这个步骤成功,下一步就是对程序进行链接,这需要用到链接器(linker)。链接器将编译获得机器码与C+ +库中的代码进行合并。C++库包含了执行某些常见任务的函数(“函数”是子程序的另一种称呼)。例如,一个C+ +库中包含标准的平方根函数sqrt,所以不必亲自计算平方根。C+ +库中还包含一些子程序,它们把数据发送到显示器,并知道如何读写硬盘上的数据文件。

应用推荐

Dev c++
Visual Studio

相关书籍

初学&入门

《C++程序设计教程》,钱能
《易学C++》,潘嘉杰
《大话设计模式》,程杰
《C++编程规范:101条规则、准则与最佳实践》,刘基诚
《C和C++程序员面试秘籍》,董山海

进阶&深化&入土

《C++程序设计语言》英文第四版,Bjarne Stroustrup
《C++ Primer 第5版(英文版)》,Stanley Lippman、Josee Laoie、Barbara Moo
《C++标准库:自学教程与参考手册(第2版)(英文版)》,Nicolai Josuttis
《C++ Concurrency in Action|C++ 并发实战》,Anthony Wiliams
《C和C++安全编码(第2版)(英文版)》,Robert Seacord

好了,这就是今天的全部内容了,由于这节课主要是介绍的内容,所以有大量的引用和术语,相对比较晦涩,后面的内容会有趣很多,阿婆主就要开学了,尽量保证更新速度(一周2次左右吧),最后提供一下百度百科的网址。
这里!
感谢大家的支持!!!Orz




ghb_zZZ
1个月前

这道题目嘛,会给两种写法,想看方法和过程的注重第一种哈,第二种纯属投机取巧;
话不多说,直接开淦!

思路1

只要看好题目就行了,没有骗人哦,不信你看:
捕获.PNG
没骗你吧,记住它,每小时30km。
那么接着只要对输入内容除30再单位换算一下就OK了

代码1

#include <iostream>
using namespace std;
int main() {
    int a;
    cin >> a;
    cout << a / 30 * 60 << " minutos" << endl;
    return 0;
}

思路2

思路2嘛,我这里厚颜无耻的将其称为算法1的优化,重点在于推倒,emmmmmmmmmmm,好吧,是观察,看一下他的样例:

30
60 minutos

自己再做两个样例:

50
100 minutos

咳咳,没有错,就是这样,输入2
就这样,一道数学应用题成功转化为难度等同于甚至略低于A+B的A
2,下面是懒人代码
注:懒人代码在saber里巨好用!!!

代码2

#include <iostream>
using namespace std;
int main() {
    int a;
    cin >> a;
    cout << a * 2 << endl;
    return 0;
}



ghb_zZZ
1个月前

大家好,偶又回来了,上次那个string的整理反响很好,让我激动了好长时间呢,今天带来一片vector数组的整理,希望大家喜欢,上次评论里的内容,我也会抽时间来写的,再次感谢大家的支持!:D
内容如有错误请在评论区反馈我会做出更正,谢谢 Orz

1.关于vector(新板块)

既然想学vector,那么首先要知道vector到底是什么呢,这里给大家简单介绍一下,详细内容见上方原题链接(百度),下面是一段摘抄:

vector是C++标准模板库中的部分内容,中文偶尔译作“容器”,但并不准确。它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。

嗯,动态数组,就是他了
这里再给大家提供一个较专业的网址,里面会有更多关于vector的内容:
http://www.cplusplus.com/reference/vector/vector/

2.头文件

在上面的介绍中我们可以看出他是有自己的函数库的,所以他也当然有自己的头文件,也就是 #include <vector>

#include <iostream>
#include <vector> //就是它

using namespace std;
int main() {
    return 0;
}
#include <bits/stdc++.h> //当然也包括在万能头里

using namespace std;
int main() {
    return 0;
}

3.定义&声明

vector的声明可就和普通的变量有些不同了,由于他太犇了,太多功能了,于是他的声明就需要多一些限制,也就是要加上你要使用的“功能”;
我们已经知道他是一个“数组”那么他与string就有了一些共同之处,后面我们会提到;但我们现在至少要知道,他是由很多内容拼凑在一起的(虽叫数组,不止存数),而他又是多功能,自然需要一个限制条件————变量类型;
所以定义方法为 vector<变量类型> 数组名 ,下面是举例:

#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main() {

    vector<int> a; //定义一个存int类型的数组a
    vector<long long> b; //大数也可以存
    vector<double> c; //分数没问题
    vector<char> d; //字符也可以
    vector<string> e; //字符串也是小意思(加头文件!)

    return 0;
}

就像这样

4.输入&输出&部分常用函数(由于vector比较特殊所以一些常用函数需要在这里提前说一下)

我们再回到vector的中文名上,这次,我们重点看前两个字。动态!你品,你细品!动态,这就是说我们随时可以往里面存入和输出元素,改变它的位置甚至删除某一个元素等一系列复杂的string无法完成的操作。同时,这也意味着,我们可能无法使用普通的输入(cin)了;那么我们应该用什么呢?
这里就要用到vector函数库中的内容了,一种vector特有的输入方法———— push_back()使用方法: 数组名.push_back(输入的内容或变量)举例如下:

#include <iostream>
#include <vector>
using namespace std;
int main() {
    vector<int> a; //首先定义一个int类型数组a
    a.push_back(1); //往数组a中放入第一个一个元素“1”;
    //a:{1}
    a.push_back(2); //再放入一个“2”
    //a:{1, 2}
    int b = 15; //接下来试一下存入变量,先声明
    a.push_back(b); //把变量b存入,b依旧可以在数组外使用
    //a:{1, 2, 15(b)}
    cout << b; //b依旧可以在数组外使用
    return 0;
}

解决了输入问题,接下来是输出了,vector的取数方法很简单,使用cout就可以,与string类似,但string可以整体输出,vector只能单个单个输出,这时就要用到循环了和取位了,取位和string一样 变量名[位数]即可,同时也要注意,位数依旧是从0开始计数 ,由于是数组,那么当然也有 .size()的存在,循环也就不难了,那么接下来就来输出一下;

#include <iostream>
#include <vector>
using namespace std;
int main() {
    vector<int> a;
    a.push_back(1);
    a.push_back(2);
    int b = 5;
    a.push_back(b); //和上面一样的输入

    cout << a[0] << " " << a[1] << endl; //单个取位输出元素
    // 输出:1 2

    for (int i = 0; i < a.size(); i++) { //位数次循环遍历每一位,注意从0开始到size-1
        cout << a[i] << " "; //输出遍历到的每一位
    }
    // 输出:1 2
    //      1 2 15 
    return 0;
}

搞定!

5.常用函数(正式)

这里我们先把刚刚说过的两个列出来
.push_back()
.size()
那么vector还有哪些函数呢;首先想到的就是如何清空一个数组, .clear()就可以做到。那么在我们写大型程序乃至应用时我可不希望一个数组一直占用这我的内存,甚至会有很多数组同时存在,这时清理空间是很重要的,但clear只能删除所有的元素,不会清理空间,这时我们就需要用到一个写法比较特殊的函数 vector<变量类型>().swap(数组名) 了;还有一个函数是 .pop_back()他的用途是将数组最末尾的一个元素弹出(不是输出!!!) 下面是实战用法

#include <iostream>
#include <vector>
using namespace std;
int main() {

    vector<int> a; //定义一个数组a
    a.push_back(1);
    a.push_back(2);
    a.push_back(3); //多用push_back输入几个元素
    cout << a.size() << endl; //查看一下数组的位数:3
    a.pop_back(); //弹出最后一个元素
    cout << a.size() << endl; //再看一下数组的位数:2
    a.clear(); //清空数组
    cout << a.size() << endl; //再看一下:0
    vector<int>().swap(a); //释放内存

    return 0;
}

小测验

没有错,章末小测验又来了
今天的内容非常简单,只是讲上面的内容写一遍而已,就当是一个巩固吧;


题目描述:
输入输出内容见输入格式&输出格式,请在最后清空数组并释放内存;

输入格式:
第一行一个整数n,表示需要输入的元素个数;
第二行n个元素,用空格隔开;
第三行一个整数a;

输出格式:
第一行输出所有第双数个元素,用空格隔开
第二行倒序输出所有元素,用空格隔开
第三行输出字符串末尾弹出a个元素后的最后一个元素

样例输入:
4
Thank you for reading!
2

样例输出:
you reading!
reading! for you Thank
you


答案:

#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main() {
    vector<string> s;
    int n, a;
    cin >> n;
    for (int i = 0; i < n; i++) {
        string x;
        cin >> x;
        s.push_back(x);
    }
    cin >> a;
    for (int i = 0; i < s.size(); i++) {
        if (i % 2 != 0) {
            cout << s[i] << " ";
        }
    }
    cout << endl;
    for (int i = s.size() - 1; i >= 0; i--) {
        cout << s[i] << " ";
    }
    cout << endl;
    for (int i = 0; i < a; i++) {
        s.pop_back();
    }
    cout << s[s.size() - 1];
    s.clear();
    vector<string>().swap(s);
    return 0;
}



ghb_zZZ
1个月前

<本文内容偏多,作者写出来很不容易(中间有一次没有保存,然后谷歌浏览器页面崩了,结果......),所以希望大家多多支持>
Hello!大家好!
今天我们来整理一下string字符串类型的内容

头文件

对于一个独立的变量类型来说,头文件当然是必不可少的;
string类型在c++中有两个头文件,一个是 #icnlude <string> 另一个是 #include <cstring> 这两个都可以使用,详细的区分可以去 https://www.cplusplus.me/1786.html

#include <string>
#include <cstring>
#include <string.h>
#include <bits/stdc++> //string也当然包括在万能头里;

using namespace std;
int main() {

    return 0;
}

声明&定义

string的声明很简单,只是“string + 变量名”就可以了;

#include <iostream>
#include <string> //三种头文件都可以,本文中都统一使用string(我是绝对不会告诉你是因为短,写的快的)
using namespace std;
int main() {

    string s;

    return 0;
}

输入&输出

string的输入输出也没有任何特别之处,就是标准的输入(cin)输出(cout)即可;当然,由于是一个字符“串”所以使用循环来依次输出每一位当然也是没问题的,尤其是在题目要求对字符串中每一位进行一定更改时,但由于这里需要用到c+ +设置好的头文件中的函数,所以我们后面一起说。
但接下来问题又来了,当题目要求需要输入带空格的字符串时我们又该怎么办呢,由于c+ +语言中,编译器会自动认定空格前后是两个不同的变量,所以正常的输入肯定是不能用了,这时候就需要用到一些特别的输入方法了,这里给大家介绍一个方法: getline
首先看名字就差不多可以知道他的用途:get是拿,取;line是行。直面意思就是取(读入)这一行中的内容;那么他的作用也是这样。直接读入这一行中所有的内容,没错,就是这么豪横。
使用方法嘛,也不难: getline(cin, s(变量名,以s为例))

#include <iostream>
#include <string> //头文件少不了
using namespace std;
int main() {
    string s; //用前声明
    cin >> s; //标准输入
    cout << s; //标准输出
    return 0;
}
#inlcude <iostream>
#include <string> //头文件不能忘
using namespace std;
int main() {
    string s; //用前声明
    getlin(cin, s); //getline它来了
    cout << s; //标准输出就可以,花里胡哨的放在后面;
    return 0;
}

取位

string作为一个字符“串”类型,自然有”位”的存在,string类型中的位数与数组等一样,从0开始计数;
当我们想取到当中的第x位时,只需用s[x]就可以了;

#include <iostream>
#include <string>
using namespace std;
int main() {
    string s; //声明一个字符串s
    int x; //声明一个int类型,用来存需要输出的位数;
    cin >> s >> x; //输入这两个变量
    cout << s[x]; //输出这一位
    return 0;
}

s.size()/s.length的使用

这里来说说这个 s.size()
s.size()是string类型中非常常用的一个函数,与其他.size()用法一样,就是这个变量的位数,这也是上面循环遍历每一位的必要内容,同时还要注意,遍历时要从0到s.size() - 1计;
s.length完全相同

#include <iostream>
#include <string>
using namespace std;
int main() {
    string s; //声明这个字符串类型变量
    cin >> s; //输入他
    for (int i = 0; i < s.size(); i++) { //做一个循环,从0开始,<s.size()结束,不能加=
        cout << s[i]; //这里可以对每一位按题目要求进行改动,这里就简单输出了
    }
    return 0;
}

小测验

上面的内容都掌握了吗,我们来试一道小题!


题目描述:
输入一个字符串(可能带空格),输出原文,第N位,倒序输出原文字母大小写转换的结果;

输入格式:
共2行;
第一行一个字符串;
第二行一个整数N

输出格式:
三行
第一行输入字符串的原文;
第二行输入字符串的第N位;
第三倒序输出原文字母大小写转换的结果;

样例输入:
Hello World!
7

样例输出:
Hello World!
W
!DLROw OLLEh

这里推荐自己先做一下,下面是题解

#include <iostream>
#include <string> //首先头文件不能少
using namespace std;
int main() {
    string s; //声明string变量
    int n; //声明位数n
    getline(cin, s); // 用getline输入带空格的字符串
    cin >> n; // 输入要求的位数n
    cout << s << endl;// 输出原文
    cout << s[n - 1] << endl; // 输出要求的第n位,但由于从0计位,所以比正常位数少1位
    for (int i = s.size() - 1; i >= 0; i--) { // 倒序循环,从s.size() - 1开始,到0结束
        if (s[i] >= 'a' && s[i] <= 'z') { // 判断如果是小写字母
            s[i] = s[i] - 'a' + 'A'; // 让这一位变成大写
        } else if (s[i] >= 'A' && s[i] <= 'Z') { // 如果是大写字母
            s[i] = s[i] - 'A' + 'a'; // 让这一位变成小写
        }
        cout << s[i]; // 输出这一位
    }
    return 0;
}

各位大佬,有误勿喷
%%%%%