C语言程序设计 课件_第1页
C语言程序设计 课件_第2页
C语言程序设计 课件_第3页
C语言程序设计 课件_第4页
C语言程序设计 课件_第5页
已阅读5页,还剩137页未读 继续免费阅读

下载本文档

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

文档简介

主讲教师:陈美莲C语言程序设计主讲教师:陈美莲C语言程序设计课程安排

总课时72,其中理论36学时,实验36学时

课程基本要求

1.了解基本算法2.了解C语言的数据类型、运算符与表达式的使用方法。3.熟练三种基本设计语句编程。4.熟练使用数组编程。5.熟练函数的定义和设计。6.了解指针的运算与使用。

2课程安排总课时72,其中理论36学时,实验36学时2教学方法及要求1.课堂教学

采用大屏幕投影仪授课,操作示范。要求:认真听课、作笔记、遵守课堂纪律。2.实验课

培养实际操作能力、自学能力。要求:遵守机房规则。独立完成各个实验(期未要进行上机考试)。3.课后练习

每章交一次作业、上机前预习、争取多上机

4.成绩评定

根据理论考试、上机操作和平时成绩评定。3教学方法及要求1.课堂教学

采用大屏幕投影仪授课机位安排及机房清洁卫生1.换鞋上机,对号入座

要求:按学号顺序,固定机位。学习委员填写机位表3份,交任课教师、实验室各一份。

注意:不要穿太昂贵的鞋上机。2.为防止病毒,严禁自带磁盘上机

要求:磁盘集中保管,专人负责(上机发磁盘,下课收磁盘)。3.保持机房清洁

要求:每天下午搞一次清洁,每周大搞一次。4机位安排及机房清洁卫生1.换鞋上机,对号入座4目录1.C语言概述2.数据类型、运算符与表达式3.顺序设计4.选择结构设计5.循环结构设计6.数组的定义和引用7.函数的定义和调用5目录1.C语言概述58.预处理命令9.指针的使用10.结构体与共同体11.位运算12.文件的操作68.预处理命令6第一章C语言概述1.1C语言出现的历史背景汇编语言编写的程序太依赖硬件,程序的可读性和移植性都差,C语言既有高级语言的特点又有低级语言特点.C语言是在B语言中发展起来的.1960ALGOL语言

B语言,开发出UNIX系统(贝尔实验室)

C语言7第一章C语言概述1.1C语言出现的历史背景7C语言开始被人们所接受,并开始流行.C语言有各种不同版本:TURBOC,BORLANDC,QUICKC,MICROSOFTC.8C语言开始被人们所接受,并开始流行.81.2C语言的特点1、语言简洁,使用方便。32个关键字、9种控制语句,书写形式自由。2、运算符丰富。有34种运算符,包括算术、逻辑、逗号运算、移位运算等等。3、数据结构丰富。有整型、实型、字符型、数组类型,指针类型、结构类型、共同体类型等等。4、具有结构化的控制语句,函数模块化。5、允许直接访问物理地址,进行位操作,可直接对硬件进行操作。91.2C语言的特点91.2C语言的特点6、生成目标代码质量高,执行效率高,可以直接生成EXE文件。7、可移植性好。8、C语言比其它语言相对来说难掌握。101.2C语言的特点6、生成目标代码质量高,执行效率高,可1.3简单的C程序介绍例1:main(){printf(“ThisisaCprogram.\n”);}输出结果为:ThisisaCprogram.111.3简单的C程序介绍例1:111.3简单的C程序介绍例2:main(){inta,b,sum;a=123;b=456;sum=a+b;printf(“sumis%d\n”,sum);}输出结果为:sumis579121.3简单的C程序介绍例2:121.3简单的C程序介绍例3:main(){inta,b,c;scanf(“%d,%d”,&a,&b);c=max(a,b);printf(“maxis%d\n”,max);sum=a+b;printf(“sumis%d\n”,sum);}131.3简单的C程序介绍例3:131.3简单的C程序介绍继例3:intmax(intx,inty){intz;if(x>y)z=x;elsez=y;return(z);}输出结果为:maxisxxx

sumisxxx141.3简单的C程序介绍继例3:141.3简单的C程序介绍1、C程序是由函数构成,至少有一个main函数和若干个其它函数。2、一个函数由两部分组成:(1)函数的首部:在函数的第一行。intmax(intx,inty)(2)函数体:包含两部分(声明部分和执行部分)3、C程序总是从main函数开始执行的。151.3简单的C程序介绍1、C程序是由函数构成,至少有一1.3简单的C程序介绍4、一行可以有多个语句,一个语句也可以写在不同行上。5、但每个语句后一定要有分号;数据定义后也要有分号;6、C语言没有专门的输入输出语句。由scanf和printf两个函数提供。7、用/*…….*/来作注释,不执行。161.3简单的C程序介绍4、一行可以有多个语句,一个语句1.4C程序的上机环境我们用的是turboC。171.4C程序的上机环境我们用的是turboC。17第三章数据类型、运算符与表达式基本数据类型与特点各种数据类型表示范围常量的表示方法变量说明语句运算符与基本运算规则各种表达式的使用基本输入输出函数使用方法本章要点18第三章数据类型、运算符与表达式基本数据类型与特点本章§3-1数据与数据类型(续)C语言的数据类型基本类型字符型char整型int浮点型单精度float双精度double指针类型构造类型数组结构struct联合union枚举enum空类型第三章第七章第十一章指针类型19§3-1数据与数据类型(续)C语言的数据类型基本类型字符型§3-2常量与变量数据程序加工处理的对象及其结果数据类型数据在计算机内部的存储形式(占用的内存单元数量、编码方式、取值范围等)常量在程序运行过程中不允许改变的量可用一个标识符来代表一个常量。变量在程序运行过程中允许改变的量一、基本概念20§3-2常量与变量数据一、基本概念20例题:#definePRICE30Main(){intnum,total;num=10;total=num*PRICE;Printf(“total=%d”,total);}

21例题:21§3-2常数与常数定义常量定义形式#define

标识符

常量用定义的一个标识符来代表一个常量,称为符号常量

# 宏命令专用定义符号

define

命令

标识符

宏替换名(一般采用大写字符)二、常数定义与符号常量常量定义实例注意:符号常量与变量不同,它的值在程序运行过程中不能改变,也不能重新赋值。22§3-2常数与常数定义常量定义形式二、常数定义与符号常量常§2-2常数与常数定义整型常量(3种形式) 10进制

8进制 16进制实型常量(2种形式) 十进制 指数

字符常量字符串常量一、常数:0

~9整型常量实例:0

~7以数字0开头:0

~9,A~F/a~f,以0x或0X开头:符号、整数、小数点和小数:用e或E和表示指数部分实型常量实例字符常量字符串常量23§2-2常数与常数定义整型常量(3种形式)一、常数:0§2-2常数与常数定义-常量定义实例常量定义实例#defineONE1

#define

PAI

3.1415926

#define

TV

”television”

#define

MAX

10#defineTWO

ONE+ONE使用方法

a=8+2;printf(”%s”,”television”);

s=3.14159*r*r;

intarray[10];返回a=b+TWO;printf(”%s”,TV);s=PAI*r*r;intarray[MAX];24§2-2常数与常数定义-常量定义实例常量定义实例返回a=b注:符号常量名一般用大写,变量用小写。符号常量在程序的执行部分不能再赋值。3.2.2变量值在程序执行过程中可随时改变的量称为变量。一个变量在内存中占据一定的存储单元,在该单元中存放变量的值。变量名实际上是一个符号地址。

A

变量名

变量值

存储单元1325注:符号常量名一般用大写,变量用小写。1325变量的说明格式:[类型修饰符]类型说明符变量列表;例如:inti;

charch,str;

longk=1,m=0x12345678;doublex,y=1;变量说明意味着确定了:该变量占用内存单元的数量,数据在内存的表示方式,数据的取值范围。26变量的说明格式:26标识符(变量名)的说明(1)标识符只能由字母、数字和下划线组成,且第一个字符是字母或下划线。例:sum,_total,a123-e,Basic,m.e.12,er#we,1asd,a>b(2)大写字母和小写字母被认为是两个不同的字符。(3)一般只认前面的8个字符。27标识符(变量名)的说明(1)标识符只能由字母、数字和下划线组变量的说明(1)变量要先定义再使用例:intstudent;stuent=10;(2)每个变量有一确定的类型例:intstudent;student=15;student=34.56;(3)每个变量所进行的运算必须合法。Floata,b,c;a=10.4;b=3.6;c=a%b;28变量的说明(1)变量要先定义再使用283.3整型数据3.3.1整型常量的不同表示方法:

10进制:

100-80+123

8进制:

010024010016进制:

0x380x100X100XFF0xa整型常量的类型:

1.在整型表示范围之内,根据值大小默认类型2.在常量后面加l或L,则认为它是longint型例如:都是longint型常量

10进制:-123L0L432l8进制:010L024L0100L16进制:

0x38L0x1000L0XFFlx0a0000l293.3整型数据3.3.1整型常量的不同表示方法:293.3.2整型变量1、在内存中的存放形式。以二进制的补码形式,占两个字节,左边一位表示符号,“0”为正,“1”为负。补码的表示:正数的补码与原码相同。负数的补码是将该数的绝对值的二进制形式,按位取反后再加1。如-10的表示方法10的原码:0000000000001010取反1111111111110101再加11111111111110110(-10的补码)303.3.2整型变量302.整型数据的分类类型比特数取值范围Int16-32768~+32767Unsignedint160~65535Short16-32768~+32767Unsignedshort160~65535Long32-2147483648~2147483647Unsignedlong320~4294967295312.整型数据的分类类型比特数取值范围Int16-327683、整型变量的定义例:main(){inta,b,c,d;unsignedu;a=12;b=-24;u=10;c=a+u;d=b+u;printf(“a+u=%d,b+u=%d\”,c,d);}4、整型数据的溢出323、整型变量的定义32§2-1数据与数据类型-intint型数的表示范围:二进制16bit(2Byte)000000000000000100000000000000110111111111111111=1=3int型整数的最大值int型表示数的范围:-32768~327671111111111111111注意:使用中要防止数据溢出=-1int型整数的最小值1000000000000000=215-1=32767=-215=-3276833§2-1数据与数据类型-intint型数的表示范围:二进制§2-1数据与数据类型-intmain(){inti;i=1;i=i*2;printf(”\ni=%d”,i);i=i*3;printf(”\ni=%d”,i);i=i*4;printf(”\ni=%d”,i);i=i*5;printf(”\ni=%d”,i);i=i*6;printf(”\ni=%d”,i);i=i*7;printf(”\ni=%d”,i);i=i*8;printf(”\ni=%d”,i);i=i*9;printf(”\ni=%d”,i);i=i*10;printf(”\ni=%d”,i);}

期望结果

i=2i=6i=24i=120i=720i=5040i=40320i=362880i=3628800

实际运行结果

i=2i=6i=24i=120i=720i=5040i=-25216i=-30336i=24320产生数据溢出上溢下溢返回34§2-1数据与数据类型-intmain()产生数据溢例:main(){inta,b,;a=32767;b=a+1;printf(“%d,%d\”,a,b);}结果为:32767,-3276835353.3.3、整型常量的类型1、整数的范围如果在-32768~+32767,可以是int型或longint型。2、整数的范围如果在-2147483648~+2147483647,则是longint型。3、int型与shortint型是等同的。4、unsigned型是无符号的,注意范围。5、在一个整常量后加字母l或L,则认为是longint型。363.3.3、整型常量的类型363.4实型数据3.4.1实型常量的表示方法两种表示形式:十进制小数形式指数形式:123e-4,e后面的数必须为整数。3.4.2实型变量1、存放形式:占4位,按指数形式存储,分成小数和指数部分来存放。373.4实型数据3.4.1实型常量的表示方法372.实型变量的分类类型比特数有效数字数值范围float326~710-37~1038Double6415~1610-307~10308Longdouble12818~1910-4931~104932382.实型变量的分类类型比特数有效数字数值范围float3263。实型数据的舍入误差由于实型变量的有效位有限,有效位外的数字将被舍去,所以会产生一些误差。例:main(){floata,b;a=123456.789e5;b=a+20;printf(“%f”,b);}393。实型数据的舍入误差由于实型变量的有效位有限,有效位外的数§3.5字符型数据字符型常量:用单引号括起来的单个字符实例:’A’

’g’’#’’0’’2’’+’’,’’;’’(’’)’字符定界符:单引号’还有一种特殊形式的字符常量,以“\”开头的字符序列.见表3.3.返回如何表示不可显示字符?回车/退格/TAB?如何表示定界符?’’’产生歧异转义符\:将\后面的字符转换为其它含义40§3.5字符型数据字符型常量:用单引号括起来的单个字符表3.3转义字符及其含义字符形式含义ASCII码\n换行,将当前位置移到下一行开头10\t水平制表(跳到下一个tab位置)9\b退格,将当前位置移到前一列8\r回车,将当前位置移到本行开头13\f换页,将当前位置移到下页开头12\\反斜杠字符“\”92\‘单引号字符39\“双引号字符34\ddd1到3位8进制数所代表的字符\xhh1到2位16进制数所代表的字符41表3.3转义字符及其含义字符形式含义ASCII码\n换行3.5.2字符变量每个字符变量只能放一个字符.字符变量在内存中是以二进制的形式来存放的,与整形数据可以通用.一个字符数据既可以用字符形式来输出,也可以用整形形式来输出.C语言允许字符与整数直接进行算术运算.423.5.2字符变量每个字符变量只能放一个字符.42例子1:

main(){charc1,c2;c1=97;c2=98;printf(“%c%c\n”,c1,c2);printf(“%d%d\n”,c1,c2);}43例子1:43例子2:

main(){charc1,c2;c1=‘a’;c2=‘b’;c1=c1-32;c2=c2-32;printf(“%c%c\n”,c1,c2);printf(“%d%d\n”,c1,c2);}44例子2:443.5.4字符串常量字符常量是由单引号括起来的,字符串常量是由双引号括起来的.如“china”.如‘a’和“a”是两个不同的概念.C语言规定:每个字符串是以‘\0’为结束标志的.所以“a”其实在内存中是占两个字节的位置,而‘a’在内存中是占一个字节的位置.CharcC=“a”(X)453.5.4字符串常量字符常量是由单引号括起来的,字符串常量§2-2常数与常数定义-字符串常数实例:”ThisisCstring.”

”a”

(1个空格)

””

(不含空格)

串定界符:双引号

”字符串长度:字符串中包含的字符数量。返回串长=17串长=1串长=1串长=0"\t\"Name\\Address\n"串长=15空串实例:"\"Cisveryeasy.\""串长=17注意:字符串"a"

与字符’a’

的区别"Hesaid\"ok.\"\n"串长=1346§2-2常数与常数定义-字符串常数实例:”Thisis3.6变量赋初值对变量,可以在定义时给定初值如inta=3,b,c;floatf=3.14;charc=‘a’;但不能inta=b=c=3;inta=3,b=3,c=3;a=b=c=3;473.6变量赋初值对变量,可以在定义时给定初值473.7各类数值型数据间的混合运算高doublefloat

long

unsigned低intchar,short483.7各类数值型数据间的混合运算高double3.8算术运算符和算术表达式3.8.1C运算符简介1、算术运算符+、—、*、/、%2、关系运算符>、<、==、>=、<=、!=

3、逻辑运算符!、&&、||4、位运算符<<、>>、~、|^、&5、赋值运算符=6、条件运算符?:7、逗号运算符,493.8算术运算符和算术表达式3.8.1C运算符简介498、指针运算符*、&9、求字节数运算符sizeof10、强制类型转换运算符(类型)|11、分量运算符.、—>12、下标运算符[]13、其它运算符3.8.2算术运算符和算术表达式1、基本的算术运算符2、算术表达式和运算符的优先级与结合性先乘除后加减,同一级的结合方向“自左而右”508、指针运算符*、&50§运算符和算术表达式一、算术运算符运算符(双目运算符/单目运算符)+加法运算12

正值运算14-减法运算12

负值运算14*乘法运算13/除法运算13%求余运算13优先级:*/%同级(高),+

-同级(低)结合性:相同优先级运算符进行运算时的次序

自左向右(标记为

→)51§运算符和算术表达式一、算术运算符运算符(双目运算符/单目§运算符-算术运算实例1.参加运算的对象都是int型,结果截取为int型10/3 11/310.0/3 11/3.1/2 1./210/5*3 10/(5*3)2.求余运算的对象必须是整型9%3 1%310%3 10%-3-10%3 -10%-3=3=3=3.3333=3.66667=0=0.5=6=0=0=1=1=1=-1=-152§运算符-算术运算实例1.参加运算的对象都是int型,结果3、强制类型转换运算符格式:(类型名)(表达式)如floatx,y;x=5.67;y=78.6;(int)x+y的结果为83.6x=5.67(int)x5(int)(x+y)84533、强制类型转换运算符53§4自增、自减运算符运算符(单目←)

++

自增 14

–– 自减 14++和––为单目运算,只能作用于变量只能对int、char、long和指针变量进行运算功能:

++x <==>x=x+1(前缀:使用X之前,先改

––x <==>x=x–1

变X的值)

x++ <==>x=x+1(后缀:使用X之后,再改 x––

<==>x=x–1 变X的值)

54§4自增、自减运算符运算符(单目←)54自增(自减)有前缀和后缀之分。前缀形式:先自增(自减)再引用后缀形式:先引用再自增(自减)前缀与后缀的区别:

y=++x;<==>x=x+1;

y=x;

x先加1再赋值

y=x++;<==>y=x;

x=x+1;

x先赋值再加155自增(自减)有前缀和后缀之分。55如

I=3;j=++I-4;(j=0,l=4)j=I++;(j=3,l=4)说明:1、自增或自减,只能用于变量,不能用于常量和表达式。2、++或--的结合方向是“自右至左”j=(-I)++

相当于j=-(I++)(j=-3,I=4)不要使用这种表达式:I+++I+++I++56如I=3;56§2-4运算符-自增自减运算实例实例(1)

++i;i++;

因为在表达式中没有其它运算,结果一样。(2)

x=1;y=++x;

结果:x=2,y=2

y=++x;<==>x=x+1;y=x;

在做赋值运算之前,x先加1,然后将x赋给y(3)x=1;y=x++;

结果:x=2,y=1y=x++;<==>y=x;x=x+1;先将x

赋值给y,然后x

再加157§2-4运算符-自增自减运算实例实例57

x=3,z=3

x=3,y=6,z=3*6=18

x=3,y=6,z=2*6=12

x=3,y=6,z=3*5=15

x=3,y=6,z=2*5=10

x=4,z=4*4=16注意,以下操作是错误的:

x=++(i+j)+1;j=++

(5+x);y=++x*++x;§自增自减运算实例实例已知:intx

=

2,y

=

5,z;

z=++x;

z=++x

*

++y;

z=x++

*

++y;z=++x

*

y++;

z=x++

*

y++;z=++x

*

++x;逻辑虽然正确,但实际编程中容易产生误解,应当避免58§自增自减运算实例实例逻辑虽然正确58§自增自减运算实例实例已知:inti=1,j=2,k;k=i+++j;C语言处理运算符(标识符)时,遵循自左向右组合的原则,两个‘+’号是一个运算符,故处理成(i++)+j。k=i+++++j;不能编译通过。原因是编译器将前两个‘+’处理成自增,接下来又将两个‘+’号处理为自增,故不合语法。编程者可用空格或括号来表示正确的含义:k=i+++++j;

注意:一般不要用这样的语句。59§自增自减运算实例实例593.9赋值运算符和赋值表达式1、赋值运算符:=2、类型转换如果=两边类型不同,将右边的表达式结果转为左边的类型。如

intI;floatf;doubled;I=3.45;(I的结果为3)

f=23;(f的结果为23.00000)

d=123.4536777;f=d;(f的结果为123.4537,取七位有效数值)

d=123.456789e100;f=d;(f的结果发生溢出的错误)603.9赋值运算符和赋值表达式1、赋值运算符:=60(1)、将int\short\long型数据赋给char型时,只将低8位传送。IntI=289;(100100001)Charc;C=I

(低8位的结果为33,对应为!字符)(2)、将unsignedint型数据赋给int型变量时,注意符号。unsignedinta=65535;Intb;b=a;

(b的结果为-1)61(1)、将int\short\long型数据赋给char型时3、复合的赋值运算符在赋值运算符“=”之前加上其它运算符,可以构成复合的运算符。如:a+=3(a=a+3)

x*=y+8(x=x*(y+8))

x%=3(x=x%3)4、赋值表达式<变量><赋值运算符><表达式>注意:赋值表达式是右结合律的。623、复合的赋值运算符62如:a=b=5a=(b=5)

a=b=4+c=6a=(b=4)+(c=6)

a=12;

a+=a-=a*a;(a-=a*aa=a-a*aa=-132a+=-132a=a+(-132)a=-264)赋值操作不仅可出现在赋值语句中,也可以以表达式形式出现在其他语句中(如输出或循环语句)。b=3;printf(“a=%d”,a=b);结果为

a=363如:a=b=5a=(b=53.10逗号运算符和逗号表达式格式为:表达式1,表达式2(先求表达式1,再求表达式2,结果取表达式2的值)注意:逗号运算符的运算级别最低,低于赋值运算符。如:a=3;a=3*5,a*4(a的结果不等于12,而是逗号表达式的结果为60)643.10逗号运算符和逗号表达式格式为:表达式1,表X=(a=3,6*a)x的结果为18X=a=3,6*ax的结果为3,整个表达式的结果为18逗号表达式的扩展为:表达式1,表达式2,…….表达式n65X=(a=3,6*a)x的结果为1865§2-8综合举例1、运算符有优先级,在C语言中关于运算符优先级的正确叙述是

A)逻辑运算符高于算术运算符,算术运算符高于关系运算符

B)算术运算符高于关系运算符,关系运算符高于逻辑运算符

C)算术运算符高于逻辑运算符,逻辑运算符高于关系运算符

D)关系运算符高于逻辑运算符,逻辑运算符高于算术运算符答案:B66§2-8综合举例1、运算符有优先级,在C语言中关于运算符优§2-8综合举例2、在以下关于C语言的不严格的叙述中,错误的是

A)大写字母和小写字母的意义相同

B)有些不同类型的变量可以在一个表达式中运算

C)在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型

D)同一个运算符号在不同的场合可以有不同的含义答案:A3、C语言中的简单数据类型包括

。A)整型、实型、逻辑型

B)整型、实型、字符型

C)整型、字符型、逻辑型

D)整型、实型、逻辑型、字符型答案:B67§2-8综合举例2、在以下关于C语言的不严格的叙述中,错误§2-8综合举例4、在C语言中,错误的int类型的常数是

A)32768 B)0C)037 D)0xAF答案:A5、下列常数中不能作为C的常量的是

A)0xA5 B)2.5e-2 C)3e2D)0582答案:D6、在C语言中,十进制的47可等价地写为

A)2f B)02fC)57D)057答案:D7、已知:inta=4,b=5,c;则执行表达式“c=a=a>b”后变量a的值为

A)0 B)1 C)4 D)5答案:A68§2-8综合举例4、在C语言中,错误的int类型的常数是§2-8综合举例8、下列可以正确表示字符型常数的是

A)"a" B)’\t’C)"\n"D)297答案:B9、以下错误的转义字符是

A)’\\’ B)’\’’ C)’\81’ D)’\0’答案:C10、已知:floatx=1,y;则:y=++x*++x的结果是

A)y=9B)y=6C)y=1D)表达式是错误的答案:D11、已知:charch=’A’;则下列表达式的值是ch=(ch>=’A’&&ch<=’Z’)?(ch+32):ch;A)A B)a C)Z D)z答案:B69§2-8综合举例8、下列可以正确表示字符型常数的是69§2-8综合举例12、字符串"\\\22a,0\n"的长度是

A)8 B)7 C)6D)5答案:C13、在程序中要使用语句:printf("%s\n",STRING);输出一个长度为5个字符的提示信息"OK!",则应使用宏定义语句______。

A)#defineSTRING"OK!"B)#defineSTRING""OK!""C)#defineSTRING\"OK!\"D)以上三个答案都是错误的答案:D#defineSTRING"\"OK!\""70§2-8综合举例12、字符串"\\\22a,0\n"的长度§2-1数据与数据类型(续)C语言基本数据类型有四种:字符型整型单精度浮点型双精度浮点型charintfloatdouble类型说明符三、C语言的基本数据类型C语言有四种类型修饰符:短长有符号无符号shortlongsignedunsigned类型修饰符注意:类型修饰符不能单独使用,必须与类型说明符配合在一起使用C语言采用类型说明符说明不同的数据类型71§2-1数据与数据类型(续)C语言基本数据类型有四种:ch主讲教师:陈美莲C语言程序设计主讲教师:陈美莲C语言程序设计课程安排

总课时72,其中理论36学时,实验36学时

课程基本要求

1.了解基本算法2.了解C语言的数据类型、运算符与表达式的使用方法。3.熟练三种基本设计语句编程。4.熟练使用数组编程。5.熟练函数的定义和设计。6.了解指针的运算与使用。

73课程安排总课时72,其中理论36学时,实验36学时2教学方法及要求1.课堂教学

采用大屏幕投影仪授课,操作示范。要求:认真听课、作笔记、遵守课堂纪律。2.实验课

培养实际操作能力、自学能力。要求:遵守机房规则。独立完成各个实验(期未要进行上机考试)。3.课后练习

每章交一次作业、上机前预习、争取多上机

4.成绩评定

根据理论考试、上机操作和平时成绩评定。74教学方法及要求1.课堂教学

采用大屏幕投影仪授课机位安排及机房清洁卫生1.换鞋上机,对号入座

要求:按学号顺序,固定机位。学习委员填写机位表3份,交任课教师、实验室各一份。

注意:不要穿太昂贵的鞋上机。2.为防止病毒,严禁自带磁盘上机

要求:磁盘集中保管,专人负责(上机发磁盘,下课收磁盘)。3.保持机房清洁

要求:每天下午搞一次清洁,每周大搞一次。75机位安排及机房清洁卫生1.换鞋上机,对号入座4目录1.C语言概述2.数据类型、运算符与表达式3.顺序设计4.选择结构设计5.循环结构设计6.数组的定义和引用7.函数的定义和调用76目录1.C语言概述58.预处理命令9.指针的使用10.结构体与共同体11.位运算12.文件的操作778.预处理命令6第一章C语言概述1.1C语言出现的历史背景汇编语言编写的程序太依赖硬件,程序的可读性和移植性都差,C语言既有高级语言的特点又有低级语言特点.C语言是在B语言中发展起来的.1960ALGOL语言

B语言,开发出UNIX系统(贝尔实验室)

C语言78第一章C语言概述1.1C语言出现的历史背景7C语言开始被人们所接受,并开始流行.C语言有各种不同版本:TURBOC,BORLANDC,QUICKC,MICROSOFTC.79C语言开始被人们所接受,并开始流行.81.2C语言的特点1、语言简洁,使用方便。32个关键字、9种控制语句,书写形式自由。2、运算符丰富。有34种运算符,包括算术、逻辑、逗号运算、移位运算等等。3、数据结构丰富。有整型、实型、字符型、数组类型,指针类型、结构类型、共同体类型等等。4、具有结构化的控制语句,函数模块化。5、允许直接访问物理地址,进行位操作,可直接对硬件进行操作。801.2C语言的特点91.2C语言的特点6、生成目标代码质量高,执行效率高,可以直接生成EXE文件。7、可移植性好。8、C语言比其它语言相对来说难掌握。811.2C语言的特点6、生成目标代码质量高,执行效率高,可1.3简单的C程序介绍例1:main(){printf(“ThisisaCprogram.\n”);}输出结果为:ThisisaCprogram.821.3简单的C程序介绍例1:111.3简单的C程序介绍例2:main(){inta,b,sum;a=123;b=456;sum=a+b;printf(“sumis%d\n”,sum);}输出结果为:sumis579831.3简单的C程序介绍例2:121.3简单的C程序介绍例3:main(){inta,b,c;scanf(“%d,%d”,&a,&b);c=max(a,b);printf(“maxis%d\n”,max);sum=a+b;printf(“sumis%d\n”,sum);}841.3简单的C程序介绍例3:131.3简单的C程序介绍继例3:intmax(intx,inty){intz;if(x>y)z=x;elsez=y;return(z);}输出结果为:maxisxxx

sumisxxx851.3简单的C程序介绍继例3:141.3简单的C程序介绍1、C程序是由函数构成,至少有一个main函数和若干个其它函数。2、一个函数由两部分组成:(1)函数的首部:在函数的第一行。intmax(intx,inty)(2)函数体:包含两部分(声明部分和执行部分)3、C程序总是从main函数开始执行的。861.3简单的C程序介绍1、C程序是由函数构成,至少有一1.3简单的C程序介绍4、一行可以有多个语句,一个语句也可以写在不同行上。5、但每个语句后一定要有分号;数据定义后也要有分号;6、C语言没有专门的输入输出语句。由scanf和printf两个函数提供。7、用/*…….*/来作注释,不执行。871.3简单的C程序介绍4、一行可以有多个语句,一个语句1.4C程序的上机环境我们用的是turboC。881.4C程序的上机环境我们用的是turboC。17第三章数据类型、运算符与表达式基本数据类型与特点各种数据类型表示范围常量的表示方法变量说明语句运算符与基本运算规则各种表达式的使用基本输入输出函数使用方法本章要点89第三章数据类型、运算符与表达式基本数据类型与特点本章§3-1数据与数据类型(续)C语言的数据类型基本类型字符型char整型int浮点型单精度float双精度double指针类型构造类型数组结构struct联合union枚举enum空类型第三章第七章第十一章指针类型90§3-1数据与数据类型(续)C语言的数据类型基本类型字符型§3-2常量与变量数据程序加工处理的对象及其结果数据类型数据在计算机内部的存储形式(占用的内存单元数量、编码方式、取值范围等)常量在程序运行过程中不允许改变的量可用一个标识符来代表一个常量。变量在程序运行过程中允许改变的量一、基本概念91§3-2常量与变量数据一、基本概念20例题:#definePRICE30Main(){intnum,total;num=10;total=num*PRICE;Printf(“total=%d”,total);}

92例题:21§3-2常数与常数定义常量定义形式#define

标识符

常量用定义的一个标识符来代表一个常量,称为符号常量

# 宏命令专用定义符号

define

命令

标识符

宏替换名(一般采用大写字符)二、常数定义与符号常量常量定义实例注意:符号常量与变量不同,它的值在程序运行过程中不能改变,也不能重新赋值。93§3-2常数与常数定义常量定义形式二、常数定义与符号常量常§2-2常数与常数定义整型常量(3种形式) 10进制

8进制 16进制实型常量(2种形式) 十进制 指数

字符常量字符串常量一、常数:0

~9整型常量实例:0

~7以数字0开头:0

~9,A~F/a~f,以0x或0X开头:符号、整数、小数点和小数:用e或E和表示指数部分实型常量实例字符常量字符串常量94§2-2常数与常数定义整型常量(3种形式)一、常数:0§2-2常数与常数定义-常量定义实例常量定义实例#defineONE1

#define

PAI

3.1415926

#define

TV

”television”

#define

MAX

10#defineTWO

ONE+ONE使用方法

a=8+2;printf(”%s”,”television”);

s=3.14159*r*r;

intarray[10];返回a=b+TWO;printf(”%s”,TV);s=PAI*r*r;intarray[MAX];95§2-2常数与常数定义-常量定义实例常量定义实例返回a=b注:符号常量名一般用大写,变量用小写。符号常量在程序的执行部分不能再赋值。3.2.2变量值在程序执行过程中可随时改变的量称为变量。一个变量在内存中占据一定的存储单元,在该单元中存放变量的值。变量名实际上是一个符号地址。

A

变量名

变量值

存储单元1396注:符号常量名一般用大写,变量用小写。1325变量的说明格式:[类型修饰符]类型说明符变量列表;例如:inti;

charch,str;

longk=1,m=0x12345678;doublex,y=1;变量说明意味着确定了:该变量占用内存单元的数量,数据在内存的表示方式,数据的取值范围。97变量的说明格式:26标识符(变量名)的说明(1)标识符只能由字母、数字和下划线组成,且第一个字符是字母或下划线。例:sum,_total,a123-e,Basic,m.e.12,er#we,1asd,a>b(2)大写字母和小写字母被认为是两个不同的字符。(3)一般只认前面的8个字符。98标识符(变量名)的说明(1)标识符只能由字母、数字和下划线组变量的说明(1)变量要先定义再使用例:intstudent;stuent=10;(2)每个变量有一确定的类型例:intstudent;student=15;student=34.56;(3)每个变量所进行的运算必须合法。Floata,b,c;a=10.4;b=3.6;c=a%b;99变量的说明(1)变量要先定义再使用283.3整型数据3.3.1整型常量的不同表示方法:

10进制:

100-80+123

8进制:

010024010016进制:

0x380x100X100XFF0xa整型常量的类型:

1.在整型表示范围之内,根据值大小默认类型2.在常量后面加l或L,则认为它是longint型例如:都是longint型常量

10进制:-123L0L432l8进制:010L024L0100L16进制:

0x38L0x1000L0XFFlx0a0000l1003.3整型数据3.3.1整型常量的不同表示方法:293.3.2整型变量1、在内存中的存放形式。以二进制的补码形式,占两个字节,左边一位表示符号,“0”为正,“1”为负。补码的表示:正数的补码与原码相同。负数的补码是将该数的绝对值的二进制形式,按位取反后再加1。如-10的表示方法10的原码:0000000000001010取反1111111111110101再加11111111111110110(-10的补码)1013.3.2整型变量302.整型数据的分类类型比特数取值范围Int16-32768~+32767Unsignedint160~65535Short16-32768~+32767Unsignedshort160~65535Long32-2147483648~2147483647Unsignedlong320~42949672951022.整型数据的分类类型比特数取值范围Int16-327683、整型变量的定义例:main(){inta,b,c,d;unsignedu;a=12;b=-24;u=10;c=a+u;d=b+u;printf(“a+u=%d,b+u=%d\”,c,d);}4、整型数据的溢出1033、整型变量的定义32§2-1数据与数据类型-intint型数的表示范围:二进制16bit(2Byte)000000000000000100000000000000110111111111111111=1=3int型整数的最大值int型表示数的范围:-32768~327671111111111111111注意:使用中要防止数据溢出=-1int型整数的最小值1000000000000000=215-1=32767=-215=-32768104§2-1数据与数据类型-intint型数的表示范围:二进制§2-1数据与数据类型-intmain(){inti;i=1;i=i*2;printf(”\ni=%d”,i);i=i*3;printf(”\ni=%d”,i);i=i*4;printf(”\ni=%d”,i);i=i*5;printf(”\ni=%d”,i);i=i*6;printf(”\ni=%d”,i);i=i*7;printf(”\ni=%d”,i);i=i*8;printf(”\ni=%d”,i);i=i*9;printf(”\ni=%d”,i);i=i*10;printf(”\ni=%d”,i);}

期望结果

i=2i=6i=24i=120i=720i=5040i=40320i=362880i=3628800

实际运行结果

i=2i=6i=24i=120i=720i=5040i=-25216i=-30336i=24320产生数据溢出上溢下溢返回105§2-1数据与数据类型-intmain()产生数据溢例:main(){inta,b,;a=32767;b=a+1;printf(“%d,%d\”,a,b);}结果为:32767,-32768106353.3.3、整型常量的类型1、整数的范围如果在-32768~+32767,可以是int型或longint型。2、整数的范围如果在-2147483648~+2147483647,则是longint型。3、int型与shortint型是等同的。4、unsigned型是无符号的,注意范围。5、在一个整常量后加字母l或L,则认为是longint型。1073.3.3、整型常量的类型363.4实型数据3.4.1实型常量的表示方法两种表示形式:十进制小数形式指数形式:123e-4,e后面的数必须为整数。3.4.2实型变量1、存放形式:占4位,按指数形式存储,分成小数和指数部分来存放。1083.4实型数据3.4.1实型常量的表示方法372.实型变量的分类类型比特数有效数字数值范围float326~710-37~1038Double6415~1610-307~10308Longdouble12818~1910-4931~1049321092.实型变量的分类类型比特数有效数字数值范围float3263。实型数据的舍入误差由于实型变量的有效位有限,有效位外的数字将被舍去,所以会产生一些误差。例:main(){floata,b;a=123456.789e5;b=a+20;printf(“%f”,b);}1103。实型数据的舍入误差由于实型变量的有效位有限,有效位外的数§3.5字符型数据字符型常量:用单引号括起来的单个字符实例:’A’

’g’’#’’0’’2’’+’’,’’;’’(’’)’字符定界符:单引号’还有一种特殊形式的字符常量,以“\”开头的字符序列.见表3.3.返回如何表示不可显示字符?回车/退格/TAB?如何表示定界符?’’’产生歧异转义符\:将\后面的字符转换为其它含义111§3.5字符型数据字符型常量:用单引号括起来的单个字符表3.3转义字符及其含义字符形式含义ASCII码\n换行,将当前位置移到下一行开头10\t水平制表(跳到下一个tab位置)9\b退格,将当前位置移到前一列8\r回车,将当前位置移到本行开头13\f换页,将当前位置移到下页开头12\\反斜杠字符“\”92\‘单引号字符39\“双引号字符34\ddd1到3位8进制数所代表的字符\xhh1到2位16进制数所代表的字符112表3.3转义字符及其含义字符形式含义ASCII码\n换行3.5.2字符变量每个字符变量只能放一个字符.字符变量在内存中是以二进制的形式来存放的,与整形数据可以通用.一个字符数据既可以用字符形式来输出,也可以用整形形式来输出.C语言允许字符与整数直接进行算术运算.1133.5.2字符变量每个字符变量只能放一个字符.42例子1:

main(){charc1,c2;c1=97;c2=98;printf(“%c%c\n”,c1,c2);printf(“%d%d\n”,c1,c2);}114例子1:43例子2:

main(){charc1,c2;c1=‘a’;c2=‘b’;c1=c1-32;c2=c2-32;printf(“%c%c\n”,c1,c2);printf(“%d%d\n”,c1,c2);}115例子2:443.5.4字符串常量字符常量是由单引号括起来的,字符串常量是由双引号括起来的.如“china”.如‘a’和“a”是两个不同的概念.C语言规定:每个字符串是以‘\0’为结束标志的.所以“a”其实在内存中是占两个字节的位置,而‘a’在内存中是占一个字节的位置.CharcC=“a”(X)1163.5.4字符串常量字符常量是由单引号括起来的,字符串常量§2-2常数与常数定义-字符串常数实例:”ThisisCstring.”

”a”

(1个空格)

””

(不含空格)

串定界符:双引号

”字符串长度:字符串中包含的字符数量。返回串长=17串长=1串长=1串长=0"\t\"Name\\Address\n"串长=15空串实例:"\"Cisveryeasy.\""串长=17注意:字符串"a"

与字符’a’

的区别"Hesaid\"ok.\"\n"串长=13117§2-2常数与常数定义-字符串常数实例:”Thisis3.6变量赋初值对变量,可以在定义时给定初值如inta=3,b,c;floatf=3.14;charc=‘a’;但不能inta=b=c=3;inta=3,b=3,c=3;a=b=c=3;1183.6变量赋初值对变量,可以在定义时给定初值473.7各类数值型数据间的混合运算高doublefloat

long

unsigned低intchar,short1193.7各类数值型数据间的混合运算高double3.8算术运算符和算术表达式3.8.1C运算符简介1、算术运算符+、—、*、/、%2、关系运算符>、<、==、>=、<=、!=

3、逻辑运算符!、&&、||4、位运算符<<、>>、~、|^、&5、赋值运算符=6、条件运算符?:7、逗号运算符,1203.8算术运算符和算术表达式3.8.1C运算符简介498、指针运算符*、&9、求字节数运算符sizeof10、强制类型转换运算符(类型)|11、分量运算符.、—>12、下标运算符[]13、其它运算符3.8.2算术运算符和算术表达式1、基本的算术运算符2、算术表达式和运算符的优先级与结合性先乘除后加减,同一级的结合方向“自左而右”1218、指针运算符*、&50§运算符和算术表达式一、算术运算符运算符(双目运算符/单目运算符)+加法运算12

正值运算14-减法运算12

负值运算14*乘法运算13/除法运算13%求余运算13优先级:*/%同级(高),+

-同级(低)结合性:相同优先级运算符进行运算时的次序

自左向右(标记为

→)122§运算符和算术表达式一、算术运算符运算符(双目运算符/单目§运算符-算术运算实例1.参加运算的对象都是int型,结果截取为int型10/3 11/310.0/3 11/3.1/2 1./210/5*3 10/(5*3)2.求余运算的对象必须是整型9%3 1%310%3 10%-3-10%3 -10%-3=3=3=3.3333=3.66667=0=0.5

温馨提示

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

评论

0/150

提交评论