C语言程序设计西北大学信息学院计算机文化基础课教学课件第一章C语言简介第二章数据类型、运算符和表达式第三章语句与流程控制第四章数组第五章函数与程序结构第六章指针第七章结构体与共用体第八章文件概述第九章编译预处理C程序设计一、C语言的发展与计算机对话是从低级语言开始逐步发展起来的。第一章C语言简介高级语言FORTRAN语言ALGOL60语言COBOL语言BASIC语言PASCAL语言C/C++语言ADA语言PROLOG语言Java语言机器语言低级语言汇编语言它是使用最早的高级语言,广泛用于科学计算。一种交互式语言,由于它简单易懂,具有交互功能,成为微机上配置最广泛的高级语言。是面向问题的高级语言,它离硬件比较远,不宜用来编写系统程序。使用了十分接近于自然语言英语的语句,很容易理解,在事务处理中有着广泛的应用。第一个系统地体现了结构化程序设计概念的高级语言。移植力强,编译质量高,可直接访问硬件的高级语言。便于实现嵌入式应用的高级语言。一种逻辑程序设计语言,广泛使用于人工智能领域。面向对象程序设计语言。C语言是广泛流行的计算机高级语言,C语言已不仅用来编写系统软件,也可用来编写应用软件。以前操作系统及其它系统软件主要是用汇编语言来编写,由于汇编语言依赖于机器硬件,程序的可读性和可移植性都很差。ALGOL60(1960年)CPL语言(1963年)C语言的发展BCPL语言(1967年)B语言(1970年)C语言(1972-1973年)二、C语言的特点⑤编程限制少,程序设计自由度大。⑥可直接对硬件操作,C语言允许直接访问物理地址,能进行位操作。③数据类型丰富,提供了整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等数据类型。④具有结构化的控制语句。①语言简洁、紧凑,使用方便、灵活。②运算符丰富,适用的范围也很广泛。⑦生成目标程序质量高,程序执行效率高。⑧具有很好的可移植性。三、C语言的程序结构及特点main(){printf(Thisisacprogram.\n);}此程序的结果是输出下面的一行信息:例1Thisisacprogram.main()/*求两数之和*/{inta,b,sum;/*定义变量*/a=123;b=456;/*给变量赋值*/sum=a+b;printf(sumis%d\n,sum);/*输出结果*/}例2程序的功能是求两个整数的和,并将其输出。程序的结果是输出如下一行信息:例2sumis579例3main()/*主函数*/{intmax();/*函数说明*/inta,b,c;/*定义变量*/scanf(%d,%d,&a,&b);/*输入变量a和b*/c=max(a,b);/*调用max函数,将返回值赋给c*/printf(max=%d\n,c);/*输出c的值*/}intmax(x,y)/*max函数的定义,函数值为整型,x,y为形式参数*/intx,y;/*对形参x,y作类型定义*/{intz;/*定义max中用到的变量z*/if(xy)z=x;elsez=y;return(z);/*将z的值作为函数max返回值带回调用处*/}C函数从main()开始执行。变量定义和语句之后必须有一个分号(;)。一行内可写几个语句,一个语句可分写在多行。可以用/*……*/作注释。C语言没有输入输出语句。此程序的执行结果如下:10,20(输入10,20)max=20(输出c的值)一个函数是由函数的说明部分和函数体两部分组成。①函数的说明部分函数类型函数名函数参数形参类型形参intmax(x,y)intx,y;C程序是由函数组成的,每一个源程序至少包含一个main()函数,也可以包含一个main函数和若干个其它函数。因此,函数是C程序的基本单位。被调用的函数可以是系统提供的库函数,也可以是用户自定义的函数。②函数体(括在一对大括弧{------}中的部分)变量定义(inta,b,c;)函数体执行部分(由若干语句组成)※特例:空函数dump(){}四、源程序的执行过程源程序:用高级语言所提供的语句和函数写出的语句序列叫源程序。程序从输入和运行一般需如下几个步骤:编辑编译连接运行输入程序获得源程序机器码文件可执行文件f.cf.objf.exe从编辑到执行的过程示意图五、在TurboC下运行C程序的步骤1、在TurboC下运行C程序的步骤调用TurboC程序(TurboC的启动):在windows下:tc的运行和一般文件的运行方法相同(快捷方式、菜单方式、命令方式均可)在DOS提示符下:键入tc并按回车,即可运行TurboC编辑源文件:在TurboC窗口中,根据需要输入或者修改源文件。退出TurboC:按下“ALT+X”键,退出TurboC的集成环境,回到操作系统状态。编译源程序:按“F9”键可对当前打开的源文件进行编译。运行:按“F10”键,启动系统菜单,将光标移到“RUN”,按回车键。2、TurboC集成开发环境在TC中程序的执行过程如图编辑编译连接运行输入程序源程序机器码文件可执行文件f.cf.objf.exeALT+F9Ctrl+F9从编辑到执行的操作过程示意图TurboC2.0的初启屏幕如图FileEditRunCompileProjectOptionsDebugBreak/watchLine1Col1InsertIndentTabFillUnindentC:NONAME.CF1---HelpF5---ZoomF6---SwitchF7---TraceF8---StepF9---MakeF10---MenuEditMessageTurboC的主屏幕⑴文件菜单(File)LoadF3PickAlt-F3NewSaveF2WritetoDirectoryChangedirOSshellQuitAlt-X文件菜单选择项⑵编辑命令(Edit)⑶运行菜单(Run)⑷编译菜单(Compile)RunCtrl-F9ProgramresetCtrl-F2GotocursorF4TraceintoF7StepoverF8UserscreenAlt-F5运行菜单选项CompiletoOBJMakeEXEfileLinkEXEfileBuildallPrimaryCfileGetInfo编译菜单选项⑸工程菜单(Project)⑹选择项菜单(Options)CompilerLinkerEnviromentDirectoriesArgumentsSaveoptionsRetrieveoptions选择项菜单Includedirectories:C:\TC\INCLUDELibrarydirectories:C:\TC\LIBOutputdirectory:TurboCdirectory:C:\TCPickfilename:Currentpickfile:路径设置窗口ProjectNameBreakmakeonAutodependenciesClearProjectClearMessage⑺调试菜单(Debug)(8)断点/观测菜单(Break/watch)EvaluateCtrl-F4CallstackCtrl-F3FindfunctionRefreshdisplayDisplayswappingSourcedebugging调试菜单选择项AddwatchCtrl-F7DeletewatchEditwatchRemoveallwatchesTogglebreakpointCtrl-F8ClearallbreakpointsViewnextbreakpoint断点/监测菜单选择项参考第8页第二章数据类型、运算符和表达式一、C语言的数据类型整型字符型实型(浮点型)枚举类型数组类型结构体类型共用体类型单精度型双精度型指针类型空类型构造类型基本类型数据类型C语言中有以下几个基本数据类型:char(字符型)int(整型)float(单精度浮点型)double(双精度浮点型)其中:char、int、float、double是关键字。修饰符long一般指存储空间相对int型扩大一倍,而short一般指存储空间相对int型缩小一倍。但不同C编译系统具体规定是不同的。如:TurboC中的int与shortint所占用内存位数一样(都为16个二进制位)另外,还有4个修饰词可以出现在上面几个基本类型之前,从而改变原来的含义,它们是:short(短型)long(长型)signed(有符号)unsigned(无符号)shortint表示短整型。unsignedchar表示无符号字符型。longint表示长整型。unsignedshortint表示无符号短整型。例如:TurboC语言基本数据类型、字宽和范围表9.1基本数据类型、字宽和范围类型所占位数数的范围[signed]char8-128~127unsignedchar80~255[signed]int16-32768~32767short[int]16-32768~32767long[int]32-2147483648~2147483647unsigned[int]160~65535unsignedshort[int]160~65535unsignedlong[int]320~4294967295float32约6~7位有效数字double64约15~16位有效数字在IBMPCMS-C中,单精度范围:10-38到1038双精度范围:10-308到10308二、常量常量:程序中其值不发生变化的量。C语言中有符号常量整型实型十进制八进制(由数字0开头)十六进制(由0x或0X开头)常用形式(3.14159,-0.555,.666)指数形式(0.55e5,3.33E-3,4e+2(用单引号括起来的一个字符。如:'a','D')(用双引号括起来的一串字符。如:abcd)(用一个标识符代表一个常量)注意:'a'和a的区别数值常量字符常量字符串常量1、数值常量是通常使用的常数,包括整型和实型常量。C语言程序中可以使用十进制、八进制和十六进制来表示整型常量。在使用时不能有小数部分。十进制整型常量,由正、负号和0至9十个数字组成,没有小数部分。(1)整型常量int型32、345、12、-65、-32768、32767longint型234L、234567453l、32L、32l、-2147483648L、2147483647lunsignedint型345u、238U、65535uunsignedlongint型256ul、12345678UL、4294967295uL如:八进制整型常量:037u、0364L、0567453ul十六进制整型常量:0x1f、0x1FL、0xFul、0x10L②指数表示法:方法是在小数表示法后面加字母E(或e)表示指数。1e-20.5E1035.56E-37.e-2(都是double型常量)(2)实型常量实型常量就是我们日常使用的带小数的常数,也叫浮点数。在C语言中,只有十进制表示。它有两种表示形式:小数表示法和指数表示法。①小数表示法:它由整数和小数两部分组成,这两部分可以省略其中的一个部分,但不能同时都省略(小数点不能省略)。12.3535..689(都是double型常量)整型数:125,0125,0x125,-35实型数:3.14159,-555.6,45.8E-4,8.88e+18例1注意:指数部分可正可负,但必须是整数。在浮点数常量的后面用字母F(或f)表示float(单精度浮点)类型。如:1e-2f表示float型。如果在浮点数常量的后面不加字母,则表示是一个double(双精度浮点)型常量。2.1e-20.689(都是double型常量)而字母L(或l)表示longdouble(长精度浮点)型,如:3.2L表示longdouble型。如:e12,.e43,0.25e4.5,e等是错误的。注意:用指数形式表示的浮点数必须有尾数,指数部分必须是整数。字符常量是由一个字母或转义字符两边用单引号括起来表示,例如:'a'、'D'、'\n'等。字符常量在计算机内存放的值