第一部分  C++编程知识

第一章 C++入门 —— 第一个C++程序

一、第一个C++程序代码展示

//写一个C++程序,实现在屏幕上打印 “hello world” 
#include <iostream>
using namespace std;
int main()
{cout << "hello world" << endl;return 0;
}

main函数

        main函数是程序的入口,C++的程序不管有多少行代码,都是从main函数开始执行的,main函数也被叫做:主函数。main前面的int表示main函数执行结束的时候返回一个整型类型的值,而在main函数的最后写return 0;正好前后呼应。

· main函数是程序的入口

· main函数有且仅有一个

· 一个项目中可以有多个.cpp文件,但是只能有一个main函数(因为程序的入口只能有一个)。

        关于函数,这里不做过多描述,我们后面有专门的函数章节来讲解。在这里需要知道的是,编写一个C++程序,必须包含一个main函数,并且记住main函数的格式(与C语言的main函数完全相同)。


字符串

        在C语言中(C++语言是完全兼容C语言的),使用单引号括起来一个字符,表示字符字面值,例如'A'、'1'、'@'等,它们在内存中以ASCII码的形式存储。例如,字符'A'的ASCII码值是65,字符'a'的ASCII码值是97。字符类型在C++语言中是char类型,它通常占用1个字节的内存空间。

        使用双引号括起来多个字符表示一个字符串,比如:"abcdef" , "hello world",字符串中可以有一个或者多个字符,也可以没有任何字符,""表示空字符串。

        上面代码中的"hello world!"就是一个字符串。在C语言中往往用字符数组来表示一个字符串;在C++的STL中又引入了string类来表示字符串(C语言不支持),提供了一种更高效、更安全的办法处理字符串,同时也支持更多对于字符串的操作,后期会详细介绍。上述的代码中字符串的内容可以根据需要变换成任意内容,可以自行尝试。


四、头文件

        前面的代码中,写的#include <iostream>,就是在包含头文件,头文件的名字叫:iostream,使用#include< >的形式进行包含。iostream文件中的io指的是输入(进入程序的信息,简单理解就是可以给程序输入数据——input)和输出(从程序中输出的信息,简单理解就是程序会打印数据在屏幕上——output)。因此iostream即一个表示输入输出流的头文件。

        在C++程序中要完成输入和输出的操作会涉及到iostream文件中的多个定义,所以就要包含这个头文件。比如:代码中的cout是输出流对象,就是用来完成数据输出的,就需要包含头文件。

        我们可以把一个头文件理解为一个工具箱,想要使用里面的工具,就需要包含这个头文件。当然除了iostream这个头文件之外,C++还有大量的头文件。

        C++的编译器自带了很多头文件,每个头文件都支持一组特定的工具。在代码中如果使用了某个头文件中的定义,也就是使用了对应的工具,就得包含对应的头文件。

        C++库函数相关头文件:https://zh.cppreference.com/w/cpp/header

        关于C++语言中的头文件,有以下需要注意的地方:

1、在C语言中头文件的扩展名是 .h,但是C++中的用法发生了一些变化,对老式C语言的头文件保留了扩展名 .h,但是C++自己的头文件没有扩展名。

C语言头文件:https://zh.cppreference.com/w/c/header

2、有些C的头文件被转换成C++头文件,这些文件名被重命名,去掉了 .h扩展名,并在文件名的前面加上了前缀c(表示来自C语言);例如:C语言中有关数学的头文件名字是math.h,在C++中就是cmath。当然还得注意,有时头文件的C语言版本和C++版本相同,而有时候,新版本做了一些修改。

        C++语言中的头文件命名约定:

头文件类型

约定

实例

说明

C++语言旧式风格

以 .h结尾

<iostream.h>

C++程序可以使用

但是一些新的IDE可能不再支持

C语言旧式风格

以 .h结尾

<math.h>

C程序、C++程序均可使用

C++语言新式风格

没有扩展名

<iosream>

C++程序可以使用,使用namespace std

转换后的C

加上前缀

但没有扩展名

<cmath>

C++程序可以使用,可能包含的不是C的特性

        我们现在学习的编程风格便是C++语言新式风格,可能还会结合C语言中的头文件,但是不推荐使用C++语言旧式风格了。


五、cin和cout的初识

        cout << "hello world!" << endl;这句代码在上面的程序中是最重要的代码,其他所有的代码都是为了编写这句代码。

        代码中的cout是标准输出流对象(针对控制台,也就是屏幕),其实还有标准输入流对象(针对的是键盘)cin。

        cout是告诉程序把后面双引号中的内容打印到标准输出设备(屏幕)上,双引号中的内容是可以替换的。

#include <iostream>
using namespace std;
int main()
{int num = 0;//num其实是一块空间,可以存放一个整数cin >> num; //输入操作,输入一个整数存放在num中cout << num << endl; // 输出操作,将num中的数值打印在屏幕上 return 0;
}

        上面这段代码实现了由键盘输入一个整数,再在屏幕上打印出来,接下来对cin和cout进行几点说明:

1、cin和cout是全局的流对象,cin负责输入数据,cout负责输出数据。它们是C++标准输入输出库的核心部分,通过这些流对象,可以很方便地实现数据的输入和输出操作。

2、endl是C++中一个特殊的操作符,效果是换行和刷新缓冲区,使用时必须包含iostream头

文件。

3、<< 是流插入运算符,和cout配合使用,>> 是流提取运算符,和cin配合使用,两者容易混淆,一定要仔细区分,不可混用。

4、使用C++输入输出更方便,不需要像C语言中的printf / scanf输入输出时那样,需要手动控制格式。C++的输入输出可以自动识别变量类型。

        接下来我们再使用一段代码来展示在C++语言中输入输出一个浮点型(小数):

#include <iostream>
using namespace std;
int main(){float num = 0.0;cin >> num; cout << num << endl; return 0;
}

六、名字空间

        using namespace std;这句代码的意思是:使用名字空间std(名字空间也叫命名空间)。

        为了理解什么是名字空间,名字空间要解决什么问题,先来看下面的一个例子:一个学校里学生可能有重名,假设这个学校有3个叫张三的同学,那么每次老师喊张三的时候,其他两个张三就会误会,是不是在喊自己,这就是因为这三个张三其实在同一个范围(空间)内的,就会有名字的冲突。

        但是如果这个学校的学生分为三个班,分别是1班、2班、3班,把三个张三分别安排在不同的班级,那么老师以后喊:1班的张三,那么2班、3班的张三就不会误会了,这就很好的解决了名字冲突的问题。

        其实这里的本质就是:将名字进行了隔离同时在使用名字之前先交待使用哪个班级的名字。

        在C++中,变量、函数和类都是大量存在的,这些变量、函数和类的名称如果都存在于全局作用域中,可能会导致很多冲突。比如,你定义了一个名为sort的函数,而标准库中也有一个sort函数,如果没有名字空间,编译器就不知道你到底要调用哪一个。使用名字空间的目的是对标识符的名称进行隔离,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。

        std是C++标准库的名字空间名,C++将标准库的定义实现都放到这个命名空间中,当我们需要使用标准库中的内容时,就需要加上:using namespace std;当有了这句代码的时候,表示名字空间std中信息都是可见和可用的,比如:cin、cout、endl等。

        名字空间也是根据需要自己定义的,但是在算法竞赛当中基本使用不到,这里就不加详细介绍,大家可以自行拓展学习。

        当然直接使用using namespace std;是一种简单粗暴的做法,直接这样使用,就意味着后续在std这个名字空间中的各种定义都可以直接使用,但是我们往往只是使用部分。所以名字空间其实也可以这样使用:

#include <iostream>
int main()
{int num = 5;std::cout << num << std::endl;return 0;
}

        上面代码中的std::cout的意思就是使用std名字空间中的cout。采用std::cout这种写法,如果频繁使用,在算法竞赛中比较麻烦,耽搁时间。因此在蓝桥杯这样的竞赛中,我们还是建议直接使用using namespace std;的形式。

        但是在企业中做软件开发基本上都使用类似std::cout的写法,这样写可以更好的避免名字冲突的问题,当然在通过后期更深入的技术学习中可以体会得到。


七、注释

        C++语言中主要有两种注释形式:单行注释 // 和多行注释 /*   */ 。

        注释是对代码进行解释的文字(对代码进行解释或者对代码文档进行必要的说明),要放在代码中,但是又无需编译(编译器不会对注释进行编译)。注释是给程序员自己看的,在编写带代码的时候写必要的注释是非常好的习惯,方便自己理解的同时也方便别的程序员阅读你的代码,编译器会忽略注释,基于注释是被编译器忽略的这个特点,在代码中有些代码不再需要的时候也会使用注释的方式屏蔽。

        单行注释:指的是当前行不参与编译和运行。比如下面这段代码中使用的均为单行注释。

#include <iostream>
using namespace std;
int main()
{int num = 0;//num其实是一块空间,可以存放一个整数cin >> num; //输入操作,输入一个整数存放在num中cout << num << endl; // 输出操作,将num中的数值打印在屏幕上 return 0;
}

        多行注释:指的是被包含在内的多行不参与编译和运行。比如下面这段代码就是一个多行注释。

/*
编写人:刘博实
编写时间:2025年08月01日
编写内容:C++语言的第一个程序
*/
#include <iostream>

        在DevC++中注释和取消注释的快捷键:Ctrl + /


【练习一】

        编写一个能够输出Hello,World!的程序。

· 输出提示:使用英文标点符号,“Hello,World!”后面没有空格,H和W为大写字母。 

【参考答案】

#include <iostream>
using namespace std;
int main()
{cout << "Hello,World!" << endl;return 0;
}

【本题注意点】

        1、仔细读题、审题。

        2、注意语法细节:main函数的写法、大括号的匹配、中英文标点的使用、包含头文件以及命名空间的写法。


【练习二】

        在屏幕输出信息,输出一架小飞机。请编写程序输出这架小飞机。

【参考答案】

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

【本题注意点】

        OJ题目输出的结果有严格的检查,代码输出的结果必须和题目要求统一才是可以的。所以在接下来的习题中,如果有要求在特定情况下的输出,我们可以考虑将对应内容直接进行复制粘贴。


练习三

        输入三个整数,整数之间由一个空格分隔。把第二个输入的整数输出。

· 输入格式:只有一行,共三个整数,整数之间由一个空格分隔。

· 输出格式:只有一行,一个整数,即输入的第二个整数。

【参考答案】

#include <iostream>
using namespace std;
int main()
{int num1 = 0;int num2 = 0;int num3 = 0;cin >> num1 >> num2 >> num3;cout << num2 << endl;return 0;
}

【本题注意点】

        1、这里的三个整数,可以分三次读入,也可以一次读入,要获取到第二个输入值时才能输出结果。

        2、cin是支持连续读入几个数值的;cout也是支持连续输出几个数值的。


【练习四

        给定一个字符,用它构造一个底边长5个字符,高3个字符的等腰字符三角形。

· 输入格式:输入只有一行,包含一个字符。

· 输出格式:该字符构成的等腰三角形,底边长5个字符,高3个字符。

· 说明/提示:对于100%的数据,输入的字符是ASCII中的可见字符。

【参考答案】

#include <iostream>
using namespace std;
int main()
{char a = '0';cin >> a;cout << "  " << a << endl;cout << " " << a << a << a << endl;cout << a << a << a << a << a << endl;return 0;
}

【本题注意点】

        在接下来进行“数据类型”的学习时,会了解到ASCII码表,ASCII码表前32位其实都是不可见字符。而ASCII码表总共包含的范围是0~127。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

进制定义与转换详解

文章目录&#x1f4d8; 进制定义与转换详解一、进制的含义二、常见进制介绍1. 十进制&#xff08;Decimal&#xff0c;Base-10&#xff09;2. 二进制&#xff08;Binary&#xff0c;Base-2&#xff09;3. 八进制&#xff08;Octal&#xff0c;Base-8&#xff09;4. 十六进制&am…

【安卓笔记】用MVC、MVP、MVVM来实现井字棋案例

0. 环境&#xff1a;电脑&#xff1a;Windows10Android Studio: 2024.3.2编程语言: JavaGradle version&#xff1a;8.11.1Compile Sdk Version&#xff1a;35Java 版本&#xff1a;Java111. 首先、简单实现井字棋的功能。功能拆解&#xff1a;1. 棋盘为3x32. 点击棋盘button&a…

【洛谷】单向链表、队列安排、约瑟夫问题(list相关算法题)

文章目录单向链表题目描述题目解析代码队列安排题目描述题目解析代码约瑟夫问题题目描述题目解析代码单向链表 题目描述 题目解析 这道题因为有大量的任意位置插入删除&#xff0c;所以肯定不能用数组&#xff0c;用链表是最合适的&#xff0c;而在算法竞赛通常都用静态链表&a…

当人机交互迈向新纪元:脑机接口与AR/VR/MR的狂飙之路

从手机到 “头盔”&#xff1a;交互终端的变革猜想​​在当今数字化时代&#xff0c;智能手机无疑是我们生活中不可或缺的一部分。它集通讯、娱乐、办公等多种功能于一身&#xff0c;成为了人们与外界交互的主要窗口。然而&#xff0c;随着科技的飞速发展&#xff0c;智能手机作…

InfluxDB HTTP API 接口调用详解(二)

实际应用案例演示 1. 数据写入案例 假设在一个物联网设备数据采集场景中&#xff0c;有多个传感器设备持续采集环境的温度和湿度数据。我们以 Python 语言为例&#xff0c;使用requests库来调用 InfluxDB 的 Write 接口将数据写入 InfluxDB。 首先&#xff0c;确保已经安装了…

世运会线上知识竞赛答题pk小程序怎么做

随着2025年成都世界运动会的来临&#xff0c;越来越多的企事业单位组织员工进行线上知识竞赛&#xff0c;那么答题PK小程序该怎么做&#xff0c;接下来我们来一一分析&#xff1a; 世运会线上知识竞赛答题pk小程序怎么做一、答题功能&#xff1a;支持多种题型&#xff0c;如选择…

Java毕业设计 | 基于微信小程序的家校互动作业管理系统(Spring Boot+Vue.js+uni-app+AI,附源码+文档)

Java毕业设计 | 基于微信小程序的家校互动作业管理系统&#xff08;Spring BootVue.jsuni-app&#xff0c;附源码文档&#xff09;&#x1f3af; 毕业设计私人教练 专注计算机毕设辅导第 6 年&#xff0c;累计 1v1 带飞 800 同学顺利通关。从选题、开题、代码、论文到答辩&…

CentOS8 使用 Docker 搭建 Jellyfin 家庭影音服务器

CentOS8 使用 Docker 搭建 Jellyfin 家庭影音服务器 一、前言 由于 Jellyfin 的 GPL 协议和 Intel 的 media-driver (iHD) Linux 驱动&#xff08;部分开源&#xff09;在协议上不兼容的缘故&#xff0c;Jellyfin 官方的 Docker 镜像&#xff1a;jellyfin/jellyfin 并不包含 …

PyTorch武侠演义 第一卷:初入江湖 第4章:损失玉佩的评分风波

第一卷&#xff1a;初入江湖 第4章&#xff1a;损失玉佩的评分风波比武开幕 晨钟响彻山谷&#xff0c;PyTorch派三年一度的"模型比武大会"正式开始。各分舵弟子列队入场&#xff0c;林小码跟在Tensor大师身后&#xff0c;眼睛瞪得溜圆——只见&#xff1a; "卷积…

HttpServletRequestWrapper存储Request

HTTP请求的输入流只能被读取一次&#xff0c;再想获取就获取不到了&#xff0c;那有什么方法可以缓存呢&#xff0c;我们可以自定义一个HttpServletRequest&#xff0c;或者是想在请求参数中统一添加或删除参数也可以使用此类进行改造&#xff0c;然后通过过滤器继续向下流转。…

算法:数组part02: 209. 长度最小的子数组 + 59.螺旋矩阵II + 代码随想录补充58.区间和 + 44. 开发商购买土地

算法&#xff1a;数组part02: 209. 长度最小的子数组 59.螺旋矩阵II 代码随想录补充58.区间和 44. 开发商购买土地 209. 长度最小的子数组题目&#xff1a;https://leetcode.cn/problems/minimum-size-subarray-sum/description/ 文章讲解&#xff1a;https://programmercarl…

Spring 核心知识点梳理 1

目录 Spring Spring是什么&#xff1f; Spring中重要的模块 Spring中最重要的就是IOC(控制反转)和AOP(面向切面编程) 什么是IOC DI和IOC之间的区别 为什么要使用IOC呢&#xff1f; IOC的实现机制 什么是AOP Aop的核心概念 AOP的环绕方式 AOP发生的时期 AOP和OOP的…

Kafka运维实战 07 - kafka 三节点集群部署(混合模式)(KRaft 版本3.7.0)

目录环境准备主机准备补充说明JDK安装 (三台主机分别执行)下载jdkjdk安装kafka 部署(三台主机分别执行)kafka 下载kafka 版本号结构解析kafka 安装下载和解压安装包(3台主机都执行)配置 server.properties &#xff08;KRaft 模式&#xff09;192.168.37.10192.168.37.11192.16…

linux内核与GNU之间的联系和区别

要理解操作系统&#xff08;如 GNU/Linux&#xff09;的组成&#xff0c;需要明确 内核&#xff08;Kernel&#xff09; 和 GNU 工具链 各自的功能&#xff0c;以及它们如何协作构成完整的操作系统。以下是详细分析&#xff1a;1. 内核&#xff08;Kernel&#xff09;的功能 内…

文件包含学习总结

目录 漏洞简介 漏洞原理 漏洞分类 漏洞防御 漏洞简介 程序开发人员一般会把重复使用的函数写到单个文件中&#xff0c;需要使用某个函数时直接调用此文件&#xff0c;而无需再次编写&#xff0c;这种文件调用的过程一般被称为文件包含。程序开发人员一般希望代码更灵活&…

TQZC706开发板教程:创建PCIE项目

本例程基于zc706开发板&#xff0c;使用xdma核创建PCIE项目&#xff0c;最终实现插入主机可识别出Xilinx设备。在vivado中创建一个空的706项目。创建完成后添加IP核-->搜索xdma-->双击打开配置。添加XDMA核如下所示basic配置peic id中设置设备号等信息&#xff0c;这里保…

科技赋能景区生.态,负氧离子气象监测站筑牢清新防线

负氧离子气象监测站&#xff0c;如同景区空气质量的坚固防线&#xff0c;默默守护着每一寸土地的清新。​它以精准的监测能力为防线基石。借助 “吸入式电容收集法”&#xff0c;能敏锐捕捉空气中负氧离子的踪迹&#xff0c;精准测量其浓度&#xff0c;同时将温度、湿度、PM2.5…

AMD官网下载失败,不让账户登录下载

别使用163邮箱 使用QQ邮箱&#xff0c;然后用GPT生成一个外国&#xff0c;比如日本的地区信息填上去就可以下载了

Elasticsearch-8.17.0 centos7安装

下载链接 https://www.elastic.co/downloads/past-releases/elasticsearch-8-17-0 https://www.elastic.co/downloads/past-releases/logstash-8-17-0 https://www.elastic.co/cn/downloads/past-releases/kibana-8-17-0https://artifacts.elastic.co/downloads/elasticsearch/…

windows下SAS9.4软件下载与安装教程

SAS 9.4是SAS公司推出的一款功能强大的统计分析软件&#xff0c;广泛应用于数据分析、商业智能、预测分析、数据挖掘及统计建模等多个领域。数据处理与管理能力&#xff1a;SAS 9.4支持多种数据格式的导入导出&#xff0c;包括JSON、XML等&#xff0c;便于处理来自Web和API的数…