编程竞赛宝典:C++语言和算法入门
上QQ阅读APP看书,第一时间看更新

1.1 我的第一个程序

E:\朱老师电子书\2021\PB55461-0101\tt1-web-resources\image\01C++语言入门-01_我的第一个程序.jpg

扫码看视频

我们使用Dev-C++这个适合初学者使用的C/C++集成开发环境来学习C++语言,读者可上网搜索“Dev C++ 下载”等关键词从网上下载该软件,或者使用浏览器访问www.magicoj.com(或者www.razxhoi.com),下载它的改进版本——Dev-CPP智能开发平台,如图1.1所示。

E:\朱老师电子书\2021\PB55461-0101\5546-web-resources\image\0101.jpg

图1.1

安装界面如图1.2(a)所示。单击其中的“下一步”按钮,出现选择目标位置的界面,建议继续单击“下一步”按钮默认安装,如图1.2(b)所示。

E:\朱老师电子书\2021\PB55461-0101\5546-web-resources\image\0102.jpg

图1.2

安装完成后运行软件,将出现初始设置界面。

如果没有出现初始设置界面或者弹出错误对话框(因为未正确卸载旧版Dev-C++)等,可在软件的“工具”菜单里选择“环境选项”,在“文件和路径”选项卡中单击“删除设置并退出”按钮,再重新运行软件即可恢复正常,如图1.3所示。

E:\朱老师电子书\2021\PB55461-0101\5546-web-resources\image\0103.jpg

图1.3

设置好的软件界面(Dev-CPP智能开发平台支持换肤功能)如图1.4所示。

E:\朱老师电子书\2021\PB55461-0101\5546-web-resources\image\2.png

图1.4

存放代码的文件称为源代码文件,编写代码之前要新建一个源代码文件,图1.5所示为新建源代码文件的两种方法。

图像说明文字

图1.5

如图1.6所示,由模板自动生成的代码(若使用的非Dev-CPP智能开发平台则用户需手动输入)显示在代码编辑区。

E:\朱老师电子书\2021\PB55461-0101\5546-web-resources\image\0106.jpg

图1.6


 

E:\朱老师电子书\2021\PB55461-0101\5546-web-resources\image\3.png

如果不想要自动生成代码,想自己手动输入全部代码,只要在“工具”→“环境选项”中将新建文件时选中的“自动加载模板”选项取消即可。


 

#include <bits/stdc++.h> 表示编写的代码要包含子目录bits下的一个名为“stdc++.h”的头文件。之所以叫作头文件,是因为这类文件一般放在代码的开头。C++有许多头文件,它们可以实现一些特定的功能。stdc++.h头文件又称“万能”头文件,因为代码中只要包含该头文件就基本无须再包含其他头文件了。

using namespace std;表示使用的命名空间为“std”(std是英文单词“standard”即“标准”的缩写),这主要是为了解决名字冲突的问题,初学者暂不必深究。

“int”是英文单词“integer”即“整数”的缩写,和第7行的return 0相呼应。“return”的中文含义是“返回”,而0是整数,意思是给系统(调用者)返回整数0。0表示一切运行正常,即“没有消息就是好消息”,显然代码能运行到return 0,说明代码是正常结束而不是运行半途出错、异常退出的。

“main”的中文含义是“主要的”,C++程序里,必须有且只能有一个名为“main”的函数(主函数)。函数是指能完成一定功能的程序块,函数后面有圆括号,随后函数体用花括号标注,即第5~第8行。


 

E:\朱老师电子书\2021\PB55461-0101\5546-web-resources\image\3.png

C++程序的运行总是由main()函数的函数体里的第一条语句开始,到main()函数的函数体的最后一条语句结束。


 

现在编写代码,使程序运行后显示一行字符“Hello,world”,这需要在代码编辑区第6行空白处加入cout<<"Hello,world\n";,如图1.7所示。

E:\朱老师电子书\2021\PB55461-0101\5546-web-resources\image\5.png

图1.7

cout用于输出紧随操作符“<<”后的双引号中的字符串,输出的字符串必须包含在双引号之中,其中“\n”表示换行。


 

E:\朱老师电子书\2021\PB55461-0101\5546-web-resources\image\3.png

C++语言对字母大小写敏感,例如字母“a”和“A”不同。

除输出内容有中文,需要用中文输入法在双引号中输入中文字符外,其他字符都必须用英文输入法输入,否则代码可能无法运行。

C++语言中,每条语句末尾应以分号(;)表示结束,但预处理、函数头及花括号之后一般不加分号。


 

写好的代码要及时保存,保存的文件的扩展名为.cpp,如图1.8所示。

E:\朱老师电子书\2021\PB55461-0101\5546-web-resources\image\7.png

图1.8

以.cpp为扩展名保存的文件叫作源文件,源文件不能直接运行,要编译成可执行的EXE文件后方可运行。如图1.9所示,打开“运行”菜单后单击“编译”,无论编译成功还是失败,都会在软件界面下方功能区的信息栏输出相应的信息。

E:\朱老师电子书\2021\PB55461-0101\5546-web-resources\image\8.png

图1.9

编译成功后,打开“运行”菜单单击“运行”,将出现如图1.10所示的命令提示符窗口,显示输出的文字,第一个C++程序编写成功了!

E:\朱老师电子书\2021\PB55461-0101\5546-web-resources\image\0110.jpg

图1.10

如图1.11所示,程序编译生成的EXE文件可独立运行而无须编译器的环境支持。

E:\朱老师电子书\2021\PB55461-0101\5546-web-resources\image\9.png

图1.11

使用cout可以输出各类字符,例如,输出多行中文字符串的代码如下。

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6   cout<<"你好,C++语言\n\n"; 
 7   cout<<"我是初学者\n";      
 8   cout<<"我喜欢编程\n";      
 9   return 0;
10 }

每一行输出字符串的末尾均有“\n”表示换行,输出结果如图1.12所示。

E:\朱老师电子书\2021\PB55461-0101\5546-web-resources\image\10.png

图1.12

1.1.1 并排的树(tree)

【题目描述】

请尝试编程输出如下的两棵“并排的树”。

   *         *

  ***       ***

 *****     ***** 

*******   ******* 

   *        *

   *        *