Prev: None
Next: C++Ⅱ:条件与循环
1 什么是C++
1.1 欢迎来到C++
C++是一种多用途的编程语言。 C++用于创建电脑程序。像任何艺术软件,音乐播放器甚至是视频游戏! C++由C衍生而来,且广泛基于C。 Part题: C++是一个: A. 电影制作程序 B. 多用途编程语言 C. 客户端脚本语言 |
2 Hello World!
2.1 你的第一个C++程序(一)
一个C++程序是由一套命令或语句集合而成。 下面的例子输出"Hello world!"。
让我们一节一节看。
C++提供了大量的[ruby=headers]文件头[/ruby],每个都包含了程序需要的信息。这个单独的程序需要文件头<iostream>. 在一行中最开始的井号 (#)是编译器最先运行的语句。在这个例子中,#include告诉预处理器包含<iostream>头文件。 <iostream>定义了标准流对象,用于输入与输出数据。 Part题: 补全空格以包含<iostream>。
|
2.2 你的第一个C++程序(二)
C++编译器忽略空白行。 通常的,空行用于增强代码的可读性与改进结构。 空的地方,例如一些空格、制表符和一些空行,同样会被忽略。尽管它是用于增强程序的可读性。
在这里,using namespace std;这一行告诉编译器使用std([ruby=standard]标准[/ruby])命名空间。 std命名空间包含了C++标准资源的特性。 Part题: 补全下面代码以使用std命名空间。
|
2.3 主函数
程序的执行从主函数开始,int main()。
花括号 { } 表明了函数的首尾,也可以称作函数的主体。在括号内的语句定义了函数的行为。 main()是每个C++程序的入口,与程序产生的效果无关。 Part题: 一个C++程序的起点是? A. 第一行 B. <iostream> C. main函数 |
2.4 你的第一个C++程序(三)
下一行,cout << "Hello world!"; 将"Hello world!"显示在屏幕上。
在C++中,[ruby=streams]流[/ruby]用于输入输出操作。 在大多数程序环境中,默认的标准输出目标是屏幕。在C++中,cout是一个用来访问它的流对象。 cout和插入运算符一起应用。插入运算符"<<"会将它后面的数据插入到它前面的流的末尾。 在C++中,分号标志着一条语句的结束。每条语句都必须以分号结尾。这表示一条逻辑表达式的结束。 Ps. 这里的分号必须是半角字符,不能是全角字符(汉字字符)。 Part题: 每条语句都必须结尾于: A. 点( . ) B. 分号( ; ) C. 冒号( : ) D. 逗号( , ) |
2.5 语句
一个[ruby=block]代码块[/ruby]是由一套语句结合起来的,以左右花括号为界限。 举个例子:
你可以在一行内放置多个语句,只要你记得每个语句都以分号结尾。不这样做会导致错误。 Part题: 填空以将"Hello, world!"输出在屏幕上:
|
2.6 返回
程序的最后一节是return返回语句。return 0;这一行结束了main()函数而且将0返回给调用者。一个非0的数(通常是1)意味着非正常的结束。
如果程序中没有return语句,C++编译器会在main()函数的最后隐式插入"return 0;"。 Part题: 重新排列下面的代码以组建一个C++程序。
|
3 工具
3.1 获取工具(一)
你需要下面两个组件来编写C++程序。 1. [ruby=Integrated Development Environment]集成开发环境[/ruby] (IDE):提供了写代码的工具。任何文本编辑器都可以成为一个IDE。 2. [ruby=Compiler]编译器[/ruby]:将代码编译为最终的可执行文件。 有大量的编译器可供使用。最多使用且免费的编译器是GNU C/C++编译器。 有大量C++的IDE和编译器可供使用。我们将使用一款免费的工具:Code::Blocks,它包含了一个IDE和一个编译器,而且适用于Windows,Linux和MacOS。 你需要到http://www.codeblocks.org/下载Code::Blocks,点击Downloads链接,然后选择"Download the binary release"。 选择你的操作系统并下载安装程序,它包含了C++编译器(在Windows下,它的名字里有mingw。) 确保你下载了包含编译器的版本。 Part题: 你需要下面哪两个工具来编写和编译C++程序? A. 网页浏览器 B. IDE C. 编译器 D. Excel |
3.2 获取工具(二)
为了创建一个项目,打开Code::Blocks并点击"Create a new project"(或者File->New->Project)。 会出现一个窗口让你选择模版,在这里我们选Console application,之后点击Go。 跟着指引,确认你选择的编程语言是C++。 为你的项目命名并且选择一个文件夹来保存。 确认你勾选了Compiler,然后点Finish。 GNU GCC是支持Code::Blocks的众多编译器中常用的一个。 在左侧的侧边栏里,展开Sources。你会看见你的项目和源文件。Code::Blocks会自动创建main.cpp文件,是一个基本的Hello World程序(C++中源代码的后缀名是.cpp)。 (Ps. 原文中写的是.cpp .cp .c 但.cp没见过 .c是C语言的源文件来着= = 在这里只写.cpp吧,感谢#17指正) 点击工具栏中的"Build and Run"图标来编译和运行程序。 命令行窗口会出现并显示程序的输出。 恭喜!你刚刚编译并运行了你的第一个C++程序! Part题: 哪个是C++的编译器? A. CodeBlocks B. GNU GCC C. 命令行 D. GAC |
4 输出
4.1 你的第一个C++程序(四)
你可以在cout后面跟上多段文字。
输出: Part题: 补全空格来输出"我爱C++":
|
4.2 新的一行
cout运算不会输出文字的后面自动换行。 要使cout输出两行的一种方法是使用endl关键词,于是你可以换行。
endl将光标移到下一行来输出第二行文字。 Part题: 哪个关键词能够输出另一行文字? A. #include B. startl C. return D. endl |
4.3 新的几行(一)
换行符\n可以视作endl的另一种形式。 反斜杠(\)被称作[ruby=escape character]转义符[/ruby],表明一个"特殊"的符号。 举个例子:
输出: Part题: 下面哪个符号表示换行(endl的另一种形式)? A. \s B. \n C. \r |
4.4 新的几行(二)
两个换行符放在一起表明两次换行,也就会产生一个空行。
结果: Part题: 填空以输出"你好"和"世界",中间以空行隔开。
|
4.5 更多的新行
你可以使用一个单独的cout语句输出你的程序需要的任意数量的空行。
输出: Part题: 填空以输出"I love C++",每个单词占据一行。
|
5 注释
5.1 单行注释
[ruby=Comments]注释[/ruby]是你可以写进C++代码中的解释性的句子,用来解释这些代码是做什么的。 编译器会忽略注释中出现的任何东西,所以在结果中不会出现关于注释的任何东西。 开始于双斜杠(//)的注释称作单行注释。这两个斜杠告诉编译器去忽略它们之后跟的任何东西,直到这一行结束。 举个例子:
当上面的代码被编译时编译器会忽略// 输出 "Hello world"这句。结果看起来应该是这样的: Part题: 下面哪个表示单行注释? A. //单行注释 B. ##单行注释 C. **单行注释 |
5.2 多行注释
需要占据多行的注释以/*开始,以*/结束。 你可以将它们放在一行,或者在它们之间插入一行或几行。
如果你写错了一段代码,不要急着删掉。将它放进多行注释中,等你找到正确写法后再删掉。 Part题: 在C++中创建一块注释(多行注释):
|
5.3 应用注释
你可以在任何地方创建一条注释,而且可以在代码中创建任意数量的注释。 在以/*和*/标记的注释中,//没有特殊含义,反之亦然。这允许你在注释里"嵌套"注释。
在你的程序中添加注释是个好习惯。它能够让你和其他阅读代码的人对代码有更清楚的了解。 Part题: 下面哪个句子是正确的? A. 单行注释以*(星号)开始 B. 注释被编译器忽略 C. 注释也用来迷惑程序员 |
6 变量
6.1 变量(一)
创建一个[ruby=variable]变量[/ruby]使用内存空间,或是说内存中储存值的空间。编译器需要你表明每个你声明的变量的类型。 C++内部提供一些可以供用户使用的[ruby=data type]数据类型[/ruby]。 [ruby=Integer]整型[/ruby],一种数据类型,可以储存大量的值。要声明一个整型值,使用关键词int。 C++要求你规定每个你声明的变量的[ruby=type]类型[/ruby]和[ruby=identifier]标识符[/ruby]。 标识符是一个变量、函数、类、模块,或是其他任何用户定义的东西。一个标识符以字母(A-Z或a-z)或下划线(_)开头,后面可以跟额外的字母、下划线和数字(0-9)。 举个例子,下面声明一个叫做myVariable的整型变量:
不同的操作系统可以为同一数据类型保留不同大小的内存。 Part题: 表示整型的关键词是?
|
6.2 变量(二)
现在让我们给一个变量赋值并输出它。
C++是[ruby=case-sensitive]大小写敏感[/ruby]的,所以myVariable和myvariable是两个不同的标识符。 Part题: 假设你有一个变量叫var。补全代码以输出它的值。
|
6.3 变量(三)
变量必须在使用之前就被声明。如果你需要多个同一类型的变量,你可以在一条语句内创建它们,用逗号隔开。
变量可以被赋值,也可以被用于运算。 举个例子,我们创建另一个叫sum的变量,将前面的两个变量加在一起。
用"+"运算符将两个数字相加。 Part题: 填空以声明变量var等于a+b:
|
6.4 变量(四)
让我们来写一个可以计算和输出两个变量的程序。
始终记住,变量在使用之前必须规定名称和数据类型。 Part题: 下面哪两个关于C++中变量的句子是正确的? A. 变量必须在使用之前就被声明 B. 变量是预处理指令 C. 变量没有名字 D. 变量必须规定数据类型 |
7 运用变量
7.1 声明变量
你可以选择在声明变量的时候就给它赋值,或者你也可以选择先声明变量,以后再给它赋值。 你也可以改变一个变量的值。 几个例子:
你只能给一个规定了数据类型的变量赋值。 Part题: 填空来声明一个整型变量,并给它赋值7:
|
7.2 用户输入
用cin与提取运算符(>>)组合,可以让用户输入一个值。提取运算符后面跟的变量会包含提取的数据。 下面这个例子展示了如何接受用户输入,并存在变量num中:
就像cout,cin也可以连接多个提取运算符,所以在一个语句中可以接受多个输入:cin >> a >> b; Part题: cin的用途是什么? A. 从用户取得信息(数据) B. 输出变量的值 C. 包含头文件 |
7.3 接受用户输入(一)
下面的程序提示用户输入一个数字,并存储在变量a中:
程序运行时,会显示消息"请输入一个数",然后等着用户输入一个数且按下回车,或换行。 输入的数存在变量a中。 当用户需要输入数时,程序会一直等着用户输入数。 Part题: 补全代码,使它接受一个数字并存在变量a中:
|
7.4 接受用户输入(二)
你可以在程序中的多处接受用户输入:
Part题: 填空以声明一个整型变量var,输入一个值,并存储在变量var中。
|
7.5 接受用户输入(三)
让我们创建一个接受两个数的程序,并输出它们的和。
Part题: 补全代码以声明一个名为sum的变量,给它赋值21 + 7,然后输出它的值。
|
8 更多关于变量的东西
8.1 变量(五)
指定数据类型只需要一次,在变量被声明之时。 在那之后,不用指定数据类型就可以使用变量。
指定一个变量的数据类型不止一次会导致产生语法错误。 Part题: 一个变量的数据类型应该被提及几次? A. 当输出变量的值时 B. 只一次:当声明变量时 C. 每个变量被用到的地方 D. 当用cin输入变量的值时 |
8.2 变量(六)
只要你需要,一个变量的值在程序中可以被改变很多次。 举个例子:
Part题: 补全代码以声明变量b,并把a的值赋给b,然后向屏幕输出它们的和。
|
9 基础算数
9.1 算术运算符
C++支持这些算术运算符。
加法运算符将它的运算数加起来。
Part题: 填空,声明一个变量x,给它赋值4 + 6,然后将它输出到屏幕。
|
9.2 减法
减法运算符从第一个运算数中减去另一个运算数。
Part题: 补全代码,使其输出12。
|
9.3 乘法
乘法运算符将它的运算数相乘。
Part题: C++中哪个符号用来将变量相乘? A. + B. * C. % D. x |
9.4 除法
除法运算符用第一个运算数除以第二个运算。为了返回一个整型值,余数会被舍弃。 例子:
如果一个或两个运算数都是浮点值,除法操作符会执行浮点除法。 除以0会导致你的程序崩溃。 Part题: 填空以声明一个变量x,并给它赋值81除以3。
|
9.5 取模
取模运算符 (%) 也就是我们所知的取余运算符,因为它会返回整型除法的余数。 举个例子:
Part题: 哪个运算符用来确定余数? A. * B. + C. % |
9.6 运算优先级(一)
运算优先级确定在一个表达式中的运算分为几部分,那会影响一个表达式是如何计算的。某些运算符比其他运算符优先级更高;举个例子,乘法运算符比加法运算符有更高的优先级。 举例:
上面的程序先计算2*2,然后将结果加上5。 和在数学中一样,用圆括号改变运算优先级。
Part题: 填上括号使x的值为14。
|
9.7 运算优先级(二)
圆括号强制运算有更高的优先级。如果括号里还有括号,最内括号中的表达式会先被计算。如果括号内没有表达式,乘法类(乘法,除法,取模)运算符会优先于加法类(加法,减法)运算符。 Part题: 下面哪两个关于算术运算符的语句是正确的? A. 加法在乘法之前完成 B. 括号第一,然后是乘除法 C. 减法最先完成 D. 乘法在加法之前完成 |
10 赋值与自增运算符
10.1 赋值运算符(一)
简单的[ruby=assignment]赋值[/ruby]运算符 (=) 将右边的值赋给左边。 C++提供了速记运算符,让你可以同时运算和赋值。 举个例子:
Part题: x = x + 10的另一种形式是? A. x -= 9; B. x = y +10; C. x += 10; |
10.2 赋值运算符(二)
一样的速记格式对乘法、除法和取模运算都适用。
Part题: 补全代码,用 /= 运算符把x除以5。
|
10.3 自增运算符(一)
[ruby=increment]自增[/ruby]运算符用来将一个整型值加1,而且是一个常用的C++运算符。
Part题: 和x++有相同意思的是: A. x = x - 4; B. x = x + 1; C. x /= 17; |
10.4 自增运算符(二)
举个例子:
填空以用 ++ 运算符将x的值增加并输出其值到屏幕。
|
10.5 自增运算符(三)
自增运算符有两种形式,前缀和后缀。
前缀先增加数值,然后做表达式。 后缀先做表达式,然后增加数值。 前缀的例子:
后缀的例子:
前缀的例子先将x自增,再将它赋给y。 Part题: ++x 和 x++ 的区别在哪?(多选) A. x++先使用x的值,再将它自增 B. ++x先使用x的值,再将它自增 C. x++先将x自增,再使用它的值 D. ++x先将x自增,再使用它的值 |
10.6 自减运算符
[ruby=decrement]自减[/ruby]运算符 (--) 和自增运算符原理一样,但它将值减1,而不是加1。
自减运算符 (--) 与自增运算符用法相同。 Part题: 请在代码中用 -- 运算符将x的值自减。
|
章末检测
1. 请补全代码以在屏幕上输出"我爱C++"。
2. 请补全代码使其声明两个int类型的变量,并将它们的和输出到屏幕。
3. 在每个C++程序中:(多选) A. 每个变量都必须有它的数据类型 B. 必须至少有两个已声明的变量 C. 必须有一个叫做main的函数 D. 变量的名字不是x就是y 4. 请补全代码使其输出x除以y的值。
5. 下面代码的输出是什么?
|