C++day1(笔记整理)

2023-11-16

一、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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++day1(笔记整理) 的相关文章

  • 静态只读字符串数组

    我在我的 Web 应用程序中使用静态只读字符串数组 基本上数组有错误代码 我将所有类似的错误代码保存在一个数组中并检查该数组 而不是检查不同常量字符串中的每个错误代码 like public static readonly string m
  • 为什么在连接两个字符串时 Python 比 C 更快?

    目前我想比较 Python 和 C 用来处理字符串的速度 我认为 C 应该比 Python 提供更好的性能 然而 我得到了完全相反的结果 这是 C 程序 include
  • 适合初学者的良好调试器教程[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有谁知道一个好的初学者教程 在 C 中使用调试器 我感觉自己好像错过了很多 我知道怎么做 单步执行代码并查看局部变量 虽然这常常给我带来问
  • 如何捕获未发送到 stdout 的命令行文本?

    我在项目中使用 LAME 命令行 mp3 编码器 我希望能够看到某人正在使用什么版本 如果我只执行 LAME exe 而不带参数 我会得到 例如 C LAME gt LAME exe LAME 32 bits version 3 98 2
  • 代码 GetAsyncKeyState(VK_SHIFT) & 0x8000 中的这些数字是什么?它们是必不可少的吗?

    我试图在按下按键的简单动作中找到这些数字及其含义的任何逻辑解释 GetAsyncKeyState VK SHIFT 0x8000 可以使用哪些其他值来代替0x8000它们与按键有什么关系 GetAsyncKeyState 根据文档返回 如果
  • GetType() 在 Type 实例上返回什么?

    我在一些调试过程中遇到了这段代码 private bool HasBaseType Type type out Type baseType Type originalType type GetType baseType GetBaseTyp
  • 在c#中执行Redis控制台命令

    我需要从 Redis 控制台获取 客户端列表 输出以在我的 C 应用程序中使用 有没有办法使用 ConnectionMultiplexer 执行该命令 或者是否有内置方法可以查找该信息 CLIENT LIST是 服务器 命令 而不是 数据库
  • ComboBox DataBinding 导致 ArgumentException

    我的几个类对象 class Person public string Name get set public string Sex get set public int Age get set public override string
  • 如何在C(Linux)中的while循环中准确地睡眠?

    在 C 代码 Linux 操作系统 中 我需要在 while 循环内准确地休眠 比如说 10000 微秒 1000 次 我尝试过usleep nanosleep select pselect和其他一些方法 但没有成功 一旦大约 50 次 它
  • 从同一个类中的另一个构造函数调用构造函数

    我有一个带有两个构造函数的类 C 这是代码片段 public class FooBar public FooBar string s constructor 1 some functionality public FooBar int i
  • Python 属性和 Swig

    我正在尝试使用 swig 为一些 C 代码创建 python 绑定 我似乎遇到了一个问题 试图从我拥有的一些访问器函数创建 python 属性 方法如下 class Player public void entity Entity enti
  • 在视口中查找 WPF 控件

    Updated 这可能是一个简单或复杂的问题 但在 wpf 中 我有一个列表框 我用一个填充数据模板从列表中 有没有办法找出特定的数据模板项位于视口中 即我已滚动到其位置并且可以查看 目前我连接到了 listbox ScrollChange
  • 在 NaN 情况下 to_string() 可以返回什么

    我使用 VS 2012 遇到了非常令人恼火的行为 有时我的浮点数是 NaN auto dbgHelp std to string myFloat dbgHelp最终包含5008角色 你不能发明这个东西 其中大部分为0 最终结果是 0 INF
  • C++ int 前面加 0 会改变整个值

    我有一个非常奇怪的问题 如果我像这样声明一个 int int time 0110 然后将其显示到控制台返回的值为72 但是当我删除前面的 0 时int time 110 然后控制台显示110正如预期的那样 我想知道两件事 首先 为什么它在
  • 将数组作为参数传递

    如果我们修改作为方法内参数传递的数组的内容 则修改是在参数的副本而不是原始参数上完成的 因此结果不可见 当我们调用具有引用类型参数的方法时 会发生什么过程 这是我想问的代码示例 using System namespace Value Re
  • GCC 的“-Wl,option”和“-Xlinker option”语法之间有区别吗?

    我一直在查看一些配置文件 并且看到它们都被使用 尽管在不同的体系结构上 如果您在 Linux 机器上使用 GCC 将选项传递给链接器的两种语法之间有区别吗 据我所知 阅读 GCC 手册时 他们的解释几乎相同 From man gcc Xli
  • 我可以在“字节数”设置为零的情况下调用 memcpy() 和 memmove() 吗?

    当我实际上没有什么可以移动 复制的时候 我是否需要处理这些情况memmove memcpy 作为边缘情况 int numberOfBytes if numberOfBytes 0 memmove dest source numberOfBy
  • Objective-C / C 给出枚举默认值

    我在某处读到过关于给枚举默认值的内容 如下所示 typedef enum MarketNavigationTypeNone 0 MarketNavigationTypeHeirachy 1 MarketNavigationTypeMarke
  • 如何使用 C++11 using 语法键入定义函数指针?

    我想写这个 typedef void FunctionPtr using using 我该怎么做呢 它具有类似的语法 只不过您从指针中删除了标识符 using FunctionPtr void 这是一个Example http ideone
  • 如何将十六进制字符串转换为无符号长整型?

    我有以下十六进制值 CString str str T FFF000 如何将其转换为unsigned long 您可以使用strtol作用于常规 C 字符串的函数 它使用指定的基数将字符串转换为 long long l strtol str

随机推荐

  • Ubuntu18.04 windows10双系统安装解决grub引导问题

    最近给服务器的电脑升级了ubuntu18 直接用u盘安装 老是说grub引导问题 网上有很多教程真的坑人 说的含含糊糊的 不知道在卖弄什么关子 我参照这两个教程解决了安装问题 十分钟就装好了 感谢你们 https blog csdn net
  • vue Tesseract的 ocr 文字识别

    npm结果页 https www npmjs com package tesseract js tesseract官网地址 https tesseract projectnaptha com npm结果页 npm结果页 tesseract官
  • 如何优雅的统计代码耗时

    点击上方 小强的进阶之路 选择 星标 公众号 优质文章 及时送达 预计阅读时间 16分钟 作者 Jitwxs 原文链接 底部链接可直达 https jitwxs cn 5aa91d10 html 一 前言 代码耗时统计在日常开发中算是一个十
  • R语言—列表

    文章目录 列表 定义 创建列表 List 列表 List 元素的引用 列表 List 元素的修改 访问列表元素和值 去列表化 在列表上使用apply系列函数 递归型列表 列表 R语言的6种模式 向量 矩阵 数组 数据框 列表 因子 向量 矩
  • SQLite如何删除,修改、重命名列

    今天在SQLite数据库中添加了一列 后来发现列名写错了 于是使用SQL语句来修改列名 可是根本不管用 首先 请放弃alter吧 sqlite官方说明如下 SQLite supports a limited subset of ALTER
  • 【JS】JavaScript时间与时间戳相互转换

    时间与时间戳相互转换 1 2 时间 JS常用时间类型 1 2 1 GMT 格林尼治标准时 1 2 2 UTC 协调世界时 1 2 3 中国标准时间 1 2 4 ISO8601标准时间格式 1 2 5 时间戳 timestamp 1 时间戳转
  • spring boot项目自动加载引入外部bean

    前言 spring boot项目简化了对外部项目的引入 使我们能够狠方便的构建一个web项目 我们通常在开发的过程中会开发出一些公用的模块组件 这样在项目找那个引入后能够直接使用 减少了轮子的重复构造 同时服务引入的模块化操作 能够更多的节
  • CV学习:OpenCv快速入门(python版)

    本文代码全部可运行 笔者运行环境 python3 7 pycharm opencv4 6 此文是学习记录 记录opencv的入门知识 对各知识点并不做深入探究 文章的目的是让阅读者在极短的时间达到入门水平 在学习过程中 我们应养成 查询op
  • pygame用blit()实现动画效果

    pygame的的实现动画的方法有很多 但是都是围绕着表面进行的 也就是说实现动画的方式不同 但是本质其实都是对表面的不同处理方式而已 原理其实很简单 有点像我们做地铁的时候隧道里的广告一样 我们设置一个窗口 然后让窗口在一个画着很多帧图像的
  • 约束综合中的逻辑互斥时钟(Logically Exclusive Clocks)

    注 本文翻译自Constraining Logically Exclusive Clocks in Synthesis 逻辑互斥时钟的定义 逻辑互斥时钟是指设计中活跃 activate 但不彼此影响的时钟 常见的情况是 两个时钟作为一个多路
  • IDEA从安装到使用--相关配置详解

    IDEA从安装到使用 相关配置详解 作为一个技术小白 刚开始学习使用Intellij IDEA 入门时踩了很多的坑 这里写下我的第一篇博客 分享相关IDEA的配置方法 希望能为各位提供一点帮助 IDEA2018安装及破解 作者 志哥的成长笔
  • 大数(四则运算)

    四则运算 大数加法 高精度加法 大数减法 大数乘法 大数乘法 幂运算 大数乘法 高精度幂运算 大数除法 大数加法 思路 从后往前算 即由低位向高位运算 计算的结果依次添加到结果中去 最后将结果字符串反转 输入的时候两个数都是以字符串的形式输
  • 网站架构演变

    网站架构演变 大型网站介绍 与传统企业应用系统相比 大型互联网网站系统具有以下特点 1 大流量 高并发 这一点往往是传统企业应用系统根本就不会遇到的问题 比如Goole每日访问量都是几十亿 如果服务器端处理不好早就被压的宕机了 2 高可用
  • 环形缓冲区(1)

    声明 参考韦东山视频教程 如若侵权请告知 马上删帖致歉 个人总结 如有不对 欢迎指正 环形缓冲区 环形缓冲区的几个基本操作 申请内存空间 写操作 读操作 环形缓冲区小结 判断缓冲区是否为空 判断缓冲区是否写满 构建环形缓冲区 在 h文件中声
  • 【Augmentation Zoo】RetinaNet + VOC + KITTI的数据预处理-pytorch版

    整合前段时间看的数据增强方法 并测试其在VOC和KITTI数据上的效果 我的工作是完成了对VOC和KITTI数据的预处理 RetinaNet的模型代码来自pytorch retinanet 该项目github仓库在 https github
  • 中标麒麟+达梦数据库 无效的列名[AAAAAAAAAAAAAFS]

    目录 前言 解决办法 中标麒麟 解决办法 windows 前言 今天我将项目部署到中标麒麟服务器 发现原本好使的功能 只要一做添加操作就报如下错误 虽然报错 但数据还是添加了进去 这让我十分费解 解决办法 中标麒麟 问题出现在返回新增结果时
  • Next.js中使用antd修改其组件的默认样式

    在项目中使用了next js搭配了antd 其中需要自定义antd样式 在next js中如果想定义css 我用到的有两种方式 一种是直接使用行内式 div test div 另一种就是写一个css文件后引入 定义一个test module
  • SpringBoot(5)-SpringBoot整合其他项目

    SpringBoot 5 SpringBoot整合其他项目 1 整合Druid数据库连接池 1 1学习地址 1 2application yml 1 3访问一下 1 4随便执行一下新增 2 整合Redis 2 1添加redis pom依赖
  • mimikatz

    https blog gentilkiwi com mimikatz https github com ParrotSec mimikatz
  • C++day1(笔记整理)

    一 Xmind整理 二 上课笔记整理 1 第一个c 程序 hello world include