C语言电子教案.docx
- 文档编号:24049714
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:97
- 大小:680.20KB
C语言电子教案.docx
《C语言电子教案.docx》由会员分享,可在线阅读,更多相关《C语言电子教案.docx(97页珍藏版)》请在冰豆网上搜索。
C语言电子教案
第1章
C语言概述
1.1C语言发展过程及特点
1.2C语言的基本词汇
1.3C程序结构
1.4C语言程序上机调试过程
1.1C语言发展过程及特点
C语言是在20世纪70年代初问世的。
总结起来C语言有以下几个特点。
(1)语言简洁、紧凑,使用方便、灵活。
(2)C语言运算符丰富,共有34种运算符。
(3)C语言的数据结构也比较丰富,具有现代计算机语言的各种数据结构。
(4)具有结构化的流程控制语句,如选择语句、循环语句等。
(5)流程控制和数据操作灵活多样,程序设计有较大的自由度。
(6)C语言允许直接访问物理地址,能进行位运算,能实现汇编语言的大部分功能,可以直接对硬件进行操作。
(7)用C语言编写的程序可移植性好。
1.2C语言的基本词汇
1.组成C语言基本词汇的基本字符
(1)数字10个(0~9);
(2)大、小写英文字母各26个(A~Z,a~z);
(3)特殊符号,如表3-1所示。
2.保留字
C语言的保留字是具有特定含义的标识符,主要包括关键字和特定字两大类。
关键字和特定字的主要区别是所有的特定字都必须在使用前加“#”,如使用特定字define,应书写为#define。
(2)特定字
特定字主要用于编译预处理,主要有define,undef,includeifdef,ifndef,endif。
3.标识符
一个合理的标识符是由英文字母或下划线“_”开头的字母、下划线、数字字符组成的字符序列。
使用标识符时应注意以下几点。
(1)标准C不限制标识符的长度,但它受各种版本的C语言编译系统限制,同时也受到具体机器的限制。
(2)在标识符中,大小写是有区别的。
(3)标识符是用于标识某个对象的符号。
(4)用户定义的标识符不应与保留字相同。
1.3C程序结构
例1.3编写C程序,求3个数的和。
程序代码如下:
/*定义函数f1,求3个实数的和*/
floatf1(floatx,floaty,floatz)/*这部分是函数头。
给出函数名、函数返回值的数据类型、形式参数x,y,z及它们的数据类型*/
{
floattemp;/*定义函数f1内部的变量*/
temp=x+y+z;/*相加*/
return(temp);/*返回变量temp的值给调用处,并且结束本函数的运行*/
}
/*主函数*/
main()
{
floata,b,c,sum;
printf("inputa,b,c:
");/*显示提示信息,可有可无*/
scanf("%f%f%f",&a,&b,&c);/*从键盘输入数据存储到a,b,c中*/
sum=f1(a,b,c);/*调用函数f1求3个数a,b,c的和*/
printf("sum=%f\n",sum);
}
C语言程序的结构如下:
(1)程序是由一个或多个函数构成的,但必须有而且只有一个主函数main()。
(2)C程序的执行从主函数开始,也从主函数结束。
其他函数的执行是通过主函数调用或别的函数调用来完成的。
(3)函数是构成C语言程序的基本单位,它完成相对独立的功能。
它由函数头和函数体两部分组成。
(4)C语言程序的语句必须以分号结尾,复合语句除外。
(5)C语言本身没有输入输出语句,输入输出功能通过调用标准库函数来完成。
(6)一个C语言程序可根据需要适当加入一些注释行,以增加程序的可读性。
注释的形式为“/*注释内容*/”。
(7)C语言程序书写格式自由,一行可写几条语句,一条语句也可写成几行。
2.4C语言程序上机调试过程
C语言是计算机高级语言,用C语言写好的程序不能直接上机运行,必须经过翻译变成机器语言程序后才能被计算机执行,即要经过“编辑→编译→连接→运行”的过程。
假定编辑好的C源程序是study.c。
要运行study.c就必须将其经过编译生成目标程序文件study.obj,目标程序文件study.obj也不能直接运行,必须经过连接将study.obj和C库函数经过连接生成可执行程序文件study.exe。
TurboC2.0系统是一个集编辑、编译、连接、调试和运行等功能为一体的C语言程序集成开发系统。
在使用TurboC2.0系统前,首先要在硬盘上创建一个子目录,命名该子目录名为TC,然后把TurboC2.0系统的内容拷贝到其中,执行可执行文件TC.EXE即可进入TurboC2.0系统环境。
图1.1TurboC2.0系统主界面
图1.1TurboC2.0系统主界面
TurboC2.0系统主界面从上到下分为4个区:
主菜单区、编辑区、信息区和功能键提示区。
(1)主菜单区
主菜单区有如下菜单项:
FileEditRunCompileProjectOptionsDebugBreak/watch
(2)编辑区
编辑区供用户建立、修改源程序。
(3)信息区
信息区供显示编译、连接时出现的各种提示信息。
(4)功能键提示区
常用的功能键如表1-3所示。
表1-3TurboC常用功能键
下面以一简单实例说明基本上机步骤。
1.进入TurboC2.0系统
2.建立新文件
(1)在“File”菜单中选择“Load”子菜单项,出现如图1.2所示的对话框,在“*”处键入自己所需定义的文件名(如study.c)并回车。
图1.2装入程序文件
3.录入程序
用户新建文件后可在编辑区录入程序,如图1.3所示。
4.保存文件
5.运行程序
6.查看结果
7.退出TurboC2.0系统
第2章
数据类型及表达式
2.1数据结构
数据结构是程序设计中计算机的操作对象以及操作对象之间关系和操作的描述。
一个函数体中包括两大部分内容:
其一是数据描述部分,其二是算法实现部分。
要完成数据描述部分的内容,就必须寻找问题中的操作对象以及它们之间的关系,然后用计算机语言加以描述。
著名的计算机科学家沃斯(NikilausWirth)提出了公式:
数据结构+算法=程序
该公式表明除算法之外,一个程序中的数据结构是编写程序首先要解决的问题。
例4.1中的“链表”、“树”和“图”就是数据结构中的重要类型。
当然一个好的程序除了应该具备公式中两个主要因素外,还应该选择合适的程序设计语言和程序设计方法。
C语言提供的数据结构是以数据类型形式表示的。
2.2C语言程序中数据的表示方法
数据是组成程序的必要元素,根据数据在程序中值的变化与否,数据在C语言程序中以常量和变量两种形式表示。
4.2.1常量
1.整型常量
数据类型为整型的常量即为整型常量,又称整常数。
在C语言中,使用的整型常量有八进制、十六进制和十进制3种。
其中八进制、十六进制主要用于表示整型常量在内存中的存储形式,也就是表示某整型常量的机器码;十进制表示外部数据,其值表示的是真值。
(1)八进制整型常量
八进制整型常量必须以0开头,即以0作为八进制数的前缀。
其数码取值为0~7。
由于八进制数主要用于表示某整型常量的机器码,所以当表示某数机器码时,八进制数前面没有符号;如果有符号,则是对其所代表的真值取反。
如0123,0123代表的真值为83,0123代表的常量则为83。
(2)十六进制整型常量
十六进制整型常量的前缀为0X或0x。
其数码取值为0~9,A~F或a~f。
当十六进制数中出现a~f或A~F时,数符码中出现字母时字母的大小写应和前缀相匹配,即要么全部大写,要么全部小写。
十六进制数主要也是用于表示某整型常量的机器码,所以当表示某数机器码时,十六进制数前面没有符号;如果有符号,则是对其所代表的真值取反。
如0x23,0x23代表的真值为35,0x23代表的常量则为35。
(3)十进制整型常量
十进制整型常量没有前缀。
整型常量的几点说明如下。
①常量的类型
常量的类型可以根据整型常量描述的数值来确定其类型。
当整型常量的值为32768~32767时,可以看作基本型整型常量。
当整型常量的值为0~65535时,可以看作无符号整型常量。
当整型常量的值在大于32767或小于32768时,可以看作长整型常量。
②整型常数的后缀
十进制无符号整型常量的范围为0~65535,有符号数为32768~32767。
八进制数表示的机器码范围为0~0177777。
十六进制数表示的机器码范围为0X0~0XFFFF。
如果希望将整型常量按照长整型常量来运算,可以使用长整型数的后缀“L”或“l”来表示。
例如,
十进制长整型常量158L358000L
2.浮点常量
实型也称为浮点型。
实型常量也称为实数或者浮点数。
实型常量不分单、双精度,都按双精度double型处理,其有效位数为15~16位。
1)小数形式
小数形式由数码0~9和小数点组成。
当某浮点数整数部分或小数部分为0时,0可以省略,但小数点不可省略。
例如:
0.0,.25,5.789,0.13,5.0,300.,267.8230,123.等均为合法的实数。
345(无小数点),a7.(数码不可以是字母)等均为非法的浮点数。
(2)指数形式
指数形式由尾数加阶码标志e或E以及阶码(只能为整数,可以带符号)组成。
其一般形式为aEn(a为尾数,n为阶码)其值为a×10n
例如,2.1×105可以表示为2.1E5,3.7×可以表示为3.7E2
3.单字符常量
单字符常量是用单引号括起来的一个字符。
单字符常量可以有如下几种表示方法。
(1)直接形式
直接形式即在单引号内直接书写字符。
例如'a'、'b'、''、''、'?
‘
(2)八进制形式
八进制形式格式为'\ddd',其中“ddd”表示1~3位八进制数,其值代表的是某字符的ASCII值。
“\”是转义字符。
八进制形式可以表示所有的字符。
例如'\101'(等于'A'),'\007'(响铃控制字符),'\343'(表示ASCII值为227的字符π)。
(3)十六进制形式
十六进制形式格式为'\xhh',其中“hh”表示1~2位十六进制数,其值代表的是某字符的ASCII值,“\”是转义字符,“x”是十六进制前缀。
十六进制形式可以表示所有的字符。
例如'\x41'(等于'A'),'\x07'(响铃控制字符),'\xe3'(表示ASCII值为227的字符π)。
(4)转义字符
转义字符是一种特殊的字符常量。
转义字符以反斜线“\”开头,后跟一个或几个字符。
转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符。
4.字符串常量
字符串常量是由一对双引号括起的字符序列,可以没有字符,也可以只有一个字符。
例如,"CHINA","Howareyou!
","$12.5","","A","\nc\234\\"等都是合法的字符串常量。
字符串"program"在内存存储的形式如图2.1所示。
该字符串占用8个字节的存储空间,但其有效字符的个数却是7,最后一个字节存储字符串结束标志“\0”。
字符串的有效字符的个数是第一个“\0”前字符的个数的总和,有效字符的个数也称为字符串长度。
例如:
"computer"长度为8。
"\n"长度为1。
"abc\n\345\0china"长度为5,而不是16,因为“\0”后的字符是无意义的,“\n”是一个转义字符,“\345”是八进制表示的一个字符。
"\"\'\\"长度为3,因为“\"”、“\\”与“\'”分别为一个字符。
5.符号常量
在C语言中,可以用一个标识符来表示一个常量,称之为符号常量。
符号常量在使用之前必须先定义,其一般形式为:
#define标识符常量
其功能是把该标识符定义为其后的常量值。
例2.2
#definePI3.14159/*定义符号常量PI*/
main()
{
floatarea,r; /*定义area,r为float型变量*/
r=5;/*使r的值为5*/
area=PI*r*r;/*计算以r为半径的圆面积*/
printf("area=%f\n",area);/*输出圆面积*/
}
2)一个变量占据一定字节的存储空间。
在存储空间中存放变量的值。
由于变量所表示的数据可以是除void以外的任意类型的数据,所以变量在内存中所占的存储空间根据数据类型的不同而不同。
每一个变量有而且只能有一种类型,变量的类型决定了该变量在内存中所占的字节数。
在变量进行相关运算时,变量的类型是编译系统检查运算是否合法的依据。
3)一个变量在使用前必须有一个确定的值。
变量定义后,由于变量占据一定的内存空间,所以变量是有值的,但是该值是不确定。
如果用该不确定的值参与运算,所得到的值也是不确定的。
2.变量定义的格式
变量定义的一般形式为:
[修饰符]类型说明符变量表列;
[]是可选项
定义变量时应注意以下几点。
(1)变量定义应该位于函数体的数据描述部分。
(2)类型符说明变量从属的类型,有:
int、float、double和char。
(3)修饰符部分可有可无,如int有long、short和unsigned修饰符。
(4)“[修饰符]类型符”部分决定了变量的类型,确定了变量在内存中所占的字节数。
(5)变量表列部分是所定义变量的变量名,如果定义多个同一类型变量的话,变量名中间用“,”作为分隔符构成变量表列。
(6)变量定义的每一项应有空格作为分隔符。
(7)变量定义的结束符是分号。
3.变量的初始化
变量在使用前应该有确定的值。
在程序中常常需要对变量赋初值,以便使用变量。
[修饰符]类型说明符变量1=值1,变量2=值2,……;
例如:
inta=5;/*初始化变量a为5*/
floatx=3.2,y=1.2e10;/*初始化x为3.2,y为1.2x1010*/
charch='K';/*初始化ch为'K'*/
intd=5;/*初始化d为5*/
intb=d;/*初始化b为5,在intb=d;定义时d应有确定的值*/
4.不同类型变量的说明
(1)整型变量
整型变量可分为基本型、短整型、长整型和无符号型4类。
①基本型
基本型的类型说明符为int,在内存中占2个字节,其取值的范围为215~2151,即32768~32767。
②短整型
短整型的类型说明符为shortint或short,所占字节和取值范围均与基本型相同。
③长整型
长整型的类型说明符为longint或long,在内存中占4个字节,其取值范围是231~2311,即2147483648~2147483647。
④无符号型
无符号型的类型说明符为unsigned。
无符号型又可与上述3种类型匹配而构成。
无符号基本型。
类型说明符为unsignedint或unsigned,取值范围是0~65535。
无符号短整型。
类型说明符为unsignedshort,与无符号基本型一样。
无符号长整型。
类型说明符为unsignedlongint或unsignedlong,取值范围为0~2321,即0~4294967295。
整型变量的说明形式为:
[修饰符]int变量表列;
(2)浮点变量
浮点变量分为单精度浮点型和双精度浮点型两类。
单精度浮点型类型说明符为float,双精度浮点型类型说明符为double。
浮点变量说明的格式为:
float变量表列;
或
double变量表列;
例如:
floatx,y;/*定义x,y为单精度浮点型*/
doublea,b,c;/*定义a,b,c为双精度浮点型*/
floatx=1234.56789;/*定义x为单精度浮点型,并初始化值为1234.567*/
(3)字符型变量
字符型变量的取值是字符型数据。
字符型变量的类型说明符是char。
字符型变量类型说明的格式:
char变量表列;
例如:
charc1,c2;/*定义c1,c2为字符型*/
2.3运算符及其表达式
2.3.1C运算符概述
运算是对数据进行加工的过程,描述各种不同运算的符号称为运算符。
参加运算的数据称为运算对象或操作数。
用运算符和括号将运算对象连接起来的符合C语言语法规则的式子称为C语言表达式。
C语言的运算符不仅具有不同的优先级,而且还有结合性的特性。
表达式中各运算对象参与运算的先后顺序不仅要遵守运算符优先级别的规定,还要受运算符结合性的制约,以便确定运算符是和左侧的运算对象结合,还是和右侧的运算对象结合。
2.3.2算术运算符及算术表达式
1.算术运算符
C语言提供了5个基本的算术运算符:
加法运算符
-减法运算符,负号运算符
*乘法运算符
/除法运算符
%取余运算符或称模运算符
运算符,的优先级相同,*,/,%的优先级相同,*,/,%的优先级高于和运算符,算术运算符都是左结合的运算符。
2.算术表达式
用算术运算符和括号运算符将运算对象连接起来的符合C语言规则的式子,称为算术表达式。
算术表达式的计算符合运算符优先级和结合性的原则。
计算表达式时的具体过程是:
对表达式自左向右扫描运算对象,然后考察运算对象两侧的运算符。
如果优先级不相同,则该运算对象和高优先级的运算符结合,当某运算符所需的运算对象全部都和该运算符结合后进行运算,运算后的结果就是下一个被处理的运算对象,否则继续扫描下一个运算对象;如果两侧的运算符优先级相同,则按照运算符的结合性原则去结合运算。
如果运算符是左结合的,则和左侧的运算符结合,如果是右结合的,则和右侧的运算符结合。
2.3.3自增自减运算符及含自增自减表达式
C语言中提供了两个特殊的运算符,自增运算符和自减运算符。
它们都是单目运算符,运算对象可以位于运算符前面,也可以位于运算符后面。
当运算符位于运算对象前面时,称为前缀运算符,如i和i;当运算符位于运算对象后面时,称为后缀运算符,如i和i。
自增自减运算符的功能是将运算对象加1或减1后,再将结果保存到运算对象中去,如i等同于ii1。
自增自减运算符的运算对象只能是变量。
当表达式中出现自增自减运算符时,表达式的求值过程如下。
(1)自增自减运算符是后缀运算符时,应先使用自增自减运算符的运算对象计算整个表达式的值,然后再计算自增自减。
例4.4
main()
{
inti=2,j=3;
intk;
k=(i++)+(j++)+4;
printf("result:
k=%d,i=%d,j=%d\n",k,i,j);
}
程序运行结果为:
result:
k=9,i=3,j=4
表达式k(i)(j)4的运算可理解为:
先运算表达式kij4,再计算i和j。
(2)自增自减运算符是前缀运算符时,应先完成自增自减,然后使用运算后的结果计算整个表达式的值。
例4.5
main()
{
inti=2,j=3;
intk;
k=(++i)+(++j)+4;
printf("result:
k=%d,i=%d,j=%d\n",k,i,j);
}
程序运行结果为:
result:
k=11,i=3,j=4
表达式k(i)(j)4的运算可理解为:
先运算i和j,再计算表达式kij4。
(3)当表达式中既含有后缀自增自减运算符,又含有前缀自增自减运算符时,应先计算所有的前缀自增自减运算,再计算整个表达式的值,最后计算所有的后缀自增自减运算。
例2.6
main()
{
inti=2,j=3;
intk;
k=(i++)+(j++)+4+(++i)+(++j);
printf("result:
k=%d,i=%d,j=%d\n",k,i,j);
}
程序运行结果为:
result:
k=18,i=4,j=5
表达式k(i)(j)4(i)(j)的运算可理解为:
先运算i和j,再计算表达式kij4ij,最后计算i和j。
注意:
在运算的时候变量i,j是变化的,但在某瞬间值是确定的。
2.3.4赋值运算符和赋值表达式
1.简单的赋值运算符和赋值表达式
C语言的赋值运算符是“”,该运算符是双目运算符,它的优先级仅高于逗号运算符,是右结合性的。
由赋值运算符构成的赋值表达式的格式为:
变量确定的值
赋值表达式会得到两个值。
一个是赋值运算符左侧变量的值;另一个是赋值表达式的值,表达式的值与变量的值是相同的。
下列表达式是合乎C语言表达式规则的表达式:
a=123
a=123.456
c=a+'A'
x=a+c
a+(x=a+4)/c/*算术表达式*/
(x=a)+(b=3)/*合法的算术表达式*/
2.复合的赋值运算符和复合的赋值表达式
在赋值运算符“”前加上其他的运算符,可以构成复合的赋值运算符。
如在“”前加上“”运算符就构成了“”运算符。
C语言提供了10种复合的赋值运算符,它们是
+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=
其中前5个是复合的算术赋值运算符,后5个是复合的位运算赋值运算符。
复合的赋值运算符是双目运算符,优先级和赋值运算符相同,也是右结合性的。
由复合的赋值运算符构成的赋值表达式的格式为:
变量<运算符=>确定的值
它等效于
变量=变量<运算符>确定的值
例如:
a+=5等价于a=a+5
x*=y+7等价于x=x*(y+7)
r%=p等价于r=r%p
2.3.5逗号运算符和逗号表达式
在C语言中逗号“,”也是一种运算符,称为逗号运算符。
逗号运算符的优先级是最低的。
其功能是把两个表达式连接起来组成一个表达式,称为逗号表达式。
逗号表达式的一般形式为:
表达式1,表达式2
逗号表达式的求值过程是顺序求解表达式1、表达式2的值,并以表达式2的值作为整个逗号表达式的值。
例2.7
main()
{
inta=2,b=4,c=6,x,y;
y=(x=a+b),(b+c);
printf("y=%d,x=%d",y,x);
}
程序运行结果为:
y=6,x=6
本例中的y等于6,而逗号表达式的值y(xab),(bc)是10。
2.3.6表达式小结
判断表达式类型应根据表达式中出现的运算符的优先级来判定。
如果某一运算符在整个表达式的运算过程中优先级是最低的,或者是最后运算的运算符,那么表达式的类型就是该运算符所从属的类型。
例如:
x=(a=3,b*3)是赋值表达式;
x=a=3,6*a是逗号表达式;
(x=8)>(y=9)+6是关系表达式;
(k=i++)/3*a是算术表达式。
2.4C语言中的类型转换
C语言规定不同类型的数据不能够直接进行运算,只有相同类型的数据才可以。
但是在描述表达式时,参与运算的运算对象却可以是不同类型的数据,于是在表达式进行运算的时候存在类型的转换问题。
C语言中有两种形式的类型转换。
2.4.1类型的自动转换
1.赋值表达式中的类型转换
其转换的依据是将赋值运算符右侧的确定的值按照左侧变量定义的类型存储,即要把确定的值转换为变量定义的类型。
为了方便描述,以下所有的示例都假定有如下的变量说明:
inta;
longintb;
unsignedint
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 电子 教案