C++day1(笔记整理)

news2024/11/14 3:18:47

一、Xmind整理:

二、上课笔记整理:

1.第一个c++程序:hello world

#include <iostream>
//#:预处理标识符
//<iostream>:输入输出流类所在的头文件
//istream:输入流类
//ostream:输出流类

using namespace std;     //std:标准命名空间
//using使用命名空间
//namespace就是命名空间的关键字
//std是标准命名空间名

int main()
{
    cout << "第一个C++程序" << endl;
    //cout:ostream类的一个类对象,输出,但是不需要格式符
    // <<:左移运算符的重载,重载为插入运算符(输出运算符)
    cout << "Hello World!" << endl;
    return 0;
}

2.cout的使用 

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

int main()
{
    int a = 16;
    cout << a << endl;     //16
 //----------通过关键字控制格式-----------
    cout << hex << a << endl;     //10 hex十六进制输出
    cout << a << endl;    //10  ---->因为上一行的cout已经指定了格式,如果想结束掉上述的格式,重新指定格式
    cout << dec << a << endl;  //dec表示十进制的输出
    cout << oct << a << endl;  //oct表示八进制输出
    cout << "-----------------------------" << endl;
 // ---------通过函数控制格式-------------
    cout << setbase(16) << a << endl;
    cout << setbase(8) << a << endl;
    cout << a << endl;   //20,使用函数仍然改变了cout的输出格式
    cout << setbase(10) << a << endl;
    cout << "指定宽度的输出<==>%nd" << endl;
    cout << setw(4) << left << a ;  //功能和%-4d一样,左对齐使用left,如果不加left默认是右对齐
    cout << "小数的指定宽度输出 " << endl;
    cout << setprecision(4) << 3.1456 << endl;
    //指定的是包含小数点的位置,3.146
    return 0;
}

3.输出斐波那契的前10项。    1 1 2 3 5 8 13 ····

#include <iostream>

using namespace std;
int Fbi(int n)
{
   if(n==1||n==2)
   {
       return 1;
   }
   else
   {
       return Fbi(n-1)+Fbi(n-2);
   }
}

int main()
{
    int n;
    cout << "请输入一个数" << endl;
    cin >> n;
    for(int i=1;i<=n;i++)
    {
        Fbi(i);
        cout << Fbi(i) << endl;
    }
    return 0;
}

4. cin标准输入流对象

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

int main()
{
    int a;
    //scanf("%d",&a);  //需要控制格式
    cin >> a;    //cin加上右移运算符重载,再加上变量名,使用cin输入不需要加变量的地址
    cout << a << endl;
    char c;
    cin >> c;    //cin可以实现任意类型的输入
    cout << "从终端获取的字符c=" << c << endl;
    return 0;
}

5.终端输入一个字符,判断该字符的类型,字母(大写/小写)、数字字符,其他字符。

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

int main()
{
    char a;
    //scanf("%d",&a);  //需要控制格式
    cin >> a;    //cin加上右移运算符重载,再加上变量名,使用cin输入不需要加变量的地址
    if(a>='0'&&a<='9')
    {
        cout << "a是一个数字" << endl;
    }
    else if(a>='A'&&a<='Z')
    {
        cout << "a是一个大写字母" << endl;
    }
    else if(a>='a'&&a<='z')
    {
        cout << "a是一个小写字母" << endl;
    }
    return 0;
}

6.局部变量和命名空间冲突

#include <iostream>
//using namespace std;


namespace my_namespace {      //定义了一个命名空间
     int a=2000;
     int num2;
     void fun();   //命名空间中写函数的声明
}


void my_namespace::fun()   //定义了一个命名空间中的函数
{
    std::cout << "test" << std::endl;
}


using namespace my_namespace;  //引入命名空间中的所有标识符
using my_namespace::num2;   //引入命名空间中的部分标识符


int main()
{


    using std::cout;  //引入std中的cout标识符
    using std::endl;  //引入std中的endl标识符
    int a = 90;
    cout << "局部变量a=" << a << endl;
    cout << my_namespace::a << endl;
    fun();
    return 0;
}

7.全局变量和命名空间冲突问题

#include <iostream>
using namespace std;

int a = 3000;
namespace my_namespace {      //定义了一个命名空间
     int a=2000;
     int num2;
     void fun();   //命名空间中写函数的声明
}

namespace B {
     int num2;
}
void my_namespace::fun()   //定义了一个命名空间中的函数
{
    std::cout << "test" << std::endl;
}

using namespace my_namespace;  //引入命名空间中的所有标识符
using namespace B;

int main()
{
    my_namespace::num2=900;    //在使用变量时,使用域限定符
    cout << B::num2 << endl;
    cout << my_namespace::a << endl; //通过域限定符和命名空间名访问指定变量a
    cout << ::a << endl;    //访问全局变量a
    return 0;
}
【5】命名空间添加
如果定义了多个同名的命名空间,最后多个会合并成一个命名空间
namespace B {
     int num2;
     int a = 10;
}

namespace B {    //并没有定义新的命名空间B,改行的B会和前面B合并成一个命名空间
    int b;
}

8.命名空间的嵌套

#include <iostream>
using namespace std;

namespace A {    //定义了一个命名空间A
    int a=0;
    namespace B {   //嵌套一个命名空间B
         int a=100;
         char c='a';
    }
}
using namespace A;
using namespace A::B;  //全局引入A中的命名空间B
int main()
{
    //cout << A::a << endl;   //0
    //cout << A::B::a << endl; //100,嵌套的命名空间,访问里面空间标识符时,需要逐级访问
    cout << c << endl;
    return 0;
}

9.给命名空间重命名

namespace 新名字 = 旧名字;
namespace NEW = A;   //把命名空间A重命名为NEW

新名字和旧名字都可以继续使用
#include <iostream>
using namespace std;


namespace A {    //定义了一个命名空间A
    int a=0;
    namespace B {   //嵌套一个命名空间B
         int a=100;
         char c='a';
    }
}

namespace NEW = A;    //给命名空间A重命名为NEW
using namespace NEW;
//using namespace A::B;  //全局引入A中的命名空间B
int main()
{
    //cout << A::a << endl;   //0
    //cout << A::B::a << endl; //100,嵌套的命名空间,访问里面空间标识符时,需要逐级访问
    cout << NEW::B::c << endl;
    return 0;
}

10.using的其他用法

#include <iostream>
using namespace std;

int main()
{
    typedef int a;
    a num1 =100;
    cout << num1 << endl;
    using INT = int;   //把基本数据类型int重定义为INT,后面可以直接使用INT定义变量
    INT num2 = 90;
    cout << sizeof(INT) << endl;
    return 0;
}

11.C++中字符串的定义

#include <iostream>
#include <cstring>
using namespace std;
int main()
{
    char str[]="hello";   //C语言风格的字符串,C++中仍然支持,结尾有'\0'
    cout << sizeof(str) << endl;
    cout << strlen(str) << endl;  //可以手动导入<cstring>头文件,使用strlen函数

    //通过string类实现变量的定义
    string str1 = "hello";   //定义了一个string类型的饿字符串str1并初始化hello
    string str2 = str;
    cout << str2 << endl;   //C语言风格的字符串会自动转换成C++风格的字符串并且可以直接使用
    str2 = "hi";    //给str2字符串赋值

    //----------使用单个的字符给字符串赋值-----------
    string str3(5,'a');  //定义了一个str3字符串,使用5个a初始化
    cout << str3 << endl;
    string str4("world");   //定义了一个字符串str4,使用world初始化
    cout << str4 << endl;

    //----------多个字符串之间的赋值------------
    str3 = str4;
    cout << "s3=" << str3 << endl;
    cout << "s4=" << str4 << endl;
}

12.C++风格和C风格字符串的转化

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

int main()
{
    char str[]="hello";
    string str1 = str;   //C风格可以直接转化为C++风格
    //cout << strlen(str1) << endl;  //C++风格的字符串向C风格转化,需要特定的操作
    cout << strlen(str1.data()) << endl;  //使用过data函数后,str1可以被strlen计算
    //cout << strcat(str1.c_str(),"world") << endl;
    //因为str1.c_str()返回的时hello的字符数组形式,是一个const char*
    char str3[100]="world";
    strcat(str3,str1.c_str());
    cout << str3 << endl;

    return 0;
}

13.string常用的函数  empty()

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

int main()
{
    char str[]="hello";
    string str1 = str;   //C风格可以直接转化为C++风格
//  cout << str1.at(7) << endl;
    cout << str1.length() << endl;
    cout << str1.size() << endl;
    str1.clear();
    cout << str1 << endl;
    cout << str1.size() << endl;
    cout << str1.empty() << endl;
    return 0;
}

14.字符串比较

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

int main()
{
    char str[]="hello";
    string str1 = str;   //C风格可以直接转化为C++风格
    string str2 = "hi";
    if(str1<str2)   //字符串在C++中可以直接参与比较,结果0/1
    {
        cout << "str1<str2" << endl;
    }
    return 0;
}

15.字符串的输入

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

int main()
{
    char str[]="hello";
    string str1 = str;   //C风格可以直接转化为C++风格
    string str2;
    //cin >> str2;   //不能实现字符串带空格的输入
    getline(cin,str2);
    cout << str2 << endl;
    return 0;
}

16.终端输入一个字符串,以'\n'作为标志停止,判断字母和数字的个数,空格的个数。

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

int main()
{
    string str;
    getline(cin,str);
    int len = str.size();  //作为循环条件
    int num1=0,num2=0,num3=0;
    for(int i=0;i<len;i++)
    {
        if(str.at(i)>='a'&&str.at(i)<='z'||str.at(i)>='A'&&str.at(i)<='Z')
        {
            num1++;
        }
        else if(str.at(i)>='0'&&str.at(i)<='9')
        {
            num2++;
        }
        else if(str.at(i)==' ')
        {
            num3++;
        }
    }

    cout << num1 << endl;
    cout << num2 << endl;
    cout << num3 << endl;
    return 0;
}

17.C++中的bool

#include <iostream>
using namespace std;

int main()
{
    bool a=true;
    cout << a << endl;    //默认是数字表示
    cout << boolalpha << a << endl;   //加上boolalpha显示字母表示
    bool b=0;
    cout << noboolalpha << b << endl;  //加上noboolalpha回到数字表示

    cout << sizeof(b) << endl;
    return 0;
}

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

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

相关文章

*args无疑是解决函数重载的一大创新利器--我用可变数量参数解决了函数重载问题

需求分析 最近遇到这样一个需求&#xff1a;根据用户传递的不同参数数量执行不同的功能。我这几天一直在思考这个问题&#xff1a;如何根据参数数量去执行不同的功能&#xff0c;最初的设想是把不需要的参数设置为NONE或者""再或者" "(后两者引号均表示传空…

Go:测试框架GoConvey 简介

快速开始 GoConvey是一个完全兼容官方Go Test的测试框架&#xff0c;一般来说这种第三方库都比官方的功能要强大、更加易于使用、开发效率更高&#xff0c;闲话少说&#xff0c;先看一个example&#xff1a; package utils import (. "github.com/smartystreets/goconvey…

怎么查看小程序中的会员信息

商家通过查看会员信息&#xff0c;可以更好地了解用户&#xff0c;并为他们提供更个性化的服务和推荐。接下来&#xff0c;就将介绍如何查看会员信息。 商家在管理员后台->会员管理处&#xff0c;可以查看到会员列表。支持搜索会员的卡号、手机号和等级。还支持批量删除会员…

Java原子类

是什么 对多线程访问同一个变量&#xff0c;为了保证线程安全需要加锁&#xff0c;而锁是比较消耗性能的。Java从JDK 1.5开始提供了java.util.concurrent.atomic包&#xff0c;这个包中的原子操作类提供了一种用法简单、性能高效、线程安全地更新一个变量的方式。 jdk1.8新增…

【Python机器学习】实验15 将Lenet5应用于Cifar10数据集(PyTorch实现)

文章目录 CIFAR10数据集介绍1. 数据的下载2.修改模型与前面的参数设置保持一致3. 新建模型4. 从数据集中分批量读取数据5. 定义损失函数6. 定义优化器7. 开始训练8.测试模型 9. 手写体图片的可视化10. 多幅图片的可视化 思考题11. 读取测试集的图片预测值&#xff08;神经网络的…

Linux系统编程:进程信号的保存和阻塞

目录 一. 信号保存和阻塞的相关概念 二. 进程信号的表示 2.1 进程信号在内核中的表示 2.2 sigset_t 类型 三. 信号集操作相关函数 3.1 sigset_t 类型参数设置相关函数 3.2 sigprocmask 函数 3.3 sigpending 函数 四. 演示代码 4.1 将所有信号的处理方式都注册为不退出…

详解Spring的循环依赖问题、三级缓存解决方案源码分析

0、基础&#xff1a;Bean的生命周期 在Spring中&#xff0c;由于IOC的控制反转&#xff0c;创建对象不再是简单的new出来&#xff0c;而是交给Spring去创建&#xff0c;会经历一系列Bean的生命周期才创建出相应的对象。而循环依赖问题也是由Bean的生命周期过程导致的问题&#…

wustojc3010快速求和

#include <stdio.h> int main() {int n;double s;s0;scanf("%d",&n);for(int i1;i<n;i){ss(double)1.0/(i*(i1.0));//强转一下类型}printf("%.5lf",s);return 0;}

Docker私有仓库创建

1.Docker私有仓库搭建 拉取私有仓库镜像并启动私有仓库容器。 访问私有仓库容器&#xff0c;表明私有仓库搭建成功。 此时私有仓库就已经搭建完成了。 2.将本机的镜像传到私有仓库 3.将私有仓库镜像拉取到本地

论文导读|European Journal of Operational Research近期文章精选:旅行商问题专题

推文作者&#xff1a;王松阁 编者按 在“European Journal of Operational Research近期论文精选”中&#xff0c;我们有主题、有针对性地选择了European Journal of Operational Research中一些有趣的文章&#xff0c;不仅对文章的内容进行了概括与点评&#xff0c;而且也对文…

DHCP协议原理与应用

DHCP协议原理与应用 一、DHCP协议概述1.1、场景描述1.1.1、场景描述11.1.2、场景描述21.1.3、场景描述3 二、DHCP协议工作原理2.1、DHCP简介2.2、DHCP协议名词解释2.3、DHCP服务器配置2.4、PC的DHCP设置2.5、DHCP协议工作过程2.6、DHCP协议报文及用途2.7、DHCP报文介绍2.7.1、D…

面试之快速学习STL-迭代适配器

先放一张大图 参考&#xff1a;http://c.biancheng.net/view/7255.html 1. 反向迭代器 例子&#xff1a; std::list<int> values{1,2,3,4,5};auto start_it values.rbegin();const auto end_it values.rend();//start_it end_it std::reverse_iterator<std::lis…

HCIP 三层架构实验

三层架构实验 拓扑和思路拓扑思路LSW配置LSW1LSW2LSW3 DHCPLSW2LSW1 ACL外网冗余 拓扑和思路 拓扑 思路 首先划分网段&#xff0c;然后LSW1和LSW2和R1可以用ospf宣告就行&#xff0c;然后R1写条缺省指向R2 然后可以将LSW1和LSW2三合一&#xff0c;给交换机配置换分组&#x…

用电脑软件0代码设计WS2812显示效果(含软件下载地址)

用电脑软件设计WS2812显示效果 ws2812显示效果设计软件和单片机程序文件 单片机型号为8脚的STC8G1K08A或STC8G1K17A或者16脚的STC8G1K08或STC8G1K17 烧录时晶振选择22.1184M 百度网盘下载地址&#xff1a;链接: https://pan.baidu.com/s/1cVvA604IKtZ-cIqTX8Jgzw?pwd1234 提取…

数学分析:体形式

确实&#xff0c;面积应该是没有正负的&#xff0c;或者说和曲面的定向应该是无关的。我们用微分形式的积分定义了具有参数形式的曲面的面积。所以这个意思就是说&#xff0c;对于不同的曲面的定向&#xff0c;微分形式应该也不同。 这就是体形式的具体样子&#xff0c;得到每…

中科大 Epc 综合英语经验贴

免修规定考试形式1. 听力&#xff08;813131320分&#xff09;2. 单词&#xff08;20120分&#xff09;3. 语法结构&#xff08;10110分&#xff09;4. 阅读&#xff08;5篇&#xff0c;每题两分&#xff0c;52550分&#xff09; 机考答题建议 免修规定 研究生英语课免修规定&…

已解决Gradle错误:“Unable to load class ‘org.gradle.api.plugins.MavenPlugin‘”

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

<指针进阶>指针数组和数组指针傻傻分不清?

✨Blog&#xff1a;&#x1f970;不会敲代码的小张:)&#x1f970; &#x1f251;推荐专栏&#xff1a;C语言&#x1f92a;、Cpp&#x1f636;‍&#x1f32b;️、数据结构初阶&#x1f480; &#x1f4bd;座右铭&#xff1a;“記住&#xff0c;每一天都是一個新的開始&#x1…

数学建模大全及优缺点解读

分类模型 1、距离聚类&#xff08;系统聚类&#xff09;&#xff08;常用&#xff0c;需掌握&#xff09; 优点&#xff1a; ①将一批样本数据按照他们在性质上的亲密程度在没有先验知识的情况下自动进行分类 ②是一种探索性的分析方法&#xff0c;分类结果不一定相同 例如&am…

Stable Diffusion训练Lora模型

以下内容参考:https://www.bilibili.com/video/BV1Qk4y1E7nv/?spm_id_from333.337.search-card.all.click&vd_source3969f30b089463e19db0cc5e8fe4583a 1、训练Lora的2个重点步骤 第一步&#xff0c;准备训练要使用的图片&#xff0c;即优质的图片 第二部&#xff0c;为…