一、输出语句
知识点(1)
准备:在你的电脑上安装一个C++编译器(如DEV-C++等)。
输入或复制以下代码,输入时注意:程序里面所有的符号都是英文格式。
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World!" << endl;
return 0;
}
将文件保存,会发现文件格式为.cpp,这个格式就是C++文件的格式。
再点击编译器上方的“编译运行”。如果你输入正确的话,可以看到程序输出:Hello World!
。
把窗口关掉之后,打开文件保存目录,发现:新生成了一个和C++文件名称相同的.exe程序,之后每次运行这个C++程序,就只需要打开这个.exe就行。
那么这个程序是什么意思呢?
-
#include <iostream>
是头文件引入语句,可以引入外部库。举个例子,假如你在做饭,除了食材之外还需要煤气灶、锅和锅铲等等工具。这次使用的iostream头文件是一个可以用来输入输出的“工具”,将来会了解更多的头文件,甚至可以自己写头文件,就是自己制作“工具”。 -
using namespe std;
是命名空间声明语句。现在暂时不用理解它是怎么用的、干啥用的,但是现在使用到的C++的一些语句(例如cin、cout),则应加上这句话。注意,最后的分号不要遗漏。 -
int main()
是主函数。可以看到主函数后面有一对大括号{}
,将主函数中的语句括起来。运行程序的时候,会从主函数后面的大括号开始运行,依次执行大括号中的语句直到结束。还是“做饭”,“炒菜”这个动作就是主函数。炒菜还包含其他的步骤,例如“洗菜”、“切菜”、“翻炒”、“调味”、“装盘”等就是这个主函数里面的语句。 -
cout << "Hello World!" << endl;
是输出语句,该语句可以让计算机输出一句话。我们挨个来解释:-
cout
是输出语句的名称,它可以告诉计算机:接下来要输出了! -
<<
是输出流,后面跟上你要输出的内容,是两个英文的小于号,而不是中文的书名号; -
"Hello World!"
是一个字符串,字符串的内容是:Hello World!
,字符串外面用""
包裹; -
endl
表示换行,也可以替换成"\n"
或者'\n'
,它们都可以换行。
既然这一句话就可以达成目的,那为什么还要前前后后那么多“废话文学”呢?的确有的语言(例如Python)只用一句话就可以完成任务;但是对于C++来说,这是语言特性所造成的。在之后的学习过程中会理解C++拥有这种特性的原因。
-
-
return 0;
是返回语句,它的意思是主函数需要返回一个“0”,才能证明程序正常运行结束。在主程序中即使不写这一句话,编译器也会在编译时自动加上这句话,但是在将来的竞赛中,不写这句话或者 return 一个其他的非0值,这会造成系统认为这个程序异常退出,这会导致被认为是运行错误,也就是“Runtime Error”。
练一练(1)
你已经学会了最基本的C++代码框架和输出语句了,下面打开一个大名鼎鼎的网站——洛谷(https://www.luogu.com.cn/),这个网站是学习编程的人的必备网站之一,你会渐渐熟悉这个网站。
注册一个账号,点击左边栏的“题库”,再点击下方“超级玛丽游戏”,跳转到本题页面。
读完题目之后(除了广告),你知道如何写代码了吗?
对了!多次使用我们刚学到的C++输出语句来输出!只要每次都换行,就没有问题!
经过思考,你会发现:这个题目输出时非常繁琐,而且容易出错。但是在C++中,没有什么巧办法可以快速解决这个题目。建议直接复制题目描述中的字符,粘贴到你的语句中。
先在你的编译器上面写完代码,再复制粘贴到洛谷提交。或者直接点击题目上方的“提交答案”,在洛谷的提交页面编写代码。但是个人不建议后者,因为洛谷的提交页面经常没有自动缩进、大括号补全等功能(原本是有的,但是“很玄学”的经常没有)。
点击下方“提交评测”交给评测机评测,自动跳转到另一个页面,等待评测结果显示。
-
如果评测点全部显示“AC”(Accepted,通过),那么恭喜你通过了在洛谷上的第一道题!
-
如果评测点有的显示不是“AC”,不要灰心,认真检查你的代码,如果实在检查不出来,可以对照下方标准程序来看。注意:不要直接复制标准程序!
P1000 超级玛丽游戏 标准程序:
#include <iostream>
using namespace std;
int main()
{
cout << " ********" << endl;
cout << " ************" << endl;
cout << " ####....#." << endl;
cout << " #..###.....##...." << endl;
cout << " ###.......###### ### ###" << endl;
cout << " ........... #...# #...#" << endl;
cout << " ##*####### #.#.# #.#.#" << endl;
cout << " ####*******###### #.#.# #.#.#" << endl;
cout << " ...#***.****.*###.... #...# #...#" << endl;
cout << " ....**********##..... ### ###" << endl;
cout << " ....**** *****...." << endl;
cout << " #### ####" << endl;
cout << " ###### ######" << endl;
cout << "##############################################################" << endl;
cout << "#...#......#.##...#......#.##...#......#.##------------------#" << endl;
cout << "###########################################------------------#" << endl;
cout << "#..#....#....##..#....#....##..#....#....#####################" << endl;
cout << "########################################## #----------#" << endl;
cout << "#.....#......##.....#......##.....#......# #----------#" << endl;
cout << "########################################## #----------#" << endl;
cout << "#.#..#....#..##.#..#....#..##.#..#....#..# #----------#" << endl;
cout << "########################################## ############" << endl;
return 0;
}
如果读者们发现错误,请及时以评论或者其他方式告诉作者,我会在下方致谢区域挂上每一个人的用户名,感激不尽!
致谢
- 感谢那些帮助作者排查错误的朋友: