信息学竞赛中可能用到的C++语法.doc

上传人:大米 文档编号:543593821 上传时间:2023-04-28 格式:DOC 页数:14 大小:40.50KB
返回 下载 相关 举报
信息学竞赛中可能用到的C++语法.doc_第1页
第1页 / 共14页
信息学竞赛中可能用到的C++语法.doc_第2页
第2页 / 共14页
信息学竞赛中可能用到的C++语法.doc_第3页
第3页 / 共14页
信息学竞赛中可能用到的C++语法.doc_第4页
第4页 / 共14页
信息学竞赛中可能用到的C++语法.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《信息学竞赛中可能用到的C++语法.doc》由会员分享,可在线阅读,更多相关《信息学竞赛中可能用到的C++语法.doc(14页珍藏版)》请在金锄头文库上搜索。

1、信息学竞赛中可能用到的C+语法信息学竞赛中可能用到的C+语法冯文科虽然我们总是习惯写C/C+,其实大家都知道C与C+是两种不同的语言:C+是C的超集-它几乎完全兼容C的语法,同时也提供非常多特有的语法与概念。本文并不想全面介绍C+的语法与概念-那足够写一本一寸多厚的专业书籍-只是将信息学竞赛中可能要用到的C+语法做个简要介绍,它们的加入将使您原有的C程序更简洁、清晰,书写更方便。首先要说明的一点是:C+程序源文件的扩展名是cpp,而不是C程序的c,这也是多数编译器识别一个源程序是C+程序还是C程序的标准。由于C+是C的超集,因此您可以在*.cpp文件中原样书写C程序而且几乎不会遇到什么问题。特

2、别强调:本文中介绍的语法,都是只能在*.cpp文件中使用的C+语法,C语言的编译器不会编译通过。(本文中所有源程序都在Dev-C+中编译通过。)一、输入输出流。C+中对输入输出部分做了很大的修改,C语言中使用scanf、fscanf、printf、fprintf进行的输入输出工作都由对流(stream)的操作代替了。您可以向一个输出流中用符号从一个输入流中提取一些内容-相当于输入。例1(从键盘读入及向屏幕输出)从键盘读入两个整数,由小到大排序后输出,用空格分开。源程序#include /要使用输入输出流必须的头文件,注意没有.husing namespace std; /要使用cin与cout

3、必须包括的命名空间int main(int argc, char *argv) int a, b; cinab;/cin是标准输入流,此语句从键盘输入两个整数,依次存入a、b中 if(ab) couta bendl;/cout是标准输出流,输出到屏幕 else coutb aendl;/依次将连接的各项输出,endl表示换行 return EXIT_SUCCESS;若从键盘输入:43则输出34通过上面的例子,相信您已经对输入输出流的使用有了一个大概的了解。下面一个例子演示如何利用输入输出流对文本文件进行读写操作,您也将从这个例子开始逐渐看到C+语法的方便之处。例2(文件的输入输出)从文件in.

4、txt中输入两个整数,由小到大排序后输出到out.txt中,用空格分开。源程序#include /要使用文件输入输出流必须的头文件using namespace std; /要使用ifstream与ofstream必须的命名空间ifstream inf(in.txt); /定义文件输入流inf,并关联到in.txtofstream ouf(out.txt);/定义文件输出流ouf,并关联到out.txtint main(int argc, char *argv) int a, b; infab;/从inf中输入两个整数 if(ab) oufa bendl;/向ouf输出结果。 else ouf

5、b aendl; return EXIT_SUCCESS;如果in.txt的内容为:43则out.txt的内容为:34由例2可以看出,对文本文件的输入输出与标准输入输出从格式上讲是一致的,只是需要定义一下文件输入输出流,且定义时只需说明文件名即可,文件的打开与关闭动作是C+自动完成的,用户不必处理,这样就不会出现忘记关闭文件而丢失数据的情况了。二、/开始的单行注释。上面的两个例子中其实已经使用这个语法了,一个语句行中从/开始后面的文字都是注释-换行后就不是了,因此这是单行注释,与常用的/*、*/不同。三、有了bool类型。C+也有真正的布尔类型了,就是bool,布尔型的变量可以有两个值true

6、和false。其中bool、true和false都成为了C+的关键字。四、可以按需要随时定义变量。在C语言中,变量只能定义在所有可执行语句之前,这样,每当我们需要定义一个新变量时,都要向前翻。在C+中就不用,您可以随时随地地定义变量,当然,同一作用域中的变量仍然是不准重名的。这在下面的例子中可以看到。五、结构体(struct)的名称、共用体(union)的名称及枚举(enum)的名称都可以直接用做类型名而定义变量。 直接用一个例子来说明即可。 例3(结构体语法)从文件in.txt中读入十个学生的姓名与成绩,将学生信息按成绩由大到小排序后输出到out.txt中,每个学生一行。源程序#includ

7、e using namespace std;#define N 10ifstream inf(in.txt);ofstream ouf(out.txt);struct stu/定义结构体stu char name20; int score;int main(int argc, char *argv) int i; stu data10; /结构体名称stu可以直接用于定义变量 for(i=0;idatai.namedatai.score; int j; /在使用前定义变量 for(i=0;ii;j-) if(dataj.scoredataj-1.score) stu t; t=dataj; d

8、ataj=dataj-1; dataj-1=t; for(i=0;iN;i+) /输出 oufdatai.name datai.scoreendl; return EXIT_SUCCESS;如果in.txt的内容为:zhang 80wang 74li 95zhao 96chen 90xiao 100qian 80sun 66liu 75dong 80则out.txt的内容为:xiao 100zhao 96li 95chen 90zhang 80qian 80dong 80liu 75wang 74sun 66六、new与delete。new与delete都是C+的关键字,用于动态申请与归还内存

9、,比C语言中原有的malloc与free函数要方便。例4(new与delete)new与delete的练习。源程序#include using namespace std;int main(int argc, char *argv) int *p; p=new int;/为指针p申请一个整数的空间,new后的类型必须与*p的类型一致 *p=3; cout*pendl; delete p; /归还空间,不必指出归还多少 return EXIT_SUCCESS;程序最终输出:3new与delete的另一个用途就是动态数组-即事先无法确定大小的数组,使用时按需分配空间,这里要用到C语言的一个概念:一

10、维数组名实际是指针变量。例5(动态数组)文件in.txt中有n个学生的姓名和成绩,请将学生信息按成绩由大到小排序后输出到out.txt文件中。每个学生一行。in.txt文件的结构为:首行一个整数,表示学生个数n,以下n行每行一个姓名与成绩,用空格分开。源程序#include using namespace std;ifstream inf(in.txt);ofstream ouf(out.txt);struct stu char name20; int score;int main(int argc, char *argv) int i, n; stu *data; /定义一个stu的指针,用

11、于分配数组 infn; data=new stun; /分配n个stu的空间,由data指向 for(i=0;idatai.namedatai.score; /使用时与静态数组没区别 int j; for(i=0;ii;j-) if(dataj.scoredataj-1.score) stu t; t=dataj; dataj=dataj-1; dataj-1=t; for(i=0;in;i+) oufdatai.name datai.scoreendl; delete data; /回收空间,注意回收数组空间要用,不必指定归还大小 return EXIT_SUCCESS;七、引用变量在C语言

12、中,函数的参数可以用数值变量或指针来传递。在C+中,函数的参数有了第三种传递方法-引用传递。效果上等同于PASCAL中的var变量,可以在函数中修改变量的实际参数的值。比如下面的例子就使用了引用参数。例6(引用参数)写一个函数,交换两个变量的值。源程序#include using namespace std;void swap(int &a, int &b)/引用参数,形参前加&符号表示引用 int t; t=a;/交换变量的值 a=b; b=t;int main(int argc, char *argv) int a, b; cinab; couta bendl; swap(a, b);/实现变量值的交换 couta bendl; return EXIT_SUCCESS;如果输入23则输出2332八、结构体的构造函数与析构函数构造函数和析构函数原本是类中的概念,但在结构体中也可以使用。大家知道结构体中可以包括各种各样的变量,称做它的成员。在C+中,结构体里面甚至可以包括函数,称为它的方法。其中最重要的两个方法就是构造函数与析构函数。构造函数是在定义结构体变量(或用new分配空间时)被自动运行的函数,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号