C程序设计刘玉铭数学科学学院数学楼413东邮箱:Liuyuming@bnu.edu.cn电话:58802208,13611374641教材《C程序设计》清华大学出版社谭浩强主编。上机作业传至:“上机作业/学号姓名”每位同学上机时自己建立一个目录,目录名:“学号+姓名”服务器登录:用户名和密码都是“shuxue2008”第一章C语言概述1.1C语言发展历史1.2C语言的特点1.3简单的C程序介绍1.4C程序上机过程及步骤C语言发展历史冯.诺依曼结构:计算机运算器控制器存储器主机:I/O设备:键盘、显示器等中央处理器CPUC语言发展历史机器语言汇编语言高级语言面向过程面向对象程序设计语言的发展C语言发展历史用汇编语言编写的程序可以实现对计算机硬件的直接操作,其致命弱点是汇编语言程序对计算机硬件的依赖性高,可读性和可移植性很差;一般的高级语言虽然克服了汇编语言的一些不足,却难以实现对计算机硬件的直接操作;C语言发展历史产生过程1960Algol60,面向问题,离硬件远,不适合编写系统软件1963CPL语言,比ALGOL60离硬件近,但规模大,难实现1967BCPL语言,对CPL的简化1970B语言,更简化的BCPL,可编写系统软件(UNIX),但过于简单,功能有限1972-1973C语言,美国贝尔实验室。目的:UNIX操作系统。设计人:Ken.Thompson和Dennis.M.RitchieC语言发展历史C标准标准C:K&R合著《TheCProgrammingLanguage》:1978ANSIC:1983年87ANSIC:1987年1990年国际标准化组织(ISO)接受87ANSIC作为标准C语言发展历史目前流行的C语言编译系统MSC,TurboC,QuickC,……BorlandC++,TurboC++,……VisualC++,……面向过程的:面向对象的:面向对象的可视化:C语言特点1.语言简洁、紧凑、使用方便、灵活autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsignedunionvoidvolatilewhile32个关键字:(由系统定义,不能重作其它定义)C语言特点①if()~else~②for()~③while()~④do~while()⑤continue⑥break⑦switch⑧goto⑨return9种控制语句:C语言特点2.运算符丰富有13类共34种运算符,使用很灵活,可以构造多样表达式算术运算符:+-*/%++--关系运算符:====!=逻辑运算符:!&&||位运算符:~|^&赋值运算符:=及其扩展条件运算符:?:逗号运算符:,指针运算符:*&求字节数:sizeof强制类型转换:(类型)分量运算符:.-下标运算符:[]其它:()-C语言特点3.数据类型齐全C数据类型基本类型构造类型指针类型空类型void定义类型typedef数值类型字符类型char枚举类型enum整型浮点型单精度型float双精度型double短整型short长整型long整型int数组结构体struct共用体union标准的和用户定义的数据类型能满足各种编程需要C语言特点4.结构化语言便于编写结构化,模块化的程序顺序结构选择结构循环结构三种基本结构C语言特点5.程序执行效率高,可移植性好比汇编程序执行效率低0~20%,基本不需修改即可以移植到其他机器系统C语言特点6.比其他高级语言更接近机器语言C语言是中级语言(1)保持了高级语言的特征•便于识读记写和交流;•不必熟悉计算机内部结构和工作原理,便于非计算机专业人员使用。(2)兼备低级语言的特性•具有对计算机硬件的操作能力和基本单位、成分的操作能力,例如对地址、位的操作;•可包容汇编指令、调用汇编程序、调用系统功能及中断,实现汇编语言的大部分功能。C语言特点7.语法不太规范,自由度大,查错难度大从这个意义上讲,C语言有很大的不足,特别是在现今程序越来越庞大的时候,程序排错占据的工作量越来越大,在损失一定执行效率的情况下如果能大幅提高纠错能力,是更好的选择。简单的C程序介绍一、简单的C程序例子例1本程序输出一行信息:Thisisaprogram.#includestdio.hvoidmain(){printf(“Thisisaprogram.\n”);}程序说明:(1)stdio.h,是C语言的标准I/O库的头文件。(2)main表示主函数,函数体用`{`和`}`括起来“;”为语句结束标志。(3)printf为C语言的输出函数。简单的C程序介绍C语言程序是函数的组合体特殊的主函数——main()函数C语言程序必须有一个且只能有一个名称是main的函数,称为主函数。主函数是整个程序的组织者,它直接或间接协调组织其它函数按照一定的顺序工作,完成整体任务;C语言遵循“先定义后使用”的原则一般主函数在程序前,其他函数在后,但在使用前要声明后面的函数;C语言程序从main函数开始执行简单的C程序介绍函数的一般格式是函数返回值类型函数名(函数参数表){声明部分(变量定义,函数声明等)语句部分}简单的C程序介绍例2求两数之和。本程序输出为:sumis579#includestdio.hvoidmain()/*主函数*/{inta,b,sum;/*变量定义*/a=123;b=456;/*变量赋值*/sum=a+b;printf(“sumis%d\n”,sum);/*输出*/}程序说明:(1)/**/是注释,可出现在程序中任何位置(2)第二行是变量定义部分,变量在使用前需要先定义(3)%为输入输出格式字符串。简单的C程序介绍例3.将上题中求和的功能用一函数sum()完成,在主函数中调用。#includestdio.hintsum(inta,intb){ints;s=a+b;return(s);}voidmain(){intx,y,z;printf(Entertwonumbers:\n);scanf(%d%d,&x,&y);z=sum(x,y);printf(“%d+%d=%d”,x,y,z);}#includestdio.hfloatmax(floatx,floaty);voidmain(){floata,b,c;/*输入3个实数*/printf(“Input3realnumbers:\n”);scanf(“%f%f%f”,&a,&b,&c);/*打印最大者*/printf(“Thebiggestis%f”,max(max(a,b),c));}floatmax(floatx,floaty){if(xy)return(x);elsereturn(y);}例4.求3个实数的最大值简单的C程序介绍二、C程序的组成C程序函数组成由若干函数说明部分函数体函数类型说明函数名函数形参形参类型说明变量定义部分执行部分(函数首部)说明:1.C程序中必有且仅有一个main()函数,程序从main()开始执行,并且在main()中结束。2.每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。3.C语言的注释符是以“/*”开头并以“*/”结尾的串。在“/*”和“*/”之间的即为注释。(补充)4.书写程序时应遵循的规则从书写清晰,便于阅读,理解,维护的角度出发,在书写程序时应遵循以下规则:(1)语句的不同单词间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。(2)最好一个说明或一个语句占一行。(3)用{}括起来的部分,通常表示了程序的某一层次结构。{}一般与该结构语句的第一个字母对齐,并单独占一行。习惯用小写字母,大小写敏感不使用行号,无程序行概念可使用空行和空格常用锯齿形书写格式#includestdio.hvoidmain(){intx,y;/*提示输入x,y:*/printf(“Pleaseinputxy:”);scanf(“%d%d”,&x,&y);/*比较x,y的大小,并输出结果*/if(xy)printf(“%d%d\n”,x,y);elseprintf(“%d=%d\n”,y,x);/*程序结束*/returno;}优秀程序员的素质之一:使用TAB缩进{}对齐有足够的注释有合适的空行C程序的上机运行步骤编辑链接编译执行程序代码的录入,生成源程序*.c语法分析查错,翻译生成目标程序*.obj与其它目标程序或库链接装配,生成可执行程序*.exe从设计C语言源程序到得到可以执行的程序,通常要经过以下几步:C程序的上机运行步骤开始编辑编译连接执行有错?结果正确?结束有源程序file.c目标程序file.obj库函数和其它目标程序可执行目标程序file.exe无正确不正确作业上机习题1.5、1.6