cheng
第1部分 语 言 篇
第1章 程序设计入门
阅读资料[摘录自网络以及专业书籍] Main函数相关:
每个 C++ 程序都包含一个或多个函数,而且必须有一个命名为 main。函数由执行函数功能的语句序列组成。操作系统通过调用 main 函数来执行程序,main 函数则执行组成自己的语句并返回一个值给操作系统。
下面是一个简单的 main 函数,它不执行任何功能,只是返回一个值: int main() {
return 0; }
操作系统通过 main 函数返回的值来确定程序是否成功执行完毕。返回 0 值表明程序程序成功执行完毕。
main 函数在很多方面都比较特别,其中最重要的是每个 C++ 程序必须含有 main 函数,且 main 函数是(唯一)被操作系统显式调用的函数。
定义 main 函数和定义其他函数一样。定义函数必须指定 4 个元素:返回类型、函数名、圆括号内的形参表(可能为空)和函数体。main 函数的形参个数是有限的。 本例中定义的 main 函数形参表为空。 第 7.2.6 节将介绍 main 函数中可以定义的其他形参。
main 函数的返回值必须是 int 型, 该类型表示整数。 int 类型是内置类型,即该类型是由 C++ 语言定义的。
函数体函数定义的最后部分,是以花括号开始并以花括号结束的语句块: {
return 0; }
例中唯一的语句就是 return,该语句终止函数。
注意 return 语句后面的分号。 在 C++ 中多数语句以分号作为结束标记。分号很容被忽略,而漏写分号将会导致莫名其妙的编译错误信息。
当 return 带上一个值(如 0)时,这个值就是函数的返回值。返回值类型必须和函数的返回类型相同, 或者可以转换成函数的返回类型。 对于 main 函数,返回类型必须是 int 型,0 是 int 型的。
在大多数系统中,main 函数的返回值是一个状态指示器。返回值 0 往往表示 main 函数成功执行完毕。任何其他非零的返回值都有操作系统定义的含义。
通常非零返回值表明有错误出现。每一种操作系统都有自己的方式告诉用户 main 函数返回什么内容。
已初始化变量和未初始化变量
在 C++ 中,初始化是一个非常重要的概念。
已初始化变量是指变量在定义时就给定一个值。 未初始化变量则未给定初始值: int val1 = 0; // initialized
cheng
cheng
int val2; // uninitialized 给变量一个初始值几乎总是正确的,但不要求必须这样做。当我们确定变量在第一次使用时会赋一个新值,那就不需要创建初始值。
定义变量时,应该给变量赋初始值,除非确定将变量用于其他意图之前会覆盖这个初值。如果不能保证读取变量之前重置变量,就应该初始化变量。
EOF 文件终止符
竞赛中常采用 while(scanf( ... ) != EOF){ ... }来实现多组读入。
这是因为竞赛经常采用重定向的方式,把输入数据文件输入到程序中。而EOF表示文件结束。(End Of File)
从键盘输入文件结束符
操作系统使用不同的值作为文件结束符。Windows 系统下我们通过键入control—z——同时键入“ctrl”键和“z”键,来输入文件结束符。
nix 系统中,包括 Mac OS—X 机器,通常用 control—d。
C/C++编码规范
一个好的程序,不仅要算法正确,效率高,而且还应该可读性好。所谓程序的可读性,就是程序是否能让人容易读懂。在开发实践中,许多情况下可读性与代码效率同等重要。
软件开发是团队工作,接手别人编码的程序并在此基础上进行改进是必不可少的,因此可读性在工程实践中非常重要。即使是自己编写的程序,如果可读性不好,过一段时间需要改进时自己再看,也常会看不懂。
如何提高程序的可读性呢?在标识符、书写格式、注释三个方面加以培养,再养成一些好的习惯,就能够有效增强程序的可读性。
1.5.1 标识符命名注意事项 应该对变量、常量以及函数等标识进行适当的命名。好的命名方法使标识符易于记忆且使程序可读性大大提高。
对标识符命名的基本要求是,看到标识符就能想起或猜出它是做什么用的。如果名字能体现变量的类型或作用域等性质,当然更好。标识符命名应注意以下几点:
(1)标识符号应能提供足够信息以说明其用途。 一定不要怕麻烦而懒得起足够长的变量名,少按几个键省下的时间,和日后自己读程序或别人读你的程序揣摩该变量的作用所花的时间相比,实在微不足道。在没有国标合作的项目中编写程序,如果英语实在不好,可以使用拼音,但不要使用拼音缩写。
(2)为全局变理取长的、描述信息多的名字,为局部变量限稍短的名字。
(3)名字太长时可以适当采用单词的缩写。但要注意缩写方式一致,要缩写就全部缩写。比如单词Number,如果在某个变量里缩写成了:
int nDoorNum;
那么最好包含Number单词的变量都缩写成Num。
(4)注意使用单词的复数形式。如 int nTotalStudents,nStudents;
nStudents容易让人理解成代表学生数目,而nStudent含义就不十分明显。
(5)对于返回值为真或假的函数,加“IS”前缀如: int IsCanceled();
int isalpha(); //C语言标准库函数 BOOL IsButtonPushed(); 1.5.2 程序的书写格式
cheng
cheng
书写格式好的程序,看起来才有好心情,谁也不愿意看下面这样的程序: void main() {
int t, x, y; cin>>t; while (t>0) {
min=60000;
cin>>N>>x>>y>>max; plat[0].x1=x; plat[0].x2=x; plat[0].h=y; for (int i=1;i<=N;i++) {
cin>>plat[i].x1>>plat[i].x2>>plat[i].h; plat[i].t1=-1; plat[i].t2=-1;
if (plat[i].h>y) {i--; N--; } }
plat[0].t1=0;plat[0].t2=0;
qsort((void*)(&plat[1]), N, sizeof(plat[0]), compare); tryway(0); t--;
cout< 因此,如果想要让你的程序看起来赏心悦目,应该注意以下几点: (1)正确使用缩进 首先,一定要有缩进,否则代码的层次不明显。缩进应为4 个空格较好。需要缩进时一律按Tab 键,或一律按空格键,不要有时用Tab 键缩进,有时用空格键缩进。一般开发环境都能设置一个Tab 键相当于多少个空格,此时就都用Tab 键。 (2)行宽与折行 一行不要太长,不能超过显示区域,以免阅读不便。太长则应折行,折行最好发生在运算符前面,不要发生在运算符后面。如 if(Condition1() && Condition2() && Condition3()) { } 3)‘{’, ‘}’位置不可随意放置。 建议将‘{’放在一行的右边,而将‘}’单独放置一行。如: if(condition1()) { DoSomething(); } 比较 if(condition1()) { DoSomething(); } 这种写法,前者既不影响可读性,又能节省一行。 但是对于函数体或结构定义的的第一个‘{’,还是单独一行更为清晰。 (4)变量和运算符之间最好加1个空格,如: int nAge = 5; nAge = 4; if(nAge >= 4) cheng