C++基础语法入门

C++基础语法入门

对C++有初步了解,能够有基础编程能力
案例:通讯录管理系统

1.C++初识

1.1注释

单行注释://
多行注释:/*描述信息*/

1.2变量

意义:方便管理内存空间。
语法:

数据类型		变量名 = 变量初始值;
			int a = 10

1.3常量

作用:用于记录程序中不可更改的数据。
C++定义常量的两种方式:

1.#define 宏常量:

**#define 常量名 常量值**
(通常在文件上方定义,表示一个常量。)

2.const修饰的变量

**const 数据类型 常量名 = 常量值**
(通常在变量定义前加关键字const,修饰该变量为常量,不可修改。)

1.4关键字

作用:关键字是C++中预先保留的单词(标识符)
在定义变量或常量时,不要使用关键字。
在这里插入图片描述

1.5标识符命名规则

C++规定给标识符(变量、常量)命名时,有一套自己的规则:

  1. 标识符不能是关键字
  2. 标识符只能由字母、数字、下划线构成
  3. 第一个字母必须为字母或下划线
  4. 标识符中字母区分大小写

2.数据类型

给变量分配合适的内存空空间。

2.1整型

表示整数类型的数据
分类:(所占内存空间不同)在这里插入图片描述

2.2sizeof关键字

利用sizeof关键字可以统计数据类型所占内存大小
语法:

**sizeof(数据类型/变量)**

2.3实型(浮点型)

用于表示小数
分类:
1.单精度float
2.双精度double
(区别在于表示的有效数字范围不同)
在这里插入图片描述
默认情况下,输出一个小数,会显示6位有效数字。

//科学计数法:
在这里插入图片描述

2.4字符型

用于显示单个字符
语法:

char ch = 'a'

注:
1.在显示字符型变量时,用单引号,不要用双引号。
2.单引号内只能由一个字符,不可以是字符串。

  • C/C++中字符型变量只占用1个字节
  • 字符型变量并不是把字符本身放到内存中储存,而是将对应的ASCII编码放到存储单元中。

2.5转义字符

用于表示一些不能显示出来的ASCII字符
常见:
换行符:\n
反斜杠:\
水平制表符:\t(一共占8个位置)
【可保持对齐】

2.6字符串型

表示一串字符
两种风格:
1.C风格字符串:

**char 变量名[ ]="字符串值"**
  • C风格字符串要用双引号括起来

2.C++风格字符串:

**string 变量名 = "字符串值"**
  • 需要包含 #include 头文件

2.7布尔类型 Bool

表示真或假的值
语法:
bool 变量名 = true/false
bool类型只有两个值:

  1. true - 真 (本质是1)
  2. false - 假 (本质是0)
    【输出会为1/0】
    注:
    1.bool类型占用1个字节大小
    2.只要是非0的值都代表真

2.8数据的输入

作用:从键盘获取数据
关键字:cin
语法:

**cin >> 变量**

3.运算符

作用:用于执行代码的运算
本章主要讲以下几类:
算术运算符 用于处理四则运算
赋值运算符 用于将表达式的值赋给变量
比较运算符 用于表达式的比较,并返回一个真值或假值
逻辑运算符 用于根据逻辑表达式的值返回真值或假值

3.1算术运算符

在这里插入图片描述
注:
1.除数不能为0
2.两个小数可以相除,且结果可为小数
3.两个小数不可以做取模运算
4.前置递增/减:先让变量+/-1,再进行表达式运算
后置递增/减:先进行表达式运算,后让变量+/-1

3.2赋值运算符

在这里插入图片描述

3.3比较运算符

在这里插入图片描述

3.4逻辑运算符

在这里插入图片描述
注:
1.与:同真为真,其余为假
2.或:同假为假,其余为真

4.程序流程结构

C/C++支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构
顺序结构:程序按顺序执行。不发生跳转
选择结构:依据条件是否满足,有选择的执行相应功能
循环结构:依据条件是否满足,循环多次执行某段代码

4.1选择结构

4.1.1 if语句

三种形式:

1.单行格式if语句:
**if(条件){条件满足执行的语句}**在这里插入图片描述
注:if条件后不要加分号;(会导致代码分离)

2.多行格式if语句:

**if(条件){
   条件满足执行的语句}else{
   条件不满足执行的语句}**

在这里插入图片描述

3.多条件的if语句:
if(条件1){条件1满足执行的语句}else if(条件2){条件2满足执行的语句}...else{都不满足执行的语句} 在这里插入图片描述

嵌套if语句:在if语句中,可以嵌套使用if语句,达到更精确的条件判断

4.1.2三目运算符

通过三目运算符实现简单的判断
语法:

**表达式1?表达式2:表达式3**

解释:
如果表达式1的值为真,执行表达式2,并返回表达式2的结果;
如果表达式1的值为假,执行表达式3,并返回表达式3的结果。在这里插入图片描述
注:在C++中三目运算符返回的是变量,可以继续赋值在这里插入图片描述

4.1.3 switch语句

执行多条件分支语句
语法:

switch(表达式)
{
   
	case 结果1:执行语句;breakcase 结果2:执行语句;break;
	···
	default:执行语句;break}

注:
1.switch判断的时候只能是整型或者字符型,不可一世一个区间
2.switch结构清晰,执行效率高
3.case如果没有break,程序会一直向下执行

4.2循环结构

作用:满足循环条件,执行循环结构

4.2.1 while循环语句

语法:

while(循环条件){
   循环语句}

解释:只要循环条件的结果为真,就执行循环语句在这里插入图片描述
注:写循环时要避免死循环的出现

案例-猜数字
#include<iostream>
using namespace std;
#include<ctime>	//time系统时间头文件包含


int main()
{
   
	//添加随机数种子,利用当前系统时间生成随机数,防止每次随机数都一样
	srand((unsigned int)time(NULL));

	//1.系统生成随机数
	int num = rand() % 100 + 1;	//rand()%100+1 生成 0~99+1个随机数

	//2.玩家进行猜测
	int val = 0;
	while (1)	//设置成死循环,保证重复输入
	{
   
		cin >> val;

	//3.判断玩家猜测
	//猜对	退出游戏
	//猜错	提示结果	返回第2步
		if (val > num)
		{
   
			cout << "猜测过大" << endl;
		}
		else if (val < num)
		{
   
			cout << "猜测过小" << endl;
		}
		else
		{
   
			cout << "猜对了" << endl;
			break;	//退出当前死循环
		}
	}

		system("pause");

		return 0;
}
4.2.2 do…while循环结构

语法:

do{
   循环语句} while(循环条件);

注意:与while的区别在于do…while会先执行一次循环语句,再判断循环条件在这里插入图片描述

案例-水仙花数
/*	案例练习:水仙花数
	案例描述:水仙花数是指一个3位数,它的每个位上的数字的3次幂之和等于它本身
	eg:1^3+5^3+3^3=153
	请利用do...while语句,求出所有3位数中的水仙花数
*/
/*	分析:
	1.将所有的三位数进行输出(100~999)
	2.找水仙花数
		153
		获取个位	153%10=3				对数字取模于10 可以获取到个位
		获取十位	153/10=15	15%10=5		先整除于10,得到两位数,再取模于10,得到十位
		获取百位	153/100=1				直接除于100,获取百位

		判断	个位^3+十位^3+百位^3=本身
*/



#include<iostream>
using namespace std;

int main()
{
   
	int num = 100;

	do
	{
   
		int a = 0;
		int b = 0;
		int c = 0;

		a = num % 10;
		b = num / 10 % 10;
		c = num / 100;

		if (a*a*a+b*b*b+c*c*c==num)
		{
   
			cout << num << endl;
		}
		
		num++;
	} while (num<1000);

	system("pause");

	return 0;
}
4.2.3 for循环语句

语法:

for(起始表达式;条件表达式;末尾循环体)
{
   循环语句;}

注:
1.for循环中的表达式,需要用分号进行分割
2.for循环结构比较清晰,比较常用

案例-敲桌子
#include<iostream>
using namespace std;

int main()
{
   
	for (int i = 0; i <=100; i++)
	{
   
		if (i%7==0||i%10==7||i/10==7)
		{
   
			cout << "敲桌子" << endl;
		}
		else
			cout << i << endl;
	}

	system("pause");

	return 0;
}
4.2.4 嵌套循环

在这里插入图片描述

//外层执行1次,内层执行1周
//外层循环
for(int i = 0; i < 10; i++)
{
   
	//内层循环
	for(int j = 0;j < 10;j++)
	{
   
		cout << "* ";
	}
	cout << endl;
}	
案例-乘法口诀表
#include<iostream>
using namespace std;

int main()
{
   
	//乘法口诀表
	for (int i = 1; i <= 9; i++)
	{
   
		//cout << i << endl;
		for (int j = 1; j <= i; j++)
		{
   
			cout << j << "*" << i << "=" << j * i<<"  ";		//endl是换行
		}
		cout << endl;
	}

	system("pause");

	return 0;
}

4.3跳转语句

4.3.1 break语句

用于跳出选择结构或者循环结构

使用时机:
1.出现在switch条件语句中,终止case并跳出switch
2.出现在循环语句中,跳出当前的循环语句
3.出现在嵌套循环中,跳出最近的内层循环语句

4.3.2 continue语句

循环语句中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环

4.3.3 goto语句

可以无条件跳转语句
语法:

goto 标记;

标记一般用**大写字母:**表示
解释:如果标记的名称存在,执行goto语句时,会跳转到标记的位置

注:在程序中不建议使用goto语句,以免造成程序流程混乱

5.数组

5.1概述

所谓数组,就是一个集合,里面存放了相同类型的数据元素

特点:
1.数组中的每个数据元素都是相同的数据类型
2.数组是由连续的内存位置组成的

5.2一维数组

5.2.1一维数组定义方式

三种方式:
1.数据类型 数组名 [ 数组长度 ];
2.数据类型 数组名 [ 数组长度 ] = { 值1,值2...};
3.数据类型 数组名 [ ] = {值1,值2...};

注:如果在初始化数据时没有填充完,会用0来填补剩余数据

总结:
1.数组名的命名规则与变量名规范一致,不要和变量名重名
2.数组中下标是从0开始索引

5.2.2一维数组数组名

一维数组名称的用法:
1.可以统计整个数组在内存中的长度
(用sizeof(arr))
2.可以获取数组在内存中的首地址
(用cout<<arr<<endl;)

cout<<(int)&arr[0]<<endl;
//(int)表示将16进制转成10进制形式输出
//&表示输出地址,而不是元素

注:
数组名是常量,不可以进行赋值操作

案例-元素逆置
#include<iostream>
usi
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Accelerated C++源代码 本书全面介绍了C++语言。作为一本入门书(Primer),它以教程的形式对C++语言进行清晰的讲解,并辅以丰富的示例和各种学习辅助手段。与大多数入门教程不同,本书对C++语言本身进行了详尽的描述,并特别着重介绍了目前通行的、行之有效的程序设计技巧。   无数程序员曾使用本书的前几个版本学习C++,在此期间C++也逐渐发展成熟。这些年来,C++语言的发展方向以及C++程序员的关注点,已经从以往注重运行时的效率,转到千方百计地提高程序员的编程效率上。随着标准库的广泛可用,我们现在能够比以往任何时候更高效地学习和使用C++。本书这一版本充分体现了这一点。第4版的改动为了体现现代C++编程风格,我们重新组织并重写了本书。书中不再强调低层编程技术,而把中心转向标准库的使用。书中很早就开始介绍标准库,示例也已经重新改写,充分利用了标准库设施。我们也对语言主题叙述的先后次序进行了重新编排,使讲解更加流畅。除重新组织内容外,为了便于读者理解,我们还增加了几个新的环节。每一章都新增了“小结”和“术语”,概括本章要点。读者可以利用这些部分进行自我检查;如果发现还有不理解的概念,可以重新学习该章中的相关部分。书中还加入了下述几种学习辅助手段:重要术语用黑体表示,我们认为读者已经熟悉的重要术语则用楷体表示。这些术语都会出现在章后的“术语”部分。书中用特殊版式突出标注的文字,是为了向读者提醒语言的重要特征,警示常见的错误,标明良好的编程实践,列出通用的使用技巧。希望这些标注可以帮助读者更快地消化重要概念,避免犯常见错误。为了更易于理解各种特征或概念间的关系,书中大量使用了前后交叉引用。.. 对于某些重要概念和C++新手最头疼的问题,我们进行了额外的讨论和解释。这部分也以特殊版式标出。学习任何程序设计语言都需要编写程序。因此,本书提供了大量的示例。所有示例的源代码可从下列网址获得: http://www.awprofessional.com/cpp_primer 万变不离其宗,本书保持了前几版的特色,仍然是一部全面介绍C++的教程。我们的目标是提供一本清晰、全面、准确的指南性读物。我们通过讲解一系列示例来教授C++语言,示例除了解释语言特征外,还展示了如何善用这门语言。虽然读者不需要事先学过C语言(C++最初的基础)的知识,但我们假定读者已经掌握了一种现代结构化语言。本书结构本书介绍了C++国际标准,既涵盖语言的特征,又讲述了也是标准组成部分的丰富标准库。C++的强大很大程度上来自它支持抽象程序设计。要学会用C++高效地编程,只是掌握句法和语义是远远不够的。我们的重点,在于教会读者怎样利用C++的特性,快速地写出安全的而且性能可与C语言低层程序相媲美的程序C++是一种大型的编程语言,这可能会吓倒一些新手。现代C++可以看成由以下三部分组成: l 低级语言,多半继承自C。 l 更高级的语言特征,用户可以借此定义自己的数据类型,组织大规模的程序和系统。 l 标准库,使用上述高级特征提供一整套有用的数据结构和算法。多数C++教材按照下面的顺序展开:先讲低级细节,再介绍更高级的语言特征;在讲完整个语言后才开始解释标准库。结果往往使读者纠缠于低级的程序设计问题和复杂类型定义的编写等细节,而不能真正领会抽象编程的力量。就更不用说学到足够的知识去创建自己的抽象了。本版中我们独辟蹊径。一开始就讲述语言的基础知识和标准库,这样读者就可以写出比较大的有实际意义的程序来。透彻阐释了使用标准库(并且用标准库编写了各种抽象程序)的基础知识之后,我们才进入下一步,学习用C++的其他高级特征,来编写自己的抽象。第一和第二部分讨论语言的基础知识和标准库设施。其重点在于学会如何编写C++程序,如何使用标准库提供的抽象设施。大部分C++程序员需要了解本书这两部分的内容。除了讲解基础知识以外,这两部分还有另外一个重要的意图。标准库设施本身是用C++编写的抽象数据类型,定义标准库所使用的是任何C++程序员都能使用的构造类的语言特征。我们教授C++的经验说明,一开始就使用设计良好的抽象类型,读者会更容易理解如何建立自己的类型。第三到第五部分着重讨论如何编写自己的类型。第三部分介绍C++的核心,即对类的支持。类机制提供了编写自定义抽象的基础。类也是第四部分中所讨论的面向对象编程和泛型编程的基础。全书正文的最后是第五部分,我们在这一部分讨论了一些高级特征,它们在构建大型复杂系统时最为常用。致谢与前几版一样,我们要感谢Bjarne Stroustrup,他不知疲倦地从事着C++方面的工作,他与我们的深厚友情由来已久。我们还要感谢Alex Stepanov,正是他最初凭借敏锐的洞察力创造了容器和算法的概念,这些概念最终形成了标准库的核心。此外,我们要感谢C++
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值