C++语法基础
代码框架
如果不想深究背后原理,可以将如下代码框架背下来:
通俗解释
下面会用比较简单的方式,给刚接触编程的同学解释以上代码的含义和作用。
整体作用
这段代码是一个C++程序的基本框架,就像盖房子先搭好一个架子一样,之后我们可以在这个框架里添加具体的代码,让程序实现我们想要的功能。
代码逐行解释
#include <bits/stdc++.h>
- 想象编程就像搭积木,每一块积木都有特定的功能。
#include
就像是告诉我们要从一个大仓库里拿出一些积木来用。bits/stdc++.h
是一个特殊的仓库,里面装了很多常用的积木(也就是功能代码),有了它,我们后面就可以方便地使用这些功能了。
- 想象编程就像搭积木,每一块积木都有特定的功能。
using namespace std;
- 在编程里,不同的人可能会用相同的名字给不同的东西命名,这样就容易混乱。
std
就像是一个大盒子,把很多常用的东西都放在里面。using namespace std;
这句话的意思就是说,我们直接从这个大盒子里拿东西,不用每次都写这个盒子的名字。
- 在编程里,不同的人可能会用相同的名字给不同的东西命名,这样就容易混乱。
int main()
- 这就像是一个指挥中心,程序开始运行的时候,就会先来到这里。
int
表示这个指挥中心最后会返回一个整数,就好像是完成任务后给一个信号。main
是这个指挥中心的名字,所有的程序都必须有一个叫main
的指挥中心。
- 这就像是一个指挥中心,程序开始运行的时候,就会先来到这里。
{
和}
- 这两个大括号就像是一个房间,我们要写的具体代码都要放在这个房间里。
{
是打开房间的门,}
是关上房间的门。
- 这两个大括号就像是一个房间,我们要写的具体代码都要放在这个房间里。
// 这里面开始写代码
- 这是一个注释,就像是给我们自己或者其他看代码的人留的小纸条,告诉我们可以在这个地方开始写具体的代码,让程序做我们想做的事情。计算机在运行程序的时候会直接忽略这行注释。
return 0;
- 这就像是指挥中心完成任务后发出的信号。
return
就是返回的意思,0
表示一切都正常完成了。
- 这就像是指挥中心完成任务后发出的信号。
变量的概念
在编程的世界里,我们经常需要保存一些数据,就像我们用盒子来装东西一样。变量就像是一个个盒子,每个盒子都有自己的名字,我们可以往里面放不同类型的数据。不同的变量就像不同大小、不同用途的盒子,能装的东西也不一样。
int 类型
定义
int
类型的变量就像是一个能装整数的盒子。整数就是像 1、2、3、 -1、 -2 这样没有小数部分的数。
定义和使用示例
在这个例子中,我们先定义了 age
变量,然后给它赋值,之后把它的值输出。又定义了 score
变量,并且在定义的时候就给它赋了值,最后也把它的值输出。
char 类型
定义
char
类型的变量就像是一个只能装一个字符的小盒子。字符可以是字母(a、b、c 等)、数字字符(0、1、2 等)或者一些符号(!、@、# 等)。
定义和使用示例
这里我们定义了 grade
和 initial
两个 char
类型的变量,给它们赋值后输出里面装的字符。要注意字符要用单引号括起来。
float 类型
定义
float
类型的变量就像是一个能装小数的盒子。小数就是像 3.14、0.5、 -2.7 这样有小数部分的数。
定义和使用示例
在这个程序里,我们定义了 height
和 price
两个 float
类型的变量,给它们赋值后输出里面装的小数。
例题
例题 1:计算两个整数的和
这个例题中,我们定义了两个 int
类型的变量 num1
和 num2
,把它们相加的结果存到 sum
变量里,最后输出 sum
的值。
例题 2:显示字符和对应的 ASCII 码
在这个例题里,我们定义了一个 char
类型的变量 ch
,输出它的值,然后把它当作整数输出,这样就能看到它对应的 ASCII 码。
例题 3:计算物品总价
此例题中,我们定义了 unitPrice
这个 float
类型变量装单价,quantity
这个 int
类型变量装数量,把它们相乘的结果存到 totalPrice
这个 float
类型变量里,最后输出 totalPrice
的值。
通过这些内容和例题,大家应该对 int
、char
、float
类型变量的定义和使用有了一定的了解。在编程中,要根据需要存储的数据类型来选择合适的变量类型。
输入与输出
cin
与 cout
-
"什么是变量?" 可以参考"变量"页面。
-
" 什么是
std
?" std 是 C++ 标准库所使用的 命名空间。使用命名空间是为了避免重名。关于命名空间的详细知识,可以参考 "命名空间"页面。
scanf 与 printf
scanf
与 printf
其实是 C 语言提供的函数。大多数情况下,它们的速度比 cin
和 cout
更快,并且能够方便地控制输入输出格式。
其中,%d
表示读入/输出的变量是一个有符号整型(int
型)的变量。
类似地:
%s
表示字符串。%c
表示字符。%lf
表示双精度浮点数 (double
)。%lld
表示长整型 (long long
)。根据系统不同,也可能是%I64d
。%u
表示无符号整型 (unsigned int
)。%llu
表示无符号长整型 (unsigned long long
),也可能是%I64u
。
除了类型标识符以外,还有一些控制格式的方式。许多都不常用,选取两个常用的列举如下:
%1d
表示长度为 1 的整型。在读入时,即使没有空格也可以逐位读入数字。在输出时,若指定的长度大于数字的位数,就会在数字前用空格填充。若指定的长度小于数字的位数,就没有效果。%.6lf
,用于输出,保留六位小数。
这两种运算符的相应地方都可以填入其他数字,例如 %.3lf
表示保留三位小数。
"「双精度浮点数」,「长整型」是什么" 这些表示变量的类型。和上面一样,会留到 变量 中统一讲解。
" 为什么 scanf
中有 &
运算符?"
在这里,&
实际上是取址运算符,返回的是变量在内存中的地址。而 scanf 接收的参数就是变量的地址。具体可能要在 指针 才能完全清楚地说明,现在只需要记下来就好了。
" 什么是 \n
?"
\n
是一种 转义字符,表示换行。
转义字符用来表示一些无法直接输入的字符,如由于字符串字面量中无法换行而无法直接输入的换行符,由于有特殊含义而无法输入的引号,由于表示转义字符而无法输入的反斜杠。
常用的转义字符有:
\t
表示制表符。\\
表示\
。\"
表示"
。\0
表示空字符,用来表示 C 风格字符串的结尾。\r
表示回车。Linux 中换行符为\n
,Windows 中换行符为\r\n
。在 OI 中,如果输出需要换行,使用\n
即可。但读入时,如果使用逐字符读入,可能会由于换行符造成一些问题,需要注意。例如,gets
将\n
作为字符串结尾,这时候如果换行符是\r\n
,\r
就会留在字符串结尾。- 特殊地,
%%
表示%
,只能用在printf
或scanf
中,在其他字符串字面量中只需要简单使用%
就好了。