C语言教案(新).doc_第1页
C语言教案(新).doc_第2页
C语言教案(新).doc_第3页
C语言教案(新).doc_第4页
C语言教案(新).doc_第5页
已阅读5页,还剩155页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

参考书:1C程序设计语言(第2版新版)作者: (美)BRIAN W.KERNIGHAN, DENNIS M.RITCHIE 译者:徐宝文 李志出版社: 机械工业出版社2C语言大全(第四版)作者: (美)HERBERT SCHILDT 译者:王子恢 戴健鹏 等出版社: 电子工业出版社建议准备一本C语言学习的笔记本!C语言课件目录第一章 C语言特点和上机操作3一、课程导入:3二、课程内容:3第二章 C语言的语法基础8一、标识符:9二、基本数据类型:10(一)常量:10复习:12(二)变量:14三、内存的概念:15四、格式化输入和输出函数:16复习24五、运算符:26要注意的问题:32小结38第三章 程序控制结构41一、顺序结构:41二、分支语句:要熟悉流程图的含义42(1)、条件语句:42三、循环结构:49(一)、for循环50(二)、while循环:52(三)dowhile循环54四、break 和continue 语句55(一)、break语句55(二)continue语句:56五、goto语句:57小 结58第四章 构造数据类型60一、数组:60数组,根据下标数量的不同,可以从1维到N维60(一)一维数组:60(二)、一维字符数组:65(三)二维数组73(四)补充:二维字符数组76(五)数组的应用:(重点,必考)78二、结构体81三、typedef的用法:89四、位段:也称为“位域“91五、共用体:也称为联合体94六、枚举类型:96小结:99第五章 指 针101一、基本概念:101二、指针的定义:101三、指针的运算:106三、指针与数组:109四、指针与字符串:112五、指针和二维数组:115六、指向指针的指针:120七、指向结构体的指针:123八、指向枚举型的指针变量:125第六章 函 数126一、用户自定义函数:126二、库函数:130三、函数的嵌套调用和递归调用:135四、局部变量和全局变量:136五、变量的存储类型:141六、外部函数和内部函数:144七、预编译处理:145第七章 数组、指针和函数的应用152一、传值和传地址调用:152二、指向函数的指针:152三、带参数的main()函数:152四、链表:152第八章 文 件153一、文件:153二、缓冲文件系统和非缓冲文件系统:153(一)、缓冲文件系统153(二)、常见的几个文件函数:154第一章 C语言特点和上机操作一、课程导入: 1、写一个最经典的C语言程序“HELLO WORLD”,然后运行演示结果; 2、介绍C语言的起源、发展; 3、解释:源程序,编译,目标程序的概念和整个程序运行的流程。 4、解释“HELLO WORLD”程序的构成; 5、讲解最基本的编译器的使用。二、课程内容:1、 经典的C语言程序:“HELLO WORLD”:#include stdio.hmain() printf(Hello, worldn); getch();2、 C语言的起源、发展: C语言的发展历史 :C语言的发展颇为有趣。它的原型ALGOL 60语言。 1963年,剑桥大学将ALGOL 60语言发展成为CPL(Combined Programming Language)语言。 1967年,剑桥大学的Matin Richards 对CPL语言进行了简化,于是产生了BCPL语言。 1970年,美国贝尔实验室的Ken Thompson将BCPL进行了修改,并为它起了一个有趣的名字“B语言”。意思是将CPL语言“煮干”,提炼出它的精华。并且他用B语言写了第一个UNIX操作系统。 而在1973年,B语言也给人“煮”了一下,美国贝尔实验室的D.M.RITCHIE在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。 1978年Brian W.Kernighian和Dennis M.Ritchie出版了名著The C Programming Language,从而使C语言成为目前世界上流行最广泛的高级程序设计语言。 1988年,随着微型计算机的日益普及, 出现了许多C语言版本。由于没有统一的标准,使得这些C语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准委员会(ANSI)为C语言制定了一套ANSI标准, 成为现行的C语言标准 。 1989年ANSI 的C标准被称为:C89。1999年制定的标准被称为:C99。3、 几个概念:程序:计算机要完成一个任务时,必须执行一些列的指令。而程序就是指令的集合,指令集在程序运行时,决定计算机如何对用户的输入做出反应。计算机语言: 计算机语言就是用来编写计算机程序的,一组完整的符号化的规则。计算机语言分经历了一个由低级向高级发展的过程。C语言属于高级语言,也有专业书籍将C语言划分成中级语言。源程序:用户用编程语言写的可以阅读的程序文本。目标程序:由源程序转化而来的,机器可以直接阅读的机器代码。编译:将源程序翻译成目标程序(二进制代码)的过程。连接: 将目标程序和C的库函数连接成可执行文件的过程。(课本P6,图1.1)4C源程序的总体结构: 注意:c语言是有大小写区别的!例1:#include stdio.h / 包含头文件main() printf(Hello, worldn); 说明:本程序的功能是输出一行信息:Hello, world其中:1、 main()表示“主函数”。每个C语言程序都必须有一个main()函数,它是每一个C语言程序的执行起始点(入口点)。main()表示“主函数”main的函数头。2、 用括起来的是“主函数”main的函数体。main函数中的所有操作(或:语句)都在这一对之间。也就是说main函数的所有操作都在main函数体中。3、 注意:每条语句都用“;”号,表示语句结束。4、 “主函数”main()中只有一条语句:printf(Hello, worldn);,printf()函数,是C语言的库函数,其功能是用于程序的输出(显示在屏幕上)。本例用于将一个字符串Hello, worldn的内容输出。即在屏幕上显示:Hello, world._ (回车/换行)例2:#include stdio.h / 包含头文件main() /* 计算两数之和 */ int a,b,sum; /* 这是声明变量,c语言中的变量必须先声明后使用 */ a=123;b=456; /* 为a,b赋值 */ sum=a+b; /* 将a和b的和,赋值给sum */ printf(“sum=%dn”,sum); /* 输出sum的值 */说明:本程序计算两数之和,并输出结果。1、 同样此程序也必须包含一个main函数作为程序执行的起点。之间为main函数的函数体,main函数所有操作均在main函数体中。2、 /* */括起来的部分是一段注释,注释只是为了改善程序的可读性,在编译、运行时不起作用(事实上编译时会跳过注释,目标代码中不会包含注释)。注释可以放在程序任何位置,并允许占用多行,只是需要注意“/*”、“*/”要匹配,不要嵌套注释。3、 int a,b,sum;是变量声明。声明了三个具有整数类型的变量a,b,sum。C语言的变量必须先声明再使用。4、 a=123;b=456;是两条赋值语句。将整数123赋给整型变量a,将整数456赋给整型变量b。a,b两个变量分别为123,456。注意这是两条赋值语句,每条语句均用“;”结束。也可以将两条语句写成两行,即:a=123;b=456;由此可见C语言程序的书写可以相当随意,但是为了保证容易阅读要遵循一定的规范。5、 sum=a+b;是将a,b两变量内容相加,然后将结果赋值给整型变量sum。此时sum的内容为579。6、 printf(“sum=%dn”,sum);是调用库函数输出sum的结果。%d为格式控制表示sum的值以十进制整数形式输出。7、 程序运行后,输出(显示):sum=579_ (回车/换行)小结:C程序结构1、 C程序由函数构成(C是函数式的语言,函数是C程序的基本单位)一个C源程序至少包含一个main函数,也可以包含一个main函数和若干个其它函数。函数是C程序的基本单位。l 被调用的函数可以是系统提供的库函数,也可以是用户根据需要自己编写设计的函数。C是函数式的语言,程序的全部工作都是由各个函数完成。编写C程序就是编写一个个函数。l C函数库非常丰富,ANSI C提供100多个库函数,Turbo C提供300多个库函数。2、 main函数(主函数)是每个程序执行的起始点一个C程序总是从main函数开始执行,而不论main函数在程序中的位置。可以将main函数放在整个程序的最前面,也可以放在整个程序的最后,或者放在其它函数之间。3、 C程序书写格式自由l 一行可以写几个语句,一个语句也可以写在多行上。l 每条语句的最后必须有一个分号“;”表示语句的结束。4、 可以使用/* */对C程序中的任何部分作注释注释可以提高程序可读性,使用注释是编程人员的良好习惯。5、上机步骤: 1、运行一个语言程序的一般过程: (1)启动TC,进入TC集成环境。(2)编辑(或修改)源程序。(操作)(3)编译。如果编译成功,则可进行下一步操作;否则,返回(2)修改源程序,再重新编译,直至编译成功。(4)连接。如果连接成功,则可进行下一步操作;否则,根据系统的错误提示,进行相应修改,再重新连接,直至连接成功。(5)运行。通过观察程序运行结果,验证程序的正确性。如果出现逻辑错误,则必须返回(2)修改源程序,再重新编译、连接和运行,直至程序正确。(6)退出TC集成环境,结束本次程序运行。2、几个常用的快捷键:退出Turbo C: 1)菜单法:File | Quit(先选择File主项,再选择并执行Quit子项) 2)快捷键法:Alt “X”(先按下Alt键并保持,再按字母键,然后同时放开)保存源文件:F2只编译程序:F9程序的编译、连接和运行:CTRL F9查看程序运行结果:ALT F5补充: 使用断点:选择需要添加断点的语句,然后按CTRLF8添加watch窗口:CTRLF7,然后输入要观察的表达式3.win-tc使用的介绍:注: 所有的C语言的程序的编辑,都必须是在英文输入法状态下进行的!参考答案:#include stdio.h#include conio.hmain() float S ,pi ,R ,V; pi =3.1415926; printf(input the radius (R); scanf(%f,&R); V=4*pi*R*R*R/3; S=4*pi*R*R ; printf(S=%f,V=%f n , S , V ); getch();第二章 C语言的语法基础重点问题:1、 scanf()函数的具体使用:修饰符、如何读入数据、读入数据的时候出现的一些特殊情况;2、 printf()函数的具体使用:修饰符号的作用、返回值的类型(以后讲)、输出为字符和字符串的时候的一些 特殊情况;3、 多种特殊的修饰符号的使用;课后的练习题目;一、标识符: 共三类:关键字、预定义标识符、用户标识符1、关键字:由小写字母和下划线组成。 C语言规定的具有特定意义的字符串。(见课本P8)2、预定义标识符: 由库函数和编译预处理命令组成。3、用户标识符:由字母,数字,下划线组成的,用来标识变量名、符号常量名、函数名、数组名、类型名等实体(程序对象)的有效字符序列,由用户自定义。【具体要求】:1) 标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。例如:合法的标识符:sum ,average,_total,Class,day,stu_name,p4050不合法的标识符:M.D.John,$123,#33,3D64,ab2) 大小写敏感。C程序员习惯:变量名小写,常量名大写,但不绝对,如windows编程,应当使用匈牙利表示法(大小写混用,每个单词词首第一个大写,其余小写,如WinMain)。例如:sum不同Sum。BOOK不同book。3) ANSI C没有限制标识符长度,但各个编译系统都有自己的规定和限制(TC 32个字符,MSC 8个字符)。例如:student_name,student_number 如果取8个,这两个标识符是相同的。4) 标识符不能与“关键词”同名,也不与系统预先定义的“标准标识符”同名。5) 建议:标识符命名应当有一定的意义,做到见名知义。二、基本数据类型:(见课本P10,图2.1) 基本类型:整数、字符型、实数(浮点型和双精度型)、空类型(void)各种数据类型所占用的内存字节和取值范围,(见课本P14,表2.5) 构造类型:数组、指针类型、构造类型、公用体、枚举、用户自定义类型(一)常量: 程序运行过程中,值不能被改变。1、整型常数的表示方法三种形式:(+/-)a、十进制。例如123,-456,0。b、八进制。以0开头,后面跟几位的数字(0-7)。例如:0123=(123)8=(83)10;-011=(-11)8=(-9)10。c、十六进制。以0x开头,后面跟几位的数字(0-9,A-F)。例如:0x123=291,-0x12=-18。main() printf(%dn, 0xff); getch();运行结果:225main() printf(%xn, 0xff); getch();运行结果:ffmain() printf(%on, 0xff); getch();运行结果:377【整型常量后可以用】:u或U明确说明为无符号整型数l或L明确说明为长整型数.2、实数常量:实数(浮点数)有两种表示形式:a、十进制小数形式。由数字,小数点组成(必须有小数点)。例如:.123、123.、123.0、0.0b、指数形式。格式:a E n例如:123e3、123E3都是实数的合法表示。#include stdio.hmain() printf( %fn , 2.01 e 2 ) ; getch();运行结果:0.020100注意:字母e或E之前必须有数字,e后面的指数必须为整数。例如:e3、2.1e3.5、.e3、e都不是合法的指数形式。【规范化的指数形式】:在字母e或E之前的小数部分,小数点左边应当有且只能有一位非0数字。用指数形式输出时,是按规范化的指数形式输出的。例如:2.3478e2、3.0999E5、6.46832e12都属于规范化的指数形式。实型常量都是双精度,如果要指定它为单精度,可以加后缀f(实型数据类型参看实型变量部分说明)。复习:i. C语言的基本组成结构;ii. 标识符的组成;iii. 八进制,十六进制的表示方法;iv. 实数的两种表示方式;3、字符型常量:a、用一对单引号括起来的单个字符。例如: A , t#include stdio.hmain() printf ( %cn , a ) ; getch();运行结果:ab、用该字符的ASCII码值,表示的字符常量。例如: 十六进制的0X41,表示A。c、以反斜杠“” 开头,后边跟特定的单个字符或数字,并用单引号修饰来表示字符常量。例如: n 表示换行;#include stdio.hmain() printf(%dn, n); getch();运行结果:104、字符串常量: 由双引号括起来的若干个字符,构成了字符串常量。字符串所占用的内存的大小为,其串长加1。例如:”abc123!”注:字符串常量,只能赋值给字符数组或字符指针。5、符号常量: 用户定义的,用一个标识符来代表一个常量。一般用大写字母表示。a、利用宏定义:例如: #define PI 3 其中,PI等价于数值3#include stdio.h#define PI 3main() printf(%dn, PI); getch();运行结果:3注: 宏定义后边不能加注释,也无需使用分号作为结束标志。 错误: # define PI 3.14 /* 圆周率*/ 其中,PI等价于“3.14 /* 圆周率*/”b、用const定义的常量:例如:const int MAX1000; 将符号常量MAX定义为整型,值为1000。#include stdio.hmain() const int max = 10 ; max=20; /出错,CONST修饰的就成了常量,不能修改它的值。 getch();(二)变量: 程序运行过程中,值可以被改变的量。 变量的值通过两种途径得到:直接和间接。直接的方式:利用常量对变量进行赋值;间接的方式:用另外一个变量对其进行赋值。注:C语言里,所有的变量都遵循先定义后使用的原则。1、 变量定义的格式: 数据类型关键字 ;例如: int a , b , c ; 可以一次定义多个同类型的变量,每个变量将用逗号隔开,定义语句以分号结束。2、变量的初始化: 例如: int a10 , b10 ;/ 初始化 等价于: int a, b ; ab10; / 赋初值 错误:int ab10; 3、各种类型的变量的取值范围:见课本P14 使用变量的时候,要明确每个变量的取值范围,否则容易出错。 如: int a=32768; / int变量a,的取值范围超过其最大正整数; char b128; /同理注: char 类型变量有两种不同的表示方式,一种是采取字符的形式,另外一种可以等价为某个整数。 无论是char还是unsigned char ,其表示的数的集合是一样的。main() char a; int b; for(b=-128;b128;b+) a=b; printf(%c,a) ; printf(%d,b); getch();main() unsigned char a; int b; for(b=0;b2; printf(%dn,a); getch(); 运行结果:0或main() int a ,b ; a=12; printf(%dn,a); getch(); 运行结果:14、逻辑运算符: 逻辑运算的结果也只有0和非0两种,0表示“假”,非0表示“真”。例如:1、main() int a ,b ; a=(12)&(23); /两个表达式都为真,结果才为真 printf(%dn,a); getch(); 运行结果:12、main() int a ,b ; a=(12); /任意一个表达式为真,结果就为真 printf(%dn,a); getch(); 3、非操作符,使得真与假互换!main() int a ,b ; a=!(2c ? 1 : 0; printf(%dn,a); getch(); 运行结果:02、应该注意的地方:见课本P33 数据类型优先级的问题6、赋值运算符:1、普通赋值运算符:int a ; a=10;2、复合赋值运算符: main() int a=1 ,b=2 ; a+=b; /相当于 a=a+b; printf(%dn,a); getch(); 运行结果:3要注意的问题:一、 赋值中的隐式强制类型转换:当赋值号左右两边的数据类型不一致但都是数值型时,系统将自动把右边数值的类型,转化成左边数值的类型,然后再进行赋值操作。类型转化的总体规则:A、 占内存字节数少的数值,赋值给占内存字节数多的变量时:(小变大)变量的值 = 数值的大小,但是二进制形式要扩展。B、 占内存字节数多的数值,赋值给占内存字节数少的变量时:(大变小)变量的值,将发生变化。变化规律为:1、实数型数据赋值给整数型变量:将把实数型变量的小数部分截去,同时,只保留实数型数值的低字节部分。例如:#include main() int a ; a=32768.1; printf(a=%dn,a);运行结果:a=-327682、整形数据赋值给实型变量: 此时数值大小不变,但是将以浮点型数据存储到变量中。例如:#include main() float a ; a=3; printf(a=%fn,a);运行结果:a=3.0000003、整型、字符型数据赋值给不同类型整型变量、字符变量:(1)、无符号型与有符号型的赋值:#include main() unsigned int a ; a=32768; printf(a=%dn,a); / 按照有符号整型输出; printf(a=%un,a); /按照无符号整型输出;运行结果:a= -32768 a= 32768#include main() unsigned int a ;int b; b= -1; a=b; printf(a=%un,a); getch();(2)无符号类型和有符号类型之间的赋值:二、多种类型的数据混合运算产生的类型转换:见课本P30利用sizeof()函数可以进行测试!main() printf(%d,sizeof(1+1.2); getch();main() float a=10.0 ; printf(%dn,sizeof(1+

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论