十四天学会C++之第一天(入门和基本语法)

在这里插入图片描述

C++的起源和历史

C++诞生于20世纪80年代初,它的创造者是计算机科学家Bjarne Stroustrup。当时,Stroustrup在贝尔实验室工作,他希望为C语言添加一些功能,以便更好地支持系统开发。这个愿望促使他创建了C++。

C++的名字来源于它的基因,其中的"C"代表了C语言,而"++"表示C语言的一个增强版本。这个名字反映了C++的初衷,即在C语言的基础上引入更多的功能和特性。

C++的发展历程非常丰富多彩。1983年,第一个C++编译器问世。1985年,Stroustrup发表了他的博士论文,详细介绍了C++的设计和理念。接着,C++开始逐渐在计算机科学领域广泛传播开来。

C++的主要特点

C++的魅力在于它的多样性和灵活性。以下是C++的主要特点:

  • 面向对象编程(OOP):C++是一门强大的面向对象编程语言。它支持面向对象的核心概念,如封装、继承和多态性。这使得C++成为构建复杂软件系统的理想选择。

  • 封装、继承、多态性:C++鼓励良好的代码组织,通过类和对象实现封装,通过继承创建新的类,通过多态性支持灵活的对象行为。

  • 标准模板库(STL):C++提供了强大的STL,它包括许多容器和算法,可以大大简化数据结构和算法的实现。

  • 高性能:C++的性能一直是其吸引力之一。它允许直接内存操作,使得C++程序可以高效地执行。

  • 跨平台性:C++可以在各种操作系统上运行,这使得它成为跨平台开发的首选语言之一。

C++程序的结构

一个典型的C++程序由多个部分组成,这些部分包括头文件引入、全局声明、main函数、函数定义等。

#include <iostream>  // 引入头文件// 全局声明int main() {// main函数// 代码逻辑return 0;  // 返回值
}// 函数定义

编写一个简单的Hello World程序

#include <iostream>  // 引入头文件int main() {// main函数// 使用cout输出Hello World到控制台std::cout << "Hello, World!" << std::endl;return 0;  // 返回值
}

运行结果:在这里插入图片描述

程序解释

  • #include <iostream>:这是一个头文件引入的示例,它允许我们使用C++标准库中的输入输出功能。在C++中,头文件用于包含预定义的函数和类,以便我们可以使用它们。

  • int main():这是C++程序的入口点,也就是main函数。在这个函数内部,我们编写程序的主要逻辑。main函数的返回值类型是整数(int),通常用于指示程序的执行状态。如果返回0,表示程序正常结束。

  • std::cout << "Hello, World!" << std::endl;:这是一个输出语句,使用std::cout对象将字符串"Hello, World!"输出到控制台。<< 运算符用于将数据插入到输出流中,std::endl表示换行。

这个Hello World程序很简单,它演示了C++程序的基本结构和语法。我们可以在main函数内部编写更多的代码来实现各种功能。

基本数据类型

C++提供了多种基本数据类型,用于存储不同种类的数据。以下是一些常见的基本数据类型:

  1. 整数类型(int):用于存储整数值,如-1、0、1、2等。
  2. 浮点类型(float和double):用于存储带有小数点的数值,如3.14、0.5等。
  3. 字符类型(char):用于存储单个字符,如’A’、'B’等。
  4. 布尔类型(bool):用于存储布尔值,只有两个可能的值,true和false。

声明和初始化变量

在C++中,我们使用变量来存储和操作数据。声明变量意味着我们在内存中为它们分配了存储空间。

int age;            // 声明一个整数变量
float price = 9.99; // 声明并初始化一个浮点数变量
char grade = 'A';   // 声明并初始化一个字符变量
bool isStudent = true; // 声明并初始化一个布尔变量

在上面的示例中,我们声明了四个不同类型的变量:age(整数)、price(浮点数)、grade(字符)和isStudent(布尔)。

变量的命名规则和标识符

在C++中,变量名必须遵循一些命名规则和标识符规定:

  • 变量名可以包含字母、数字和下划线。
  • 变量名必须以字母或下划线开头,不能以数字开头。
  • 变量名区分大小写,这意味着myVarmyvar被视为不同的变量。
  • 避免使用C++关键字作为变量名,如intfloatif等。

有效的变量名示例:myVarageuser_name。良好的命名习惯可以使代码更具可读性和维护性。

使用cin实现用户输入数据

在C++中,我们使用cin来接收用户输入的数据。cin是C++标准库中的输入流对象,它可以读取用户从键盘输入的信息。

#include <iostream>
using namespace std;int main() {string name;cout << "请输入您的姓名: ";cin >> name;cout << "欢迎您," << name << "!" << endl;return 0;
}

运行结果:在这里插入图片描述

在示例中,我们首先声明了一个字符串变量name来存储用户的姓名。然后,我们使用cout输出流对象向用户显示一条提示消息,要求用户输入姓名。接下来,使用cin输入流对象接收用户的输入,并将其存储在name变量中。最后,我们使用cout再次输出欢迎消息,包括用户的姓名。

输入流和输出流的概念

在C++中,cincout分别是输入流和输出流的实例。流是一种数据传输方式,它可以将数据从一个地方传输到另一个地方。输入流用于从外部(例如键盘)读取数据,而输出流用于向外部(例如屏幕)写入数据。

流的概念使我们能够以一种连贯和一致的方式进行输入和输出操作,无论是与用户交互还是与文件进行数据交换。

C++中的运算符

C++提供了多种类型的运算符,用于执行各种操作。以下是一些常见的运算符:

  1. 算术运算符:用于执行基本的数学运算,例如加法、减法、乘法和除法。
int a = 10;
int b = 5;
int sum = a + b; // 加法
int diff = a - b; // 减法
int product = a * b; // 乘法
int quotient = a / b; // 除法
  1. 关系运算符:用于比较两个值之间的关系,返回布尔结果(真或假)。
int x = 10;
int y = 5;
bool isEqual = (x == y); // 等于
bool isNotEqual = (x != y); // 不等于
bool isGreater = (x > y); // 大于
bool isLess = (x < y); // 小于
  1. 逻辑运算符:用于执行逻辑操作,例如逻辑与、逻辑或和逻辑非。
bool condition1 = true;
bool condition2 = false;
bool resultAnd = (condition1 && condition2); // 逻辑与
bool resultOr = (condition1 || condition2); // 逻辑或
bool resultNot = !condition1; // 逻辑非

表达式的构建和求值

在C++中,表达式是由运算符和操作数组成的组合,用于执行特定的计算。表达式可以包含变量、常量和函数调用。

int a = 10;
int b = 5;
int result = (a + b) * 2; // 表达式由运算符和操作数构成

在上面的示例中,表达式(a + b) * 2包含了加法运算符、乘法运算符和操作数a、b、2。

表达式的求值是根据运算符的优先级和结合性来执行的。C++有一套严格的规则来确定表达式中各个运算符的执行顺序。

数学运算示例

简单的数学运算示例来加深对表达式的理解:

#include <iostream>
using namespace std;int main() {int a = 10;int b = 5;// 加法和乘法表达式int sum = a + b;int product = a * b;// 输出结果cout << "Sum: " << sum << endl;cout << "Product: " << product << endl;return 0;
}

运行结果:在这里插入图片描述

在示例中,我们计算了两个整数的和and积,并使用cout输出流将结果显示在屏幕上。

基本的控制结构(if语句,循环)

条件语句 - if和if-else

条件语句允许根据条件的真假执行不同的代码块。if语句的基本用法:

if (条件) {// 如果条件为真,执行这里的代码块
} 

使用if语句来判断一个数字是否为正数:

#include <iostream>
using namespace std;int main() {int number;cout << "请输入一个整数:";cin >> number;if (number > 0) {cout << "这是一个正数" << endl;}return 0;
}

运行结果:在这里插入图片描述

在示例中,如果用户输入的数字大于0,将输出"这是一个正数"。

if-else语句允许我们在条件为假时执行另一段代码块:

if (条件) {// 如果条件为真,执行这里的代码块
} else {// 如果条件为假,执行这里的代码块
}

下面是一个判断数字奇偶性:

#include <iostream>
using namespace std;int main() {int number;cout << "请输入一个整数:";cin >> number;if (number % 2 == 0) {cout << "这是一个偶数" << endl;} else {cout << "这是一个奇数" << endl;}return 0;
}

运行结果:在这里插入图片描述

循环结构 - for和while

循环结构允许我们重复执行一段代码,直到满足特定条件为止。for循环的基本用法:

for (初始化; 条件; 步进) {// 循环体
}

使用for循环来打印从1到10的数字:

#include <iostream>
using namespace std;int main() {for (int i = 1; i <= 10; i++) {cout << i << " ";}cout << endl;return 0;
}

运行结果:
在这里插入图片描述

while循环的用法:

while (条件) {// 循环体
}

使用while循环计算数字的阶乘:

#include <iostream>
using namespace std;int main() {int n;cout << "请输入一个正整数:";cin >> n;int factorial = 1;while (n > 0) {factorial *= n;n--;}cout << "阶乘结果为:" << factorial << endl;return 0;
}

运行结果:
在这里插入图片描述

if语句用于根据条件执行不同的代码块,而循环结构允许我们重复执行代码。

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

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

相关文章

Nginx实现动静分离

一、概述 1、什么是动静分离 动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来&#xff0c;动静资源做好了拆分以后&#xff0c;我们就可以根据静态资源的特点将其做缓存操作&#xff0c;这就是网站静态化处理的核心思路。 动静分离简单的概…

基于C++ Qt的积分抽奖系统源码,实现了用户注册、商品购买、积分抽奖等功能

基本介绍 完整代码下载&#xff1a;基于C Qt的积分抽奖系统 这个是我大二上学期的课程作业仓库&#xff0c; 目的是实现一个超市积分抽奖系统&#xff0c; 基本的功能是实现一个能够在超市购物的同时进行抽奖的积分系统&#xff0c; 主要用到的技术栈就是Qt和c&#xff0c; 叠…

火山引擎 ByteHouse 与白鲸开源完成兼容性认证,加速数据价值释放

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 数据作为新型生产要素&#xff0c;已快速融入生产、分配、流通、消费和社会服务管理等各环节&#xff0c;深刻改变着生产方式、生活方式和治理方式。越来越多企业也…

Hive【Hive(五)函数-高级聚合函数、炸裂函数】

高级聚合函数 多进一出&#xff08;多行输入&#xff0c;一个输出&#xff09; 普通聚合函数&#xff1a;count、sum ... 1&#xff09;collect_list&#xff08;&#xff09;&#xff1a;收集并形成 list 集合&#xff0c;结果不去重 select sex,collect_list(job) from e…

JAVA学习(3)-全网最详细~

回顾 昨天学了 Java 中的数据类型-整型 int - integer,以及什么是标识符identifier和它的命名规则,什么是保留字(reserved word key word),最后还谈到了Java变量包括局部变量和成员变量(在类内部,方法外部的变量),变量必须要初始化,否则会报错.如果有遗忘或者是感兴趣的小伙伴…

Python PEP8 代码规范常见问题及解决方案

Win11查看安装的Python路径及安装的库 Python3(基础|高级)语法实战(|多线程|多进程|线程池|进程池技术)|多线程安全问题解决方案 Python PEP8 代码规范常见问题及解决方案 Python3操作MySQL8.XX创建表|CRUD基本操作 Python3操作SQLite3创建表主键自增长|CRUD基本操作 anac…

ESLint自动修复代码规范错误

基于 vscode 插件 ESLint 高亮错误&#xff0c;并通过配置 自动 帮助我们修复错误 在设置中 settings.json添加这段代码就自动修复错误 // 当保存的时候&#xff0c;eslint自动帮我们修复错误 "editor.codeActionsOnSave": { "source.fixAll": true }, /…

Ubuntu安装samba服务器

为了window系统下能够像访问本地目录一样访问ubuntu系统下的目录&#xff0c;这里我通过安装samba服务器&#xff0c;将ubuntu系统的文件目录通过网络挂载的方式共享出来&#xff0c;以便在window下就能够对ubuntu系统的文件进行读写等访问操作&#xff0c;这里记录一下samba服…

HTTP的请求方法,空行,body,介绍请求报头的内部以及粘包问题

目录 一、GET与POST简介 二、空行和body 三、初识请求报头以及粘包问题 四、认识请求报头剩余部分 一、GET与POST简介 GET https://www.sogou.com/HTTP/1.1 请求报文中的方法&#xff0c;是最常规的方法&#xff08;获取资源&#xff09; POST&#xff1a;传输实体主体的方法…

插入排序:简单而有效的排序方法

在计算机科学中&#xff0c;排序算法是一个重要且常见的主题&#xff0c;它们用于对数据进行有序排列。插入排序&#xff08;Insertion Sort&#xff09;是其中一个简单但有效的排序算法。本文将详细解释插入排序的原理和步骤&#xff0c;并提供Java语言的实现示例。 插入排序的…

systrace/perfetto抓取方式分享

背景 近来有一些同学反馈性能分析&#xff0c;现在大部分都是其实已经开始使用perfetto了&#xff0c;连sdk上都已经找不到哦systrace相关工具&#xff0c;让马哥可以分享一些这个相关内容&#xff0c;其实以前企业里面那时候大部分都是使用老版本systrace的&#xff0c;相比新…

sheng的学习笔记-【中文】【吴恩达课后测验】Course 1 - 神经网络和深度学习 - 第二周测验

课程1_第2周_测验题 目录&#xff1a;目录 第一题 1.神经元计算什么&#xff1f; A. 【  】神经元计算激活函数后&#xff0c;再计算线性函数&#xff08;zWxb&#xff09; B. 【  】神经元计算一个线性函数&#xff08;zWxb&#xff09;&#xff0c;然后接一个激活函数…

【C语言进阶(11)】动态内存管理

文章目录 Ⅰ 存在动态内存分配的原因Ⅱ 动态内存函数1. malloc2. calloc3. realloc4. free (重要) Ⅲ 常见动态内存错误1. 对 NULL 指针的解引用操作2. 对动态开辟空间的越界访问3. 对非动态开辟内存使用 free 释放4. 使用 free 释放一块动态开辟内存的一部分5. 对同一块动态内…

《深度不确定条件下的决策:从理论到实践》PDF

制定未来计划时需要预测变化&#xff0c;尤其是制定长期计划或针对罕见事件的计划时。当这些变化存在高度不确定性的时候&#xff0c;这种预期就变得越来越困难。 今天给大家介绍的这本《深度不确定条件下的决策&#xff1a;从理论到实践》正是解决以上问题的良方。完整书籍文…

数据结构与算法-顺序表

数据结构与算法 &#x1f388;1.线性表&#x1f50e;1.1基本操作&#x1f50e;1.2线性表的存储结构 &#x1f388;2.线性表的顺序表示和实现&#x1f50e;2.1线性表的顺序存储表示&#x1f52d;2.1.1静态顺序表&#x1f52d;2.1.2动态顺序表 &#x1f50e;2.2顺序表基本操作的实…

安卓:解决AndroidStudio导出Unity的Apk(APP)出现2个显示图标

用AndroidStudio打开该项目 实现只保留1个app图标 AndroidManifest.xml的改法如下&#xff1a; <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas.android.com/apk/res/android" package"com.fru…

【开发篇】十四、SpringBoot整合Quartz实现定时任务

文章目录 1、关于定时任务2、Java原生实现3、相关名词4、SpringBoot整合Quartz5、Quartz的通用配置6、关于QuartzJobBean7、关于调度器Scheduler的绑定8、Quartz持久化 1、关于定时任务 定时任务在实际开发中使用场景很多&#xff0c;比如&#xff1a; 年度报告各种统计报告某…

【小程序 - 加强】自定义组件、使用npm包、全局数据共享、分包_05

目录 一、自定义组件 1. 组件的创建与引用 1.1 创建组件 1.2 引用组件 1.2.1 局部引用组件 1.2.2 全局引用组件 1.2.3 全局引用 VS 局部引用 1.2.4 组件和页面的区别 2. 样式 2.1 组件样式隔离 2.2 组件样式隔离的注意点 2.3 修改组件的样式隔离选项 2.4 styleIso…

C++(List)

本节目标&#xff1a; 1.list介绍及使用 2.list深度剖析及模拟实现 3.list和vector对比 1.list介绍及使用 1.1list介绍 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。 2. list的底层是双向链表结构&#xff0c;…

内网综合扫描工具-fscan的安装和使用

简介 一款内网综合扫描工具&#xff0c;方便一键自动化、全方位漏扫扫描。 支持主机存活探测、端口扫描、常见服务的爆破、ms17010、redis批量写公钥、计划任务反弹shell、读取win网卡信息、web指纹识别、web漏洞扫描、netbios探测、域控识别等功能。相当强大&#xff01;&…