资源预览内容
第1页 / 共84页
第2页 / 共84页
第3页 / 共84页
第4页 / 共84页
第5页 / 共84页
第6页 / 共84页
第7页 / 共84页
第8页 / 共84页
第9页 / 共84页
第10页 / 共84页
亲,该文档总共84页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
C程序设计第章第章吉林师范大学 谭振江吉林师范大学 谭振江第1章 C语言概述 “高级语言”汇编语言:优点:可以充分发挥机器硬件的功能,并提高质量。缺点:必须熟悉机器的指令系统,而指令系统又是和具体机器的内部结构密切相关的,所以所编写的程序依赖于计算机硬件,可读性和可移植性比较差。一般高级语言:优点:可读性和可移植性比较好。缺点:难以对硬件进行操作,如内存地址、位操作等。 1.1 介绍 :C语言:具有一般高级语言的特性,也具有汇编语言的优点,所以有人称为“中级语言”高级语言有的: 高级语言没有的:算术运算关系运算逻辑运算位运算单目、三目运算复合运算1、语言简洁、紧凑,使用方便、灵活。32个关键字、9种控制语句。2、运算符丰富 34种运算符3、数据类型和数据结构丰富。基本类型(整型、字符型、 实型)构造类型(数组、结构体、共用体)指针、文件、空类型数据结构(链、表、树、栈等)1.2 C语言的特点4、具有结构化控制语句5、语法不严格松散结构,即语法检查不严格,编程时必须控制好。6、C语言允许直接访问物理地址,能进行位操作。7、目标代码质量高,程序执行效率高。8、输入输出采用函数而无输入输出语句,可移植性好1.3 用C库函数组装程序 用库函数必须注意包含相应的头文件 #include #include #include 1.4 程序格式和特点1、main()函数必须有且唯一 2、函数是C语言程序的基本单位3、大小写敏感4、无行概念(1)、语句以分号结束 (2)、以号开头的编译预处理语句无分号(3)、/*/加在C语言任何部分作注释说明采用小写,大写有特殊意义(宏,常量等)1.5 程序执行从main函数开始Turbo C 是一个集成环境,编辑、编译、连接、执行。1、源程序扩展名.c2、Turbo C 的使用TC 选择工作目录 建立工作环境 建立工作环境 F9编译、连接。运行Alt+R.3、建立工作环境例题 例1例3讲解、说明上机题:1、建立一个自己的工作环境2、熟悉Turbo C环境3、输入并调试运行例1-例34、自己编写C程序 习题1.5、1.6第2章 数据描述和基本操作 程序 2.1 C的数据类型 :对数据的描述 (数据结构) 对操作的描述 (算法) 1、不同的数据占用的空间不同2、对应的运算不同数据类型(P38 )2.2 基本数据类型 :1、整型 shout 2字节int 机器字长(2字节) -215(215-1)long 4字节2、无符号类型只对整型;也包含字符型,存放正数的范围扩大一倍Unsigned 整型 x;2.2 基本数据类型 :3、实型 float 单精度 4字节double 双精度 8字节long double 长双精度 16字节2.2 基本数据类型 :4、字符型存贮形式,按ASCII码值;占一字节;与整型通用,相当一个字节整数。 2.2 基本数据类型 :5、类型长度运算符 sizeof(类型 )用途:测试动态分配存贮空间 例如 Asizeof(int); 2.3 常量和变量 :1、常量(1)、数值常量整型常量实型常量十进制 自然表示八进制 零打头十六进制 ox打头指数形式 E(e)前面有数,后 面是整数小数形式 .必须有“.”(2)、字符型常量用单引号包围的单一字符 a A字符常量没有结束标志(3)、字符串型常量用双引号包围的0个或多个字符序列 “china” 有结束标志(4)、特殊常量(一)符号常量 如:宏定义#define PI 3.14(二)转义字符(换码序列) 字母 表示动作见P(48)2、变量(1)、变量的定义 int x,y;先定义每个变量被指定为一确定类型便于编译系统检查 如 a%b(2)、变量标识符C语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须是字母或下划线。用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列。保留关键字预定义标识符用户自定义(3)、变量的初始化定义变量的同时给变量赋值如:int x=3,y=5;2.4 表达式运算 :1、说明例如 表达式 b=(a=x)*5运算符的功能与运算量的关系优先级结合方向结果类型2、算术运算符 双目运算符5%3=2 -5%3=? 5%-3=?、/、(模运算符或求余运算符)a%b 这里a、b必须是整型数5/3=1 -5/3=-1(-2)舍入的方向不因定,“向零取整原则”符号同左边的操作数3、算术表达式用算术运算符和括号将运算对象(也称操作数)连接起来,符合C语法规则的式子称C算术表达式。如:a*b/c-1.5+a同级时“从左到右”的结合原则4、复合的赋值运算+=、-=、*=、/=、%=、=、while(c=getchar()!=EOF)putchar(c);例题分析:例2 打印ASCII码0-255的字符。第6章 数组6.1 一维数组的定义和引用 :1 定义类型说明符 数组名常量表达式如 int a10;说明: (1)数组名(2)用方括号(3)数组长度,元素个数(4)不能含变量数组:是有序数据的集合,数组中的元素应是同一类型。2 引用先定义,后使用的原则C规定:逐个引用数组元素,不能一次引用整个数组数组元素的表示形式:数组名下标规定:下标是整型常量或整型表达式如 a5 或 a2*3等3 初始化(1)在定义数组时对数组元素赋以初值规定:只有静态存贮数组和外部存贮数组才能初始化static -静态 extern-外部(2)只给部分元素赋值(3)使数组中全部元素为0(4)在对全部数组元素初始化时,可以不指定数组 长度。6.2 二维数组的定义和引用 :1 定义类型说明符 数组名常量表达式 常量表达式如 int a34;是特殊的一维数组存贮顺序:按行存贮,多维数组同理2 引用数组元素的表示形式:数组名下标下标如 a00 或 a01等3 初始化6.3 字符数组 :用来存放字符数据的数组是字符数组,字符数组中每个 元素存放一个字符。1 定义类型说明符 数组名常量表达式如:char a10;int a10;2 初始化static char c5=c,h,i,n,a;注(1)如果字符个数大于数组长度则语法错(2)如果字符个数小于数组长度则将字符赋给数组前 面的元素,其余元素为空格(3)字符个数等于数组长度时可以省略数组长度3 引用可以引用字符数组中的一个元素,得到一个字符。4 字符串和字符串结束标志字符数组长度:实际长度0;有效长度字符串结束标志 0表示“china” 共有5个字符,但占6个字节可以用字符串常量来初始化字符数组Static char c=“china”;也可写成static char c=“china”;在C中将字符串作为字符数组来处理,为了测定字符串 的实际长度0作为结束标志。5 字符数组输入、输出(1)getchar()/putchar()(2)用格式符%c输入、输出(3)将整个字符串一次输入、输出,用格式符%s如Static char c=“china”;Printf(“%s”,c);注(1)输出字符不包括结束符0;(2) 用%s时输出项是数组名;(3) 长度大于实际长度时也到、0结束;(4)用scanf函数输入一个字符串,利用一 个scanf函数输入多个字符串时,以空格 分隔。static char c6;scanf(“%s”,c);printf(“%s”,c); 所以一维字符数组可以看作是“字符串变量”6 字符串输入、输出(1)gets(str)输入一个字符串到字符数组(2)puts(str)可以包含转义字符,如0,n等7 字符串函数 #include (1)拷贝 strcpy(str1,str2);目的 源注:str1长度str2长度str1是数组名形式,str2可以是字符串常量,不能用赋值 语句将字符串常量或字符数组赋给一个字符数组。如:str1=“china”;str1=str2;(2)字符串连接strcat(str1,str2);目的 源注:作用是把字符2连到字符1后面,结果放在字符数组 1中,所以字符数组1必须足够大,初始化时不能省略长 度;连接时第一个0取消。(3)字符串比较strcmp(str1,str2);(4)测试字符串长度函数strlen(str)(5)将字符串中大写字母转成小写字母函数strlwr(str)(6)将字符串中小写字母转成大写字母函数 strupr(str)第8章 模块化程序设计8.1 函数定义:在C中子程序的作用是由函数来完成的,使用的角度函数有两种(1)系统函数(2)用 户定义函数;从函数的形式上分(1)无参函数(2 )有参函数格式: 函数类型 函数名(形式参数)函数体; 模块化设计;结构化编程。说明:函数类型-返回值的类型如:float aver(成绩表)void-无返值 main() 就应是void类型默认时为int型形参: (int a,int b,float r)或 (a,b,r)int a,b;float r;函数类型 函数名() 称为“空函数”8.2 函数参数和函数值: 1、形式参数和实际参数定义函数时函数名后面括号中的变量形参调用函数时函数名后面括号中的表达式实参通过函数调用使两个函数中的数据发生联系说明:(1)形参变量在函数调用前无分配存贮空间(2)实参可以是常量、变量、表达式或数组名(3)在被定义的函数中,必须指定形参类型(4)实参和形参类型应一致,否则类型不匹配错误(5)形参和实参间的传递是单向的“值传递”,不同单 元。2、函数的返值(1)函数的返值是通过return语句获得的,return后 面可以是一个表达式。(2)函数值的类型,在定义函数时指定函数值类型, 如果不指定,按整型处理,函数类型决定返值类型。(3)如果被调函数中没有return语句,则返值不确定 。(4)如果不带回值,应将函数定义为void类型。8.3 函数的调用:1、函数调用的一般形式函数名(实参表列);说明:对实参表的求值顺序并不是确定的,一般是从右至 左,这种情况在printf函数中也同样存在如:i=2;Printf(“%d %dn”,i,+i);结果:3 32、函数的调用方式函数在程序中出现的位置;(1)函数语句(2)函数表达式(3)函数参数3、被调函数的说明在一个函数中调用另一个函数所具备的条件是:(1)被调函数是已经存在的函数(库函数、自定义)(2)如果是库函数则 #include 命令相关头文件(3)如果是用户自定义函数,在主调函数中对被调函数声 明:函数类型 函数名(参数表);特例:(1)函数的返值是整型或字符型(2)被调函数的定义在主调函数之前(3)在所有函数定义之前,说明了函数类型8.4 函数的嵌套调用:关系:自身可调用,相互之间可调用,即在调用一个函 数的过程中,又调用另一个函数。如图 8.5函数1函数2函数3例8.6 P1558.5 函数的递归调用:1、直接递归2、间接递归函数A函数A函数B8.6 数组作为函数参数:数组元素作参数同变量相同,数组名作为参数时传 递整个数组。当用数组名作函数参数时,实参和形参都应用数组 名(或指针变量)。例8.11 P165说明(1)主调函数和被调函数分别定义数组(2)实参数组和形参数组类型应一致(3)实参数组和形参数组大小可以不一致,C编译对形参数 组大小不作检查,只是将实参首址传递给形参数组
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号