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中,在其他字符串字面量中只需要简单使用%就好了。