C程序设计§谭浩强编著清华大学出版社教材、参考书与课时安排教材C程序设计(第二版)谭浩强编著清华大学出版社参考书C语言程序设计教程谭浩强高等教育出版社C高级实用程序设计王士元清华大学出版社C程序设计试题汇编谭浩强清华大学出版社课时安排64学时(理解熟悉)§熟记C语言的基本概念§熟悉TurboC的上机操作环境§会读、会编、会调试C程序学习要点熟记C语言的语法学会算法分析与算法设计课程目的课程要求课前请做好预习保持课堂安静,头脑清醒,思维活跃认真、独立、按时完成并提交作业重视上机实践,有效利用宝贵的上机时间第1章C语言概述第2章程序的灵魂—算法第3章数据类型、运算符与表达式第4章最简单的C程序设计—顺序程序设计第5章选择结构程序设计第6章循环控制第7章数组第8章函数第9章预处理命令第10章指针第11章结构体与共用体第12章位运算第13章文件目录C语言发展历史C语言的特点简单的C程序介绍C程序的上机步骤第1章C语言概述C语言程序设计第一章C语言概述§1.1C语言发展历史程序设计语言的发展机器语言汇编语言高级语言面向过程面向对象CPU指令系统,由0、1序列构成的指令码组成如:10000000加10010000减用助记符号描述的指令系统,可进行地址、位操作如ADDA,B编写系统软件,直接对硬件操作,可读性,移植性差面向机器的语言C语言程序设计第一章C语言概述可读性,移植性好,编写应用程序一般较难实现汇编语言的某些功能如:地址和位的操作C语言兼有高级和低级语言的功能适合写系统软件和应用软件又称中级语言C语言发展过程产生背景ALGOL60→CPL语言→BCPL→B语言,写UNIX系统产生过程时间:1972~1973地点:美国贝尔实验室目的:UNIX操作系统设计人:Ken.Thompson和Dennis.M.RitchieC标准标准C:1978年K&R合著《TheCProgrammingLanguage》ANSIC:1983年87ANSIC:1987年1990年国际标准的ANSIC,1994年再次修订。C版本MicrosoftC或称MS-CTurboC或称TCC语言程序设计第一章C语言概述§1.2C语言的特点语言简洁、紧凑、灵活运算符丰富数据结构、数据类型丰富链表、树、栈程序设计结构化、模块化结构化控制语句:if…else、while、switch、for函数作为模块单位语法不严格、程序设计自由度大可以访问内存地址、进行位运算生成目标代码质量高可移植性好C语言程序设计第一章C语言概述32个关键字:(由系统定义,不能重作其它定义)autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsignedunionvoidvolatilewhileTurboC扩充了11个关键字:asm_cs_ds_es_sscdeclfarhugeinterruptnearpascal注意:在C语言中,关键字都是小写的。C语言程序设计第一章C语言概述C语言简洁、紧凑,使用方便、灵活。ANSIC一共只有32个关键字,见365页附录B9种控制语句:if()~else~for()~while()~do~while()continuebreakswitchgotoreturnC语言程序设计第一章C语言概述C语言有9种控制语句,程序书写形式自由,主要用小写字母表示,压缩了一切不必要的成分。C语言程序设计第一章C语言概述表1.1C语言与Pascal语言比较通过表1.1我们可以得出结论:C比Pascal简练,因此源程序更短,编程效率高。C语言PASCAL语言含义{}if(e)S;inti;inta[10];intf();int*p;i+=2;i++,++I;BEGINENDIF(e)THENS;VARi:INTEGER;VARa:ARRAY[1..10]OFINTEGER;FUNCTIONf():INTEGER;VARP:INTEGER;i=i+2;i=i+1;函数体、分程序、复合语句条件语句定义i为整形变量定义a为一维数组定义f为返回整形值函数;p为指向整形变量的指针变量;赋值语句,使i+2赋给Ii自增值1,i加1赋给I34种运算符:算术运算符:+-*/%++--关系运算符:====!=逻辑运算符:!&&||位运算符:~|^&赋值运算符:=及其扩展条件运算符:?:逗号运算符:,指针运算符:*&求字节数:sizeof强制类型转换:(类型)分量运算符:.-下标运算符:[]其它:()-注意:各种运算符混合使用,其优先级与结合方法是难点,可先预习。C语言程序设计第一章C语言概述C语言运算符丰富(附录C)C数据类型基本类型构造类型指针类型空类型void定义类型typedef数值类型字符类型char枚举类型enum整型浮点型单精度型float双精度型double短整型short长整型long整型int数组结构体struct共用体unionC语言程序设计第一章C语言概述C语言数据结构丰富§1.3简单的C程序介绍/*example1.1ThefirstCProgram*/#includestdio.hvoidmain(){printf(“Thisisacprogram.\n”);}C语言程序设计第一章C语言概述注释编译预处理主函数语句输出:Thisisacprogram.例1.1第一个程序Thisisacprogram.printf语句中的“\n”是换行符例1.2求俩个数的和/*example1.1calculatethesumofaandb*/#includestdio.h/*Thisisthemainprogram*/voidmain(){inta,b,sum;/*定义变量*/a=10;b=24;sum=add(a,b);printf(”sum=%d\n,sum);}/*Thisfunctioncalculatesthesumofxandy*/intadd(intx,inty){intz;z=x+y;return(z);}运行结果:sum=34函数语句预处理命令注释C语言程序设计第一章C语言概述printf语句中的“%d”是表示“十进制整数类型”C语言程序设计第一章C语言概述例1.3从键盘输入两个整数,输出其中较大的数#includestdio.hvoidmain(){intmax(intx,inty)inta,b,c;scanf(“%d,%d”,&a,&b);c=max(a,b);printf(max=%d,c);}intmax(intx,inty){intz;if(xy)z=x;elsez=y;return(z);}scanf语句中“&a”的含义是“取地址”输入:10,20输出:max=20声明部分,定义变量调用max函数,返回值赋给c定义max子函数,函数值、形参x、y为整型通过max函数将z值带回调用处C语言格式特点习惯用小写字母,大小写敏感不使用行号,无程序行概念可使用空行和空格常用锯齿形书写格式C语言程序设计第一章C语言概述main(){……………….…………………………..…………..……………….………………………….……………….………………..}main(){inti,j,sum;sum=0;for(i=1;i10;i++){for(j=1;j10;j++){sum+=i*j;}}printf(“%d\n”,sum);}优秀程序员的素质之一:使用TAB缩进{}对齐有足够的注释有合适的空行C语言结构特点函数与主函数程序由一个或多个函数组成必须有且只能有一个主函数main(),可以放在程序中任一位置程序执行从main开始,在main中结束,其它函数通过嵌套调用得以执行。程序语句C程序由语句组成用“;”作为语句终止符注释/**/为注释,不能嵌套不产生编译代码例:/*Thisisthemain/*ofexample1.1*/*/非法编译预处理命令C语言程序设计第一章C语言概述编辑链接编译执行§1.4C程序的上机步骤C程序开发步骤开始编辑编译连接执行有错?结果正确?结束有源程序file.c目标程序file.obj库函数和其它目标程序可执行目标程序无正确不正确file.exeC语言程序设计第一章C语言概述程序代码的录入,生成源程序*.c语法分析查错,翻译生成目标程序*.obj与其它目标程序或库链接装配,生成可执行程序*.exe源程序目标程序可执行程序内容程序设计语言机器语言机器语言可执行不可以不可以可以文件名后缀.c或.cpp.obj.exeTurboC集成开发环境配置要求UNIX,PC-DOS,MS-DOS,UCDOS操作系统硬盘容量约2M,448KRAM运行空间安装TurboC创建子目录Install若不是可安装盘,将文件拷贝到对应的目录下TC*.*INCLUDELIB*.*SYS*.*C语言程序设计第一章C语言概述进入TurboCD:\TCTC.exe主控菜单文件操作FILE:NewLoadSaveWriteto编辑操作EDIT:插入/修改块查找/替换编译链接COMPILELINKMAKE执行RUN退出TurboCAlt+xAlt+F,Q帮助HelpF1Ctrl+F1C语言程序设计第一章C语言概述基本操作:F10-----调用主菜单F2------存盘F3------打开F1------帮助信息Alt+F9------CompileCtrl+F9------RunAlt+F5------UserScreenAlt+X------退出Tc常用热键文本编辑:-------移动光标PgUp,PgDn------上下翻页Ctrl+PgUp,Ctrl+PgDn------文件首尾Home行首End行尾DdeleteInsertBkspace块操作:Ctrl+KB-------块开始标记Ctrl+KK--------块结束标记Ctrl+KC-------块拷贝Ctrl+KV--------块移动Ctrl+KY-------块删除Ctrl+KH--------块隐藏程序调试:F8-----StepoverF7-------TraceintoF4-----GotoCursorCtrl+F7--------AddWatchCtrl+F8------ToggleBreakpointCtrl+F2--------ProgramReset窗口操作:F5-----窗口缩放F6-----窗口切换C语言程序设计第一章C语言概述§课后作业预习“题解与上机指导”一书中P181~199页的14.3~14.10节P236页实验1教材P12:1.5、1.6、1.7、1.8题。注意:有关设计程序的作业,必须经过上机调试!C语言程序设计第一章C语言概述算法的概念简单算法举例算法的特性怎样表示一个算法第2章程序的灵魂——算法C语言程序设计第二章程序的灵魂——算法结构化程序设计方法C语言程序设计第二章程序的灵魂——算法程序包括的内容:数据结构:数据的类型和组织形式算法:操作步骤的描述NikiklausWirth提出:程序=数据结构+算法教材认为:程序=算法+数据结构+程序设计方法+语言工具和环境灵魂加工对象工具C语言程序设计第二章程序的灵魂——算法§2.1算法的概念为解决一个问题而采取的方法和步骤,就成为算法。例如:歌曲的乐谱,建造房子等。算法核心是解决“做什么”和“怎么做”的问题。P15页的例2.1,求1……5之积。可以有多种方法,一般采用简单和运算步骤少的。准确、高效计算机算法类