算法竞赛宝典(第一部):语言及算法入门
上QQ阅读APP看书,第一时间看更新

我的第一个程序

奥赛魔法战队日常训练用的编程软件(编译器)是Bloodshed Dev-C++,版本号为4.9.9.2(Win7以上操作系统需下载更高版本),它是一个可视化集成开发环境,可以实现C或C++程序的编辑、编译、调试和运行等功能。

Dev-C++的安装方法很简单,鼠标双击运行网站下载的devcpp安装软件,如图1.1所示。

图1.1

下载资源中还提供了devpas安装程序和代码管理软件安装程序,其中devpas安装程序是pascal语言的编译软件(非官方指定用比赛软件)。代码管理软件是本书作者自行开发的基于数据库管理的源代码管理工具,可有效分类、管理Java、C或C++、Pascal等各类源代码,并可对各类源代码进行简单的编辑、编译和运行。

当出现选择语言时,默认选择“English”即可(此处无法选择Chinese/中文),如图1.2所示。

图1.2

单击I Agree按钮接受软件的许可证协议,如图1.3所示。

图1.3

单击Next按钮默认安装全部内容,如图1.4所示。

图1.4

选择安装路径后,单击Install按钮安装,如图1.5所示。

图1.5

如无特殊要求,此处建议选择默认安装路径安装,这样下载资源中附送的单机评测软件就可以正常使用了。

安装过程中会有一系列的设置选择,一般选择默认(此处可选择界面为中文)即可。安装完毕后,在桌面双击图标或者在“开始”菜单里选择Dev-C++,即可启动Dev-C++集成开发工具,如图1.6所示。

图1.6

双击打开Dev-C++的编辑界面如图1.7所示。

图1.7

如不习惯Dev-C++默认的英文界面,可以单击菜单栏Tools中的Enviroment Options选项打开环境设置对话框,将InterFace栏中的Language选项改为Chinese,如图1.8所示。

图1.8

代码编辑区的编辑操作与Microsoft Word的操作很相似,例如剪切:Ctrl+X;复制:Ctrl+C;粘贴:Ctrl+V;恢复:Ctrl+Z;重作:Ctrl+R……

如果感觉代码编辑区域太小,按F12键可切换为全屏编辑状态。

在编写第一个C++程序之前,需新建一个源代码文件,新建源代码的方法有三种,方法一是直接单击工具栏中的“新建源代码”图标,方法二是打开“文件”菜单,单击“源代码”子菜单,方法三是直接按快捷键Ctrl+N,如图1.9所示。

图1.9

【例题描述】 我的第一个程序

在代码编辑区输入图1.10所示的代码。

图1.10

程序由语句组成,除第一行预处理语句和main函数体的定义外,每条语句由分号(;)作为结束符。

注意C/C++语言是对字母大小写敏感的,如“a”和“A”代表不同的意思。并且除双引号(" ")包含的字符串中的中文以及注释语句外,其他字符一般用英文半角格式输入。

#include <iostream>表示嵌入名为iostream的C++标准头文件,此头文件包含输入输出的相关信息。因为我们编写的C++程序几乎都涉及输入输出操作,所以此行语句为必写语句。

using namespace std;指定名字空间为std。C++提供的名字空间技术可有效防止大型软件项目开发时容易出现的类、变量或函数同名的问题。由于C++标准库中的所有组件都是在一个被称为std的名字空间中声明和定义的,所以我们编写的程序必须要声明using namespace std。

main是主函数名,函数体用一对大括号括住。函数是C++程序中最小的功能单位。在C++程序里,必须有且只能有一个名为main()的函数,它表示了程序执行的开始点,程序运行时由main函数里的第一条语句开始执行,结束于main函数尾的最后一条语句。main()函数之前的int(也可省略)表示main()函数返回值是一个int类型的数(关于函数的返回值将在以后介绍)。

cout是一个输出流对象,它是C++系统预定义的对象,其中包含了许多有用的输出功能。输出操作由操作符“<<”来表示,其作用是将紧随其后的双引号中的字符串输出到标准输出设备(显示器)上。输出的字符串必须包含在一对双引号之中,其中“\n”表示换行。

system(“pause”)表示暂停。使用这条语句后,运行时屏幕上会出现“请按任意键继续…”的字样。如果没有这条语句,当运行程序时屏幕上的内容就会一闪而过而无法看清(更高版本的Dev-C++使用这条语句会出现错误)。

return 0表示函数返回值为0,main函数的返回值一般是返回给该程序的调用者(如操作系统),即通知调用者程序正常结束。NOI类型的比赛规定必须在最后一行加上这一句。

输入的程序代码要及时保存,C语言源文件的后缀名为C,C++语言源文件的后缀名为C++ / CPP。C语言是C++语言的子集,C++语言向下兼容C语言,所以一般默认保存为C++类型,如图1.11所示。

图1.11

以C或CPP为后缀名保存的文件叫程序的源文件,源文件是不可以直接运行的,源文件首先要编译成obj目标文件,并与系统提供的库函数连接后得到可执行的exe文件后方可运行,如图1.12所示。

图1.12

编译源代码如图1.13下左图所示,打开“运行”菜单后单击“编译”,如果出现图1.13下右图所示的消息框,则表示编译成功。

图1.13

哎呀,急死我了,我的程序写好了,可是总是报错而无法运行,我左看右看上看下看就是找不到错误,你能帮我找找吗?

请尝试找出图1.14所示的错误。

图1.14

第一个错误是把include写成了inculde。

第二个错误是把iostream写成了iosteam。

第三个错误是把main写成了mian。

第四个错误是输出字符串这行语句末的分号写成了中文全角字符的分号。

你可真是够粗心的。

编译程序能及时地发现一般的语法错误、输入错误或者简单的逻辑错误并给出相应的错误原因,但一些深层次隐蔽的错误还是需要自己去发现和调试。学好编程能有效地矫正粗心的毛病。

一般地,只要看到有类似于stray '\163' in program的错误提示,就是表示代码里有错误的全角字符格式的字符输入了。

又如'cout' undeclared的错误提示,就是表示输入输出头文件写错了。

编译成功后,就可以运行程序观看结果了,打开“运行”菜单后单击“运行”选项,屏幕将出现如图1.15所示的一个DOS窗口,看到输出的文字了么?呵呵,第一个C++程序成功运行了!

图1.15

编译好的程序,可以离开编译器环境运行。直接单击生成的exe可执行文件即可运行程序,如图1.16所示。exe可执行文件也可拷贝到其他安装有Windows操作系统的PC上运行。

图1.16

cout可以随心所欲地在屏幕上输出各种字符,例如,我们可以这样写:

    cout << "你好,C语言\n";
    cout << "我是中学生\n";
    cout << "我喜欢编程\n";

可以看到,每一行输出的结尾均有“\n”换行。输出效果如图1.17所示。

图1.17

【上机实践】

请尝试编程输出如下的两棵并排的树:

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