45gfg9
本帖最后由 45gfg9 于 2020-3-16 15:15 编辑

索引贴
答案帖


Prev: None
Next: C++Ⅱ:条件与循环



2021.12 数据,可能有更多内容
索引贴
答案帖

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!"。


```cpp
#include <iostream>
using namespace std;


int main()
{
cout << "Hello world!";
return 0;
}
```


让我们一节一节看。


```cpp
#include <iostream>
```


C++提供了大量的文件头headers,每个都包含了程序需要的信息。这个单独的程序需要文件头<iostream>.
在一行中最开始的井号 (#)是编译器最先运行的语句。在这个例子中,#include告诉预处理器包含<iostream>头文件。
<iostream>定义了标准流对象,用于输入与输出数据。

Part题:
补全空格以包含<iostream>。


```cpp
#include <________>
```


2.2 你的第一个C++程序(二)
C++编译器忽略空白行。
通常的,空行用于增强代码的可读性与改进结构。
空的地方,例如一些空格、制表符和一些空行,同样会被忽略。尽管它是用于增强程序的可读性。



```cpp
using namespace std;
```


在这里,using namespace std;这一行告诉编译器使用std标准standard)命名空间。
std命名空间包含了C++标准资源的特性。

Part题:
补全下面代码以使用std命名空间。


```cpp
#include <iostream>
_____namespace___;
```


2.3 主函数
程序的执行从主函数开始,int main()


```cpp
int main()
{
cout << "Hello world!";
return 0;
}
```


花括号 { } 表明了函数的首尾,也可以称作函数的主体。在括号内的语句定义了函数的行为。
main()是每个C++程序的入口,与程序产生的效果无关。

Part题:
一个C++程序的起点是?
A. 第一行
B. <iostream>
C. main函数


2.4 你的第一个C++程序(三)
下一行,cout << "Hello world!"; 将"Hello world!"显示在屏幕上。


```cpp
cout << "Hello world!";
```


在C++中,streams用于输入输出操作。
在大多数程序环境中,默认的标准输出目标是屏幕。在C++中,cout是一个用来访问它的流对象。
cout和插入运算符一起应用。插入运算符"<<"会将它后面的数据插入到它前面的流的末尾。
在C++中,分号标志着一条语句的结束。每条语句都必须以分号结尾。这表示一条逻辑表达式的结束。

Ps. 这里的分号必须是半角字符,不能是全角字符(汉字字符)。


Part题:
每条语句都必须结尾于:
A. 点( . )
B. 分号( ; )
C. 冒号( : )
D. 逗号( , )


2.5 语句
一个代码块block是由一套语句结合起来的,以左右花括号为界限。
举个例子:


```cpp
{
cout << "Hello world!";
return 0;
}
```


你可以在一行内放置多个语句,只要你记得每个语句都以分号结尾。不这样做会导致错误。

Part题:
填空以将"Hello, world!"输出在屏幕上:


```cpp
____<< "Hello, world!";
```


2.6 返回
程序的最后一节是return返回语句。return 0;这一行结束了main()函数而且将0返回给调用者。一个非0的数(通常是1)意味着非正常的结束。


```cpp
return 0;
```


如果程序中没有return语句,C++编译器会在main()函数的最后隐式插入"return 0;"。

Part题:
重新排列下面的代码以组建一个C++程序。


```cpp
1. using namespace std;
2. #include <iostream>
3.   cout << "妙啊!"; return 0;
4. }
5. int main() {
```



3 工具


3.1 获取工具(一)
你需要下面两个组件来编写C++程序。
1. 集成开发环境Integrated Development Environment (IDE):提供了写代码的工具。任何文本编辑器都可以成为一个IDE。
2. 编译器Compiler:将代码编译为最终的可执行文件。
有大量的编译器可供使用。最多使用且免费的编译器是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后面跟上多段文字。


```cpp
cout << "This " << "is " << "awesome!";
```


输出:



Part题:
补全空格来输出"我爱C++":


```cpp
____ << "我爱C++"_
```


4.2 新的一行
cout运算不会输出文字的后面自动换行。
要使cout输出两行的一种方法是使用endl关键词,于是你可以换行。


```cpp
#include <iostream>
using namespace std;


int main()
{
cout << "Hello world!" << endl;
cout << "I love programming!";
return 0;
}
```


endl将光标移到下一行来输出第二行文字。



Part题:
哪个关键词能够输出另一行文字?
A. #include
B. startl
C. return
D. endl


4.3 新的几行(一)
换行符\n可以视作endl的另一种形式。
反斜杠(\)被称作转义符escape character,表明一个"特殊"的符号。


举个例子:


```cpp
#include <iostream>
using namespace std;


int main()
{
cout << "Hello world! \n";
cout << "I love programming!";
return 0;
}
```


输出:



Part题:
下面哪个符号表示换行(endl的另一种形式)?
A. \s
B. \n
C. \r


4.4 新的几行(二)
两个换行符放在一起表明两次换行,也就会产生一个空行。


```cpp
#include <iostream>
using namespace std;


int main()
{
cout << "Hello world! \n\n";
cout << "I love programming!";
return 0;
}
```


结果:



Part题:
填空以输出"你好"和"世界",中间以空行隔开。


```cpp
____ << "你好 __\n";
cout __ "世界";
```


4.5 更多的新行
你可以使用一个单独的cout语句输出你的程序需要的任意数量的空行。


```cpp
#include <iostream>
using namespace std;


int main()
{
cout << " Hello \n world! \n I \n love \n programming!";
return 0;
}
```


输出:



Part题:
填空以输出"I love C++",每个单词占据一行。


```cpp
cout << "I __ love __ C++";
```



5 注释


5.1 单行注释
注释Comments是你可以写进C++代码中的解释性的句子,用来解释这些代码是做什么的。
编译器会忽略注释中出现的任何东西,所以在结果中不会出现关于注释的任何东西。


开始于双斜杠(//)的注释称作单行注释。这两个斜杠告诉编译器去忽略它们之后跟的任何东西,直到这一行结束。


举个例子:


```cpp
#include <iostream>
using namespace std;


int main()
{
// 输出 "Hello world"
cout << "Hello world!";
return 0;
}
```


当上面的代码被编译时编译器会忽略// 输出 "Hello world"这句。结果看起来应该是这样的:



Part题:
下面哪个表示单行注释?
A. //单行注释
B. ##单行注释
C. **单行注释


5.2 多行注释
需要占据多行的注释以/*开始,以*/结束。
你可以将它们放在一行,或者在它们之间插入一行或几行。


```cpp
/* 这是一条注释 */


/* C++的注释
可以放在几行
*/
```


如果你写错了一段代码,不要急着删掉。将它放进多行注释中,等你找到正确写法后再删掉。

Part题:
在C++中创建一块注释(多行注释):


```cpp
__ 这是C++中的
多行注释 __
```


5.3 应用注释
你可以在任何地方创建一条注释,而且可以在代码中创建任意数量的注释。
在以/*和*/标记的注释中,//没有特殊含义,反之亦然。这允许你在注释里"嵌套"注释。


```cpp
/* 怎样输出Hello world!的注释


cout << "Hello world!"; // 输出Hello world!


*/
```


在你的程序中添加注释是个好习惯。它能够让你和其他阅读代码的人对代码有更清楚的了解。

Part题:
下面哪个句子是正确的?
A. 单行注释以*(星号)开始
B. 注释被编译器忽略
C. 注释也用来迷惑程序员



6 变量


6.1 变量(一)


创建一个变量variable使用内存空间,或是说内存中储存值的空间。编译器需要你表明每个你声明的变量的类型。
C++内部提供一些可以供用户使用的数据类型data type


整型Integer,一种数据类型,可以储存大量的值。要声明一个整型值,使用关键词int
C++要求你规定每个你声明的变量的类型type标识符identifier
标识符是一个变量、函数、类、模块,或是其他任何用户定义的东西。一个标识符以字母(A-Z或a-z)或下划线(_)开头,后面可以跟额外的字母、下划线和数字(0-9)。
举个例子,下面声明一个叫做myVariable整型变量:


```cpp
int myVariable = 10;
```


不同的操作系统可以为同一数据类型保留不同大小的内存。

Part题:
表示整型的关键词是?


```cpp
___
```


6.2 变量(二)


现在让我们给一个变量赋值并输出它。


```cpp
#include <iostream>
using namespace std;


int main()
{
int myVariable = 10;
cout << myVariable;
return 0;
}
//输出10
```


C++是大小写敏感case-sensitive的,所以myVariablemyvariable是两个不同的标识符。

Part题:
假设你有一个变量叫var。补全代码以输出它的值。


```cpp
____ << var;
```


6.3 变量(三)
变量必须在使用之前就被声明。如果你需要多个同一类型的变量,你可以在一条语句内创建它们,用逗号隔开。


```cpp
int a, b;
// 声明两个int变量
```


变量可以被赋值,也可以被用于运算。
举个例子,我们创建另一个叫sum的变量,将前面的两个变量加在一起。


```cpp
int a = 30;
int b = 15;
int sum = a + b;
// 现在sum的值为45
```


用"+"运算符将两个数字相加。

Part题:
填空以声明变量var等于a+b:


```cpp
int ___ = a _ b
```


6.4 变量(四)
让我们来写一个可以计算和输出两个变量的程序。


```cpp
#include <iostream>
using namespace std;


int main()
{
int a = 30;
int b = 12;
int sum = a + b;


cout << sum;


return 0;
}


//输出42
```


始终记住,变量在使用之前必须规定名称和数据类型。

Part题:
下面哪两个关于C++中变量的句子是正确的?
A. 变量必须在使用之前就被声明
B. 变量是预处理指令
C. 变量没有名字
D. 变量必须规定数据类型



7 运用变量


7.1 声明变量
你可以选择在声明变量的时候就给它赋值,或者你也可以选择先声明变量,以后再给它赋值。
你也可以改变一个变量的值。
几个例子:


```cpp
int a;
int b = 42;


a = 10;
b = 3;
```


你只能给一个规定了数据类型的变量赋值。

Part题:
填空来声明一个整型变量,并给它赋值7:


```cpp
___ a;
a _ 7;
```


7.2 用户输入
cin与提取运算符(>>)组合,可以让用户输入一个值。提取运算符后面跟的变量会包含提取的数据。
下面这个例子展示了如何接受用户输入,并存在变量num中:


```cpp
int num;
cin >> num;
```


就像coutcin也可以连接多个提取运算符,所以在一个语句中可以接受多个输入:cin >> a >> b;

Part题:
cin的用途是什么?
A. 从用户取得信息(数据)
B. 输出变量的值
C. 包含头文件


7.3 接受用户输入(一)
下面的程序提示用户输入一个数字,并存储在变量a中:


```cpp
#include <iostream>
using namespace std;


int main()
{
   int a;
   cout << "请输入一个数 \n";
   cin >> a;


   return 0;
}
```


程序运行时,会显示消息"请输入一个数",然后等着用户输入一个数且按下回车,或换行。
输入的数存在变量a中。
当用户需要输入数时,程序会一直等着用户输入数。

Part题:
补全代码,使它接受一个数字并存在变量a中:


```cpp
___ >> a;
```


7.4 接受用户输入(二)
你可以在程序中的多处接受用户输入:


```cpp
#include <iostream>
using namespace std;


int main()
{
    int a, b;
    cout << "输入一个数 \n";
    cin >> a;
    cout << "输入另一个数 \n";
    cin >> b;


    return 0;
}
```


Part题:
填空以声明一个整型变量var,输入一个值,并存储在变量var中。


```cpp
int var;
____ << "请输入一个值 \n";
___ >> var;
```


7.5 接受用户输入(三)
让我们创建一个接受两个数的程序,并输出它们的和。


```cpp
#include <iostream>
using namespace std;


int main()
{
int a, b;
int sum;
cout << "输入一个数 \n";
cin >> a;
cout << "输入另一个数 \n";
cin >> b;
sum = a + b;
cout << "和为:" << sum << endl;


return 0;
}
```


Part题:
补全代码以声明一个名为sum的变量,给它赋值21 + 7,然后输出它的值。


```cpp
int sum;
___ = 21 + 7;
____ << "sum等于"<< ___ << endl;
```



8 更多关于变量的东西


8.1 变量(五)
指定数据类型只需要一次,在变量被声明之时。
在那之后,不用指定数据类型就可以使用变量。


```cpp
int a;
a = 10;
```


指定一个变量的数据类型不止一次会导致产生语法错误。

Part题:
一个变量的数据类型应该被提及几次?
A. 当输出变量的值时
B. 只一次:当声明变量时
C. 每个变量被用到的地方
D. 当用cin输入变量的值时


8.2 变量(六)
只要你需要,一个变量的值在程序中可以被改变很多次。
举个例子:


```cpp
int a = 100;
a = 50;
cout << a;


// 输出50
```


Part题:
补全代码以声明变量b,并把a的值赋给b,然后向屏幕输出它们的和。


```cpp
int a = 15;
int b = _;
cout << a _ b << endl;
```



9 基础算数


9.1 算术运算符
C++支持这些算术运算符。



运算
符号
形式
加法
+
x + y
减法
-
x - y
乘法
*
x * y
除法
/
x / y
取模
%
x % y



加法运算符将它的运算数加起来。


```cpp
int x = 40 + 60;
cout << x;


// 输出100
```


Part题:
填空,声明一个变量x,给它赋值4 + 6,然后将它输出到屏幕。


```cpp
int _;
x = 4 + 6;
____ << x __ endl;
```


9.2 减法
减法运算符从第一个运算数中减去另一个运算数。


```cpp
int x = 100 - 60;
cout << x;


// 输出40
```


Part题:
补全代码,使其输出12。


```cpp
int x = 24;
int y;
y = _ - 12;
cout << _ << endl;
```


9.3 乘法
乘法运算符将它的运算数相乘。


```cpp
int x = 5 * 6;
cout << x;


// 输出30
```


Part题:
C++中哪个符号用来将变量相乘?
A. +
B. *
C. %
D. x


9.4 除法
除法运算符用第一个运算数除以第二个运算。为了返回一个整型值,余数会被舍弃。
例子:


```cpp
int x = 10 / 3;
cout << x;


// 输出3
```


如果一个或两个运算数都是浮点值,除法操作符会执行浮点除法。
除以0会导致你的程序崩溃。

Part题:
填空以声明一个变量x,并给它赋值81除以3。


```cpp
int _ = 81 _ 3;
cout << x;
```


9.5 取模
取模运算符 (%) 也就是我们所知的取余运算符,因为它会返回整型除法的余数。
举个例子:


```cpp
int x = 25 % 7;
cout << x;


// 输出4
```


Part题:
哪个运算符用来确定余数?
A. *
B. +
C. %


9.6 运算优先级(一)
运算优先级确定在一个表达式中的运算分为几部分,那会影响一个表达式是如何计算的。某些运算符比其他运算符优先级更高;举个例子,乘法运算符比加法运算符有更高的优先级。
举例:


```cpp
int x = 5+2*2;
cout << x;
// 输出9
```


上面的程序先计算2*2,然后将结果加上5。
和在数学中一样,用圆括号改变运算优先级。


```cpp
int x = (5 + 2) *2;
cout << x;


// 输出14
```


Part题:
填上括号使x的值为14。


```cpp
int x = _ 4 + 3 _ * 2;
cout << x;
```


9.7 运算优先级(二)
圆括号强制运算有更高的优先级。如果括号里还有括号,最内括号中的表达式会先被计算。
如果括号内没有表达式,乘法类(乘法,除法,取模)运算符会优先于加法类(加法,减法)运算符。

Part题:
下面哪两个关于算术运算符的语句是正确的?
A. 加法在乘法之前完成
B. 括号第一,然后是乘除法
C. 减法最先完成
D. 乘法在加法之前完成



10 赋值与自增运算符


10.1 赋值运算符(一)
简单的赋值assignment运算符 (=) 将右边的值赋给左边。


C++提供了速记运算符,让你可以同时运算和赋值。
举个例子:


```cpp
int x = 10;
x += 4; // 等同于 x = x + 4
x -= 5; // 等同于 x = x - 5
```


Part题:
x = x + 10的另一种形式是?
A. x -= 9;
B. x = y +10;
C. x += 10;


10.2 赋值运算符(二)
一样的速记格式对乘法、除法和取模运算都适用。


```cpp
x *= 3; // 等同于 x = x * 3
x /= 2; // 等同于 x = x / 2
x %= 4; // 等同于 x = x % 4
```


Part题:
补全代码,用 /= 运算符把x除以5。


```cpp
int x = 10;
x _= _;
```


10.3 自增运算符(一)
自增increment运算符用来将一个整型值加1,而且是一个常用的C++运算符。


```cpp
x++; // 等同于 x = x + 1
```


Part题:
和x++有相同意思的是:
A. x = x - 4;
B. x = x + 1;
C. x /= 17;


10.4 自增运算符(二)
举个例子:


```cpp
int x = 11;
x++;
cout << x;


// 输出12
```


填空以用 ++ 运算符将x的值增加并输出其值到屏幕。


```cpp
int x = 20;
x __;
cout << _ << endl;
```


10.5 自增运算符(三)
自增运算符有两种形式,前缀后缀


```cpp
++x; // 前缀
x++; // 后缀
```


前缀先增加数值,然后做表达式。
后缀先做表达式,然后增加数值。


前缀的例子:


```cpp
x = 5;
y = ++x;
// x为6,y为6
```


后缀的例子:


```cpp
x = 5;
y = x++;
// x为6,y为5
```


前缀的例子先将x自增,再将它赋给y。
后缀的例子先将x的值赋给y,再将x自增。

Part题:
++x 和 x++ 的区别在哪?(多选)
A. x++先使用x的值,再将它自增
B. ++x先使用x的值,再将它自增
C. x++先将x自增,再使用它的值
D. ++x先将x自增,再使用它的值


10.6 自减运算符
自减decrement运算符 (--) 和自增运算符原理一样,但它将值减1,而不是加1。


```cpp
--x; // 前缀
x--; // 后缀
```


自减运算符 (--) 与自增运算符用法相同。

Part题:
请在代码中用 -- 运算符将x的值自减。


```cpp
int x = 20;
x __;
```





章末检测
1. 请补全代码以在屏幕上输出"我爱C++"。


```cpp
#_______ <iostream>
_____ namespace std;
___ main()
{
cout << "我爱C++" <<endl;
______ 0;
}
```


2. 请补全代码使其声明两个int类型的变量,并将它们的和输出到屏幕。


```cpp
int x = 4;
___ y = 7;
int sum = x _ y;
cout<< "sum等于" << ___ << endl;
```


3. 在每个C++程序中:(多选)
A. 每个变量都必须有它的数据类型
B. 必须至少有两个已声明的变量
C. 必须有一个叫做main的函数
D. 变量的名字不是x就是y


4. 请补全代码使其输出x除以y的值。


```cpp
int x = 81;
int y = 3;
____ << x _ y << endl;
```


5. 下面代码的输出是什么?


```cpp
int a=3;
int b=2;
b=a++;
cout<<++b;
```



Yaossg
本帖最后由 姚氏帅哥 于 2017-6-17 21:15 编辑

3.1节Part题令我震惊
我就想问我不可以用文本文档写,用电脑来运行吗
就算必须用IDE写,编译器对应的也应该是“编译”好吗
这个c++希望楼主接下去,您是第三位mcbbs接c++坑的
而您的教程是我在mcbbs迄今看到最好的
我这边正在写c++模板的教程,不知道楼主感不感兴趣
at大佬@langyo_v3
(langyo你去通知一下之前那一位,叫他不想更就不更了蛤)

langyo_v3
姚氏帅哥 发表于 2017-6-17 18:37
3.1节Part题令我震惊
我就想问我不可以用文本文档写,用电脑来运行吗
就算必须用IDE写,编译器对应的也应该 ...

劳资看见你头像啦蛤蛤蛤蛤蛤蛤蛤蛤蛤

Yaossg
langyo_v3 发表于 2017-6-17 20:30
劳资看见你头像啦蛤蛤蛤蛤蛤蛤蛤蛤蛤

我还是看不见你的。。。你重新上传一遍呀
还有这是重点吗,你通知zide没有啊。。。

Yaossg
原来只是翻译搬运。。。
但是就像我说的那个地方不能这么翻译,希望修改
所以dalao你本人到底会不会呀,会的话多交流啊

PumpkinXD
vc++/g++路过

nextMC
Visual Studio这玩意能用吗?

45gfg9
nextMC 发表于 2017-6-24 09:02
Visual Studio这玩意能用吗?

可以...就是我不会用

子德
姚氏帅哥 发表于 2017-6-17 18:37
3.1节Part题令我震惊
我就想问我不可以用文本文档写,用电脑来运行吗
就算必须用IDE写,编译器对应的也应该 ...

今天看到这里。
实在是没太多精力更了,忙于开服hhh

顶个热水袋
姚氏帅哥 发表于 2017-6-17 18:37
3.1节Part题令我震惊
我就想问我不可以用文本文档写,用电脑来运行吗
就算必须用IDE写,编译器对应的也应该 ...

模板教程在哪

Yaossg

还没有完成,敬请期待

顶个热水袋
姚氏帅哥 发表于 2017-8-3 13:06
还没有完成,敬请期待

我去,才看见是6月份的回帖

45gfg9
万年老鸽终于把第一章更完了!!

隔壁老吕
可以再加一下printf输出以及gets,getline,scanf输入

45gfg9
隔壁老吕 发表于 2018-7-28 17:58
可以再加一下printf输出以及gets,getline,scanf输入

emmmm...因为这篇教程只是搬运汉化,原教程中只写了关于cout和cin的输入输出,对printf scanf这些完全没有提及...
(个人感觉,printf和scanf是在原版C语言中的输入输出操作...在C++中有了更新的cin和cout,也就用cin和cout执行输入输出了...只是个人思路,如有错误求纠正qwq)

第一页 上一页 下一页 最后一页