绿色兵团CC++教程.docx
- 文档编号:4670028
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:10
- 大小:19.12KB
绿色兵团CC++教程.docx
《绿色兵团CC++教程.docx》由会员分享,可在线阅读,更多相关《绿色兵团CC++教程.docx(10页珍藏版)》请在冰点文库上搜索。
绿色兵团CC++教程
人家说,做黑客要有几项基本技能:
1、熟练的操作系统知识
2、过硬的编程本领
3、能独当一面的网络技术
其中编程又是重中之重,想想冰河大哥吧,想想小榕吧,他们就是凭借这一门功夫独步黑林。
在中国黑客史上写下了不朽的一页啊。
如果你是一位编程新手,请放心,本教程一定让你入门;
如果你在程序之空畅游已久,那么请多多指教;
大话说多了,还是先看看本教程要讲些什么吧:
1、C语言历史(成员自学);
2、C/C++基本语句(以C为例);
第一章C语言历史
在深入讲解C语言前,轻松一下,C语言的历史还是很精彩的。
提到C语言的历史,就必须提UNIX,也就必须提AT&T贝尔实验室的三位杰出青年:
KenThompson、DennisRitchie和BrianKernighan。
1966年,23岁的Thompson大学毕业后加入了贝尔实验室。
3年后Thompson用汇编设计出一个操作系统,取名UNIX。
第二年,Thompson又根据BCPL语言设计出无类型的B语言。
无类型的意思相当于说B语言中只有int类型,而没有long、float等其它类型,前面提到的GEL就是无类型语言。
1972年,Thompson好友Ritchie在B语言的基础上发明了有类型的C语言(最初称为newB语言)。
C语言的主要目就是用来编写UNIX操作系统,也因此,多年来,运行在UNIX操作系统的C语言一直是公认的标准。
因C语言脱胎于无类型的B语言,C语言是弱类型语言——不进行强类型检查,此后的标准C逐渐加强了类型检查。
1973年,Thompson重新用C语言改写了UNIX操作系统,成功突破操作系统必须用汇编语言的禁区,用C语言编写的操作系统在移植性和代码效率方面做到了最好的平衡。
UNIX操作系统上使用的二进制可执行文件格式就是COFF格式。
后来微软崛起时,吸纳了大量UNIX程序员,新的二进制可执行文件格式PE就建立在COFF基础上,这已经是后话。
1978年,由Kernighan和Ritchie合著了著名的“TheCProgrammingLanguage”一书,简称为《K&RC》。
这本书受到了广泛的赞誉,被誉为C语言的圣经,其二人也因此而名声大振。
这时期各种版本的C语言都以此作蓝本,K&RC成了事实上的标准。
CCS的编译器就支持K&RC。
经典又俏皮的入门例子“helloword”即源于此书,笔者在写本书第二章时还专门查询了原书的写法。
1983年夏天,美国国家标准化组织(ANSI)成立了C语言工作小组X3J11,开始了C语言的标准化。
标准化工作费时六年,冗长又拖拉:
既要考虑兼容事实标准K&RC,又有各方利益在此角斗,比如,微软希望把自己编译器上的关键字far、near等加入到标准中,微软背后倚持的是:
PC上的C语言用户当时已是多数。
直到1989年冬天,才正式出台了通常称之为ANSIC的标准,常简称为:
标准C或C89。
紧接着,更权威的国际标准化组织(ISO)做了些页面调整的小改动后,接纳了ANSIC。
随后,1990年初,ANSI又重新采纳了ISO标准。
至此C语言的世界标准和美国标准合二为一。
1983年还有一件值得一提的事,Thompson与Ritchie同获计算机界的最高奖——图灵奖
至此业界的C编译器都开始向标准C靠拢或兼容。
标准C的地位确定下来,但仍有一些改进。
1995年,ISO对C语言标准做了第一次修订,主要添加了一些函数库。
1999年,ISO添加了一些新特性,如变长数组(即数组长度可动态变更)等;也废除了一些非常不好的特性,如外部函数不显式声明就直接引用(主要是为了加强类型检查)等,这个版本被称为C99。
但C99显然没有获得C89那样的成功,直到今天,也很少有编译器支持。
很大的原因是:
能引领风潮的PC机的C用户,大都已经投入C++怀抱。
现今真正使用C的领域大都是嵌入式开发、驱动和系统内核等,这些用户显然对运行效率非常敏感,而实现C99的新特性(如变长数组)意味着运行效率降低。
考虑到人类喜欢知道事情最终结果的天性,也为了对人物叙述有始有终,所以简述贝尔实验室的三位杰出人物近况如下:
Thompson:
1998年与Ritchie同获国家技术奖。
2000年,从贝尔实验室退休,时年59岁。
Ritchie:
现仍在贝尔实验室,计算科学研发中心系统软件部经理,专注于操作系统、语言、硬件等。
Kernighan:
2000年,从贝尔实验室退休。
如今受聘于普林斯顿大学计算机科学系。
第二章C基本语句
老样子,还是从那个经典的第一个程序开始吧:
#include
#include
inta;
intmain(){
printf(“Hello,world!
”);
Return0;
}
可以看到,C程序由三部分组成;
#include #include //这里是预编译区 inta; //这里是全局变量定义区 intmain(){ … } //这里是函数区 C内面,除了预编译命令外,每条命令都以分号结束; 接下来讲讲各部分的作用吧; #include 这个语句的作用是把下面函数中要用到的命令所在的头文件包函到程序中,如果不包含的话,那些命令就没法用。 如下面的printf就要用到 这下你也可以试试编个类似的程序了吧: 如: #include #incldue intmain(){ printf(“哈哈! ! ! ! 我做成功了! ! ! ”); return0; } 运行看看,是不是很爽啊~~~ 再说说主函数的定义吧,就那个 intmain(){ … } main是C默认的主函数名,在程序执行的时候C会自动执行到main int是主函数的返回类型,int表示的是返回一个整型,即整数 因为标志的返回类型,那么在主程序结束的时候就必须加一句 return0; 表示返回一个0,接收者是调用这个程序的程序;如操作系统; 0表示成功执行; 如果没有成功,程序会自动返回一个非0的整数; 当然,你也可以不返回什么; 比如刚才的主函数可以这样定义: voidmain(){ printf(“hello,world! ”); } 看,这样就不用return了; 想必到这里你对C的程序结构有所了解了吧; 再看这个程序吧: #include #include inta; voidmain(){ a=1; printf(“%d”,a); } 知道这是什么意思不? 不懂吧,主要是那个printf(“%d”,a); 其实是C里面的格式化输出 其中双引号里面的%d表示要输出一个整型变量,看后面的a,它就是一个整型变量,这句话的意思就是输出一个整型变量的值。 再多举几个例子吧; inta,b; a=1; b=2; printf(“%d%d”,a,b); 程序输出就是: 12 知道空格哪来的不? 看看双引号的两个%d之间吧,也有个空格,没错,这就叫作格式化输出; 有战友一定会问: 还有什么类型呢? 给你们一张表吧: %d整型int %f浮点型(小数)float %s字符串型char[] %c字符型char 再比如输出一个字符串: #include #include charbuff[]=”hello,world”;//忘了说了,这个就表示定义一个字符串,名字叫buff,内容为hello//world voidmain(){ printf(“%s”,buff); } 这下应该明白了吧; 现在教你们循环语句: 看这个程序: #include #include voidmain(){ intI; for(i=1;i<=100;i++) printf(“%d”,i); } } 又不知道了吧。 这里的for就是一个循环控制语句; 意思是这样的: 让变量i的初始值为1;上界为100;i的值每次加1(就是i++,这个意思就是让变量i的值加1) 然后循环执行的语句就是printf(“%d”,i); 整个程序作用就是把1到100输出来; 呵呵,神奇吧; 再看这个: #include #include voidmain(){ intI; for(i=1;i<=200;i++) printf(“hello,world”); } 这个程序输出了200次helloworld 但是for循环的次数是即定的,如果次数不定怎么办呢? 再看这个: #include #include voidmain(){ while(1==1){ printf(“Hello,world”); } } 试试看吧。 。 。 呵呵 这个程序是不会停止的。 就是所谓的死循环,哈哈。 它的作用就是当 while后面的条件成立的时候执行下面的语句。 1当然永远等于1啦; 所以程序就不会停咯; 基实上面的语句都很有用的,比如(注: 些程序仅供观赏,不必太在意里面语句意思) #include #include voidmain(){ intI,j; for(i=1;i<=100;i++){ if(i%10==5)printf(“%d”,i); } } 这个程序吧1到100中的个位为5的数都输出来了; 看到循环的厉害了吧; 再看看这个: #include #include #include #definemaxn100 charstr_s[maxn],str_t[maxn]; intnext[maxn+1]; voidgetnext(char*tmp){ inti,k,l; l=strlen(tmp); for(i=0;i<=l;i++)next[i]=-1; i=0; k=0; while(i if(k==-1||tmp[k]==tmp[i]){ k++; i++; } elsek=next[k]; } } intindex(char*s,char*t){ inti,j; intls,lt; ls=strlen(s); lt=strlen(t); i=0;j=0; getnext(t); while(i if(s[i]==t[j]||j==-1){ i++; j++; } elsej=next[j]; } if(j==lt)returni-j+1; elsereturn0; } voidmain(){ scanf("%s",&str_s); scanf("%s",&str_t); printf("%d",index(str_s,str_t)); } 这是一个模式匹配的算法,作用是将串2在串1中第一次出现的位置输出;效率是很高的; 好了,这次就讲到这里吧,偶的手也打酸了。 呵呵;有机会再接着讲;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 绿色 兵团 CC 教程