Dqsscha清华大学ACM集训队企业培训范本

上传人:秋**** 文档编号:224819131 上传时间:2021-12-16 格式:DOC 页数:11 大小:111KB
返回 下载 相关 举报
Dqsscha清华大学ACM集训队企业培训范本_第1页
第1页 / 共11页
Dqsscha清华大学ACM集训队企业培训范本_第2页
第2页 / 共11页
Dqsscha清华大学ACM集训队企业培训范本_第3页
第3页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《Dqsscha清华大学ACM集训队企业培训范本》由会员分享,可在线阅读,更多相关《Dqsscha清华大学ACM集训队企业培训范本(11页珍藏版)》请在金锄头文库上搜索。

1、Time will pierce the surface or youth, will be on the beauty of the ditch dug a shallow groove ; Jane will eat rare!A born beauty, anything to escape his sickle sweep.- Shakespeare清华大学ACM集训队培训资料(内部使用)一、C+基础基本知识所有的C+程序都是有函数组成的, 函数又叫做子程序,且每个C+程序必须包含一个main函数,编译器(能够把源代码转换成目标代码的程序)把翻译后的目标代码和一些启动代码组合起来,生成

2、可执行文件,main函数就是可执行文件的入口,所以,每个C+程序有且只有一个main函数。下面我们看一个最简单C+程序。(程序1.1)程序1.1int main()return 0;在这个程序中,如果缺少任何一个字符,编译器就无法将其翻译成机器代码。此外,C+是对大小写敏感的,这就意味着,如果我将mian()函数拼为Main(),哪么,编译器在编译这段程序的时候就会出错。编辑源文件能够提共管理程序开发的所有步骤,包括编辑的程序成为集成开发环境(integrated development evironments, IDE)。在windows系统下,使用较为广泛的有Microsoft Visua

3、l C+、Dev-Cpp等,在UNIX系统下,有Vim、emacs、eclipes等。这些程序都能提供一个较好的开发平台,使我们能够方便的开发一个程序,接下我们所要了解的都是标准C+,所有源代码都在Dev-cpp下编写,能够编译通过。如果我们修改程序1.1中的main()函数的名称,将其改为Main(),那么,IDE就会给出错误信息,比如“ Linker error undefined reference to WinMainx16”,因为编译器没有找到main函数。接下来,我们来看一个经典的C+例子(程序1.2)程序1.2#includeusing namespace std;int mai

4、n(void)coutHello Wrold!endl;return 0;运行结果Hello World!程序说明第一行“#include”,是一句预处理命令,相当于把“iostream”这个文件的所有内容复制到当前位置,替换该行。因为在输出操作中需要做很多事,C+编译器就提供了很多已经写好的函数(成为C+标准库),我们做的只是拿来用就可以了。第二行的“using namespace std;”是使用标准命名空间,因为我们在程序中用到了在标准命名空间里的函数和对象。目前可以不了解其具体如何实现,在以后的程序设计中可以再对其进行了解。在明函数中“cout”Hello World!”endl;”是

5、在屏幕上打印“Hello World!”,“endl”表明打印完这句话之后需要换行。如果我们替换引号内的内容,程序的输出就会相应改变。另外一个C+程序例子/ ourfunc.cpp - defining your own function#include void simon(int); / function prototype for simon()int main() using namespace std; simon(3); / call the simon() function cout count; simon(count); / call it again cout Done!

6、endl; return 0;void simon(int n) / define the simon() function using namespace std; cout Simon says touch your toes n times. endl; / void functions dont need return statements下面试运行情况:Simon says touch your toes 3 times.Pick an integer: 512Simon says touch your toes 512 times.Done!程序中包含了cin语句来从键盘上获取数据

7、。该程序中包含了除main函数以外的另一个函数simon(),他和main函数定义的格式相同,函数的统一格式如下:type functionname (argumentlist)statements注意,定义simon()的代码在main()函数的后面,C+中不允许将函数定义在另一个函数内。每个函数的定义都是独立的,所有的函数的创建都是平等的。simon()函数的函数头定义如下:void simon(int n)以void 开头表明simon()没有返回值,因此我们不能类是这样的使用它。simple = simon(3);有返回值的函数如下/ convert.cpp - converts st

8、one to pounds#include int stonetolb(int); / function prototypeint main() using namespace std; int stone; cout stone; int pounds = stonetolb(stone); cout stone stone = ; cout pounds pounds. endl; return 0;int stonetolb(int sts) return 14 * sts;下面是运行情况:Enter the weight in sone: 1414 stone = 196 pounds

9、.程序通过cin语句给stone提供一个值,然后在main函数中,把这个值传递给stonetolb()函数,这个植被赋给sts之后,stonetolb()用return将 14*sts返回给main()。函数头中的int表明stonetolb()将返回一个整数。除了int类型之外,C+的内置数据类型还有:unsigned long、long、unsigned int、unsigned short、short、char、unsigned char、signed char、bool、float、double、long double。对于数据的输入和输出有几道练习题xacm.hdu.edux/sho

10、wproblem.php?pid=1089至xacm.hdu.edux/showproblem.php?pid=1096二、算法基础1. 什么是算法算法是完成特定任务的有限指令集。所有的算法必须满足下面的标准:a. 输入。由外部题共零个或多个输入量。b. 输出。至少产生一个输出量。c. 明确性。每条指令必须清楚,不具模糊性。d. 有限性。如果跟踪算法的指令,那么对于所有的情况,算法经过有限步以后终止。e. 有效性。每条指令必须非常基础,原则上使用笔和纸就可以实现例 选择排序void SelectionSort(Type a, int n)/Sort the arrat a1:n into no

11、ndecreasing order.for (int i=1; i=n; i+)int j=1;for (int k=i+1; k=n; k+)if (ak aj)j = k;Type t = ai;ai = aj;aj = t;使用该函数时,应将Type替换为C+中的数据类型3性能分析程序P所用时间定义为T(P), T(P)是编译时间和运行时间之和。下面我们计算一下选择排序运行时所要花费的时间SelectionSortcosttimesfor (int i=1; i=n; i+)c1int j=1;c2for (int k=i+1; k=n; k+)c3if (ak aj)c4j = k;c

12、5Type t = ai; ai = aj; aj = t;c6那么该算法运行的时间那么,在最坏的条件下,的值应该是所以,算法的运行时间为4渐进符号定义: 大O函数,念做是的大”oh”,当且仅当存在正常数和,使得对于所有的,有。例对于所有有,所以。对于所有有,所以对于所有有,所以当然对于所有有,所以定义: 函数,念做是的”omega”,当且仅当存在正常数和,使得对于所有的,有。例对于所有有,所以。当然,但是。现然无论是O还是,都不能精确的描述一个函数定义: 函数,念做是的”theta”,当且仅当存在正常数和,使得对于所有的,有。例对于有且,所以记号要比O和都要精确。排列生成器(n!)void

13、Perm(Type a, int k, int n)if (k=n) /Output permutation.for (int i-1; in; i+) coutai ;else /ak:n has more than one permutation. / Generate these recursively.for (int i=k; i=n; i+)Type t=ak; ak=ai; ai=t;Perm(a, k+1, n);/All permutations of ak+1:nt=ak; ak=ai; ai=t;对于下面的程序#includeusing namespace std;void Perm(int a, int k, int n)if (kn-1)int i, t;for (i=k; in; i+)t = ak;ak = ai;ai = t;Perm(a, k+1, n);

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

当前位置:首页 > 商业/管理/HR > 企业文档

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