C语言程序设计复习资料.docx
- 文档编号:12967816
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:129
- 大小:184.39KB
C语言程序设计复习资料.docx
《C语言程序设计复习资料.docx》由会员分享,可在线阅读,更多相关《C语言程序设计复习资料.docx(129页珍藏版)》请在冰点文库上搜索。
C语言程序设计复习资料
第1章概述
本章重点:
掌握C语言程序的结构和书写规则,以及TurboCV2.0的基本操作。
1.1C语言概述
1.C语言的诞生与发展(见教材)
2.C语言的特点(见教材)
3.在C语言中,除实现顺序、选择和循环三种基本结构等的9条控制语句外,输入输出操作均由标准库函数(不是C语言的组成部分)来实现。
所以学习C语言,不仅要学习这9条控制语句和各种运算符,而且要学习并掌握常用标准库函数的使用。
9种控制语句:
if()……else……
for(……)
while(……)
do……while(……)
continue
break
switch
goto
return
1.2简单C程序介绍
1.2.1C语言程序的总体结构
一个完整的C语言程序,是由一个main()函数(又称主函数)和若干个其它函数结合而成的,或仅由一个main()函数构成。
[例1.1]仅由main()函数构成的C语言程序。
/*功能:
仅由main()函数构成的C语言程序示例*/
main()
{printf(“ThisisaCprogram.\n”);}
程序运行结果:
ThisisaCprogram.
[例1.2]由main()函数和1个其它函数max()构成的C语言程序。
/*代码文件名:
AL1_2.C*/
/*功能:
由main()函数和1个其它函数max()构成的C语言程序示例*/
intmax(intx,inty)
{return(x>y?
x:
y);}
main()
{intnum1,num2;
printf(“Inputthefirstintegernumber:
”);
scanf(“%d”,&num1);
printf(“Inputthesecondintegernumber:
”);
scanf(“%d”,&num2);
printf(“max=%d\n”,max(num1,num2));}
程序运行情况:
Inputthefirstintegernumber:
6←┘
Inputthesecondintegernumber:
9←┘
max=9
[例1.3]改写[例1.2],交换main()函数和max()函数的前后位置。
源程序略。
程序运行情况:
Inputthefirstintegernumber:
6←┘
Inputthesecondintegernumber:
9←┘
max=9
1.函数是C语言程序的基本单位。
main()函数的作用,相当于其它高级语言中的主程序;其它函数的作用,相当于子程序。
2.C语言程序总是从main()函数开始执行。
一个C语言程序,总是从main()函数开始执行,而不论其在程序中的位置。
当主函数执行完毕时,亦即程序执行完毕。
习惯上,将主函数main()放在最前头。
1.2.2函数的一般结构
任何函数(包括主函数main())都是由函数说明和函数体两部分组成。
其一般结构如下:
[函数类型]函数名(函数参数表)函数说明部分
{说明语句部分;
执行语句部分;函数体部分
}
1.使用的语法符号约定
[]──方括号表示可选(即可以指定,也可以缺省)
……──省略号表示前面的项可以重复
|──多(含2)中选1
2.函数说明
由函数类型(可缺省)、函数名和函数参数表三部分组成,其中函数参数表的格式为:
数据类型形参[,数据类型形参2……]
例如,[例1.2]中的函数max(),其函数说明各部分如图1-1所示。
函数类型函数名函数参数表
↓↓↓
intmax(intx,inty)
图1-1函数说明部分结构图
注意:
在旧标准中,函数可以缺省参数表。
3.函数体
在函数说明部分的下面、大括号(必须配对使用)内的部分。
函数体一般由说明语句和可执行语句两部分构成:
(1)说明语句部分
说明语句部分由变量定义、自定义类型定义、自定义函数说明、外部变量说明等组成。
(2)可执行语句
一般由若干条可执行语句构成。
/*主函数main()*/
main()
{intnum1,num2;变量定义部分
printf(“Inputthefirstintegernumber:
”);
scanf(“%d”,&num1);
printf(“Inputthesecondintegernumber:
”);可执行语句部分函数体
scanf(“%d”,&num2);
printf(“max=%d\n”,max(num1,num2));}
4.说明
(1)函数体中的变量定义语句,必须在所有可执行语句之前。
(2)如果不需要,也可以缺省变量定义语句。
1.2.3源程序书写格式
格式特点:
1.习惯用小写字母,大小写敏感
2.不使用行号,无程序行概念
3.可使用空行和空格
4.常用锯齿形书写格式
5.所有语句都必须以分号“;”结束,函数的最后一个语句也不例外。
6.程序行的书写格式自由,既允许1行内写几条语句,也允许1条语句分写在几行上。
如果某条语句很长,一般需要将其分写在几行上。
1.3C语言的上机步骤
1.运行一个C语言程序的一般过程:
(1)启动TC,进入TC集成环境。
(2)编辑(或修改)源程序。
(3)编译。
如果编译成功,则可进行下一步操作;否则,返回
(2)修改源程序,再重新编译,直至编译成功。
(4)连接。
如果连接成功,则可进行下一步操作;否则,根据系统的错误提示,进行相应修改,再重新连接,直至连接成功。
(5)运行。
通过观察程序运行结果,验证程序的正确性。
如果出现逻辑错误,则必须返回
(2)修改源程序,再重新编译、连接和运行,直至程序正确。
(6)退出TC集成环境,结束本次程序运行。
第2章数据类型、运算符和表达式
本章重点:
主要介绍C语言数据类型、运算符和表达式。
重点要求学生掌握相关的运算法则及简单运算。
2.1数据类型
C语言提供的数据结构,是以数据类型形式出现的。
具体分类如下:
C语言中的数据,有常量和变量之分,它们分别属于上述这些类型。
2.2常量及标识符变量
2.2.1常量
1.标识符
定义:
用来标识变量、常量、函数等的字符序列
组成:
(1)只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线组成;
(2)不能使用关键字;(3)长度:
最长32个字符;(4)命名原则;(5)见名知意
例如,name/xm(姓名)、sex/xb(性别)。
(6)不宜混淆如l与I,o与0
2.常量
定义:
程序运行时其值不能改变的量(即常数)
分类:
(1)符号常量:
用标识符代表常量
定义格式:
#define符号常量常量
一般用大写字母,#define是宏定义预处理命令,不是C语句
(2)整型常量
三种形式:
●十进制整数:
由数字0--9和正负号表示.如123,-456,0
●八进制整数:
由数字0开头,后跟数字0~7表示.如0123,011
●十六进制整数:
由0x开头,后跟0--9,a--f,A--F表示.
如0x123,0Xff
整型常量的类型:
●根据其值所在范围确定其数据类型
● 在整常量后加字母l或L,认为它是longint型常量
(3)实型常量
表示形式:
●十进制数形式:
(必须有小数点)如0.123,.123,123.0,0.0,
● 指数形式:
(e或E之前必须有数字;指数必须为整数)如12.3e3,123E2,1.23e4,e-5。
实型常量的类型
(4) 默认double型
在实型常量后加字母f或F,认为它是float型
(5)字符常量
定义:
用单引号括起来的单个普通字符或转义字符.
字符常量的值:
该字符的ASCII码值
转义字符:
反斜线后面跟一个字符或一个代码值表示
[endif]>
(6)字符串常量
定义:
用双引号(“”)括起来的字符序列
存储:
每个字符串尾自动加一个‘\0’作为字符串结束标志
2.2.2变量
1.定义:
在程序运行过程中,其值可以被改变的量称为变量。
(1)变量名。
每个变量都必须有一个名字──变量名,变量命名遵循标识符命名规则。
(2)变量值。
在程序运行过程中,变量值存储在内存中。
在程序中,通过变量名来引用变量的值。
(3)C语言的关键字不能用作变量名。
变量的定义与初始化
在C语言中,要求对所有用到的变量,必须先定义、后使用;且称在定义变量的同时进行赋初值的操作为变量初始化。
(1)变量定义的一般格式
[存储类型]数据类型变量名[,变量名2……];
例如,floatradius,length,area;
(2)变量初始化的一般格式
[存储类型]数据类型变量名[=初值][,变量名2[=初值2]……];
例如,floatradius=2.5,length,area;
2.变量分类
根据占用内存字节数的不同,可以分为整型、实型和字符型。
整型变量
整型变量又分为4类:
(1)基本整型(类型关键字为int)。
(2)短整型(类型关键字为short[int])。
(3)长整型(类型关键字为long[int])。
(4)无符号整型。
无符号型又分为无符号基本整型(unsigned[int])、无符号短整型(unsignedshort)和无符号长整型(unsignedlong)三种,只能用来存储无符号整数。
实型变量
C语言的实型变量,分为两种:
(1)单精度型。
类型关键字为float,一般占4字节(32位)、提供7位有效数字。
(2)双精度型。
类型关键字为double,一般占8个字节、提供15--16位有效数字。
字符变量
字符变量的类型关键字为char,一般占用1字节内存单元。
2.3运算符与算术表达式
在C语言中,除控制语句和输入输出函数外,其它所有基本操作都作为运算符处理。
34种运算符:
算术运算符:
+-*/%++--
关系运算符:
<<===>>=!
=逻辑运算符:
!
&&||
位运算符:
<<>>~|^&赋值运算符:
=及其扩展
条件运算符:
?
:
逗号运算符:
指针运算符:
*&
求字节数:
sizeof强制类型转换:
(类型)分量运算符:
.->
下标运算符:
[]其它:
()-
2.3.1五种基本算术运算符
结合方向:
从左向右
优先级:
----->*/%----->+-
+、-(减法/取负)、*、/、%(求余数)
(1)关于除法运算/
C语言规定:
两个整数相除,其商为整数,小数部分被舍弃。
例如,5/2=2
(2)关于求余数运算%
要求两侧的操作数均为整型数据,否则出错。
2.3.2表达式和算术表达式
(1)表达式的概念
用运算符和括号将运算对象(常量、变量和函数等)连接起来的、符合C语言语法规则的式子,称为表达式。
(2)算术表达式的概念
表达式中的运算符都是算术运算符。
例如,3+6*9、(x+y)/2-1等,都是算术表达式。
2.3.3运算符的优先级与结合性
(1)C语言规定了运算符的优先级和结合性。
所谓结合性是指,当一个操作数两侧的运算符具有相同的优先级时,该操作数是先与左边的运算符结合,还是先与右边的运算符结合。
自左至右的结合方向,称为左结合性。
反之,称为右结合性。
结合性是C语言的独有概念。
除单目运算符、赋值运算符和条件运算符是右结合性外,其它运算符都是左结合性。
(2)表达式求值
1)按运算符的优先级高低次序执行。
例如,先乘除后加减。
2)如果在一个运算对象(或称操作数)两侧的运算符的优先级相同,则按C语言规定的结合方向(结合性)进行。
例如,算术运算符的结合方向是“自左至右”,即:
在执行“a–b+c”时,变量b先与减号结合,执行“a-b”;然后再执行加c的运算。
2.3.4数据类型转换
(1)在C语言中,整型、实型和字符型数据间可以混合运算(因为字符数据与整型数据可以通用)。
如果一个运算符两侧的操作数的数据类型不同,则系统按“先转换、后运算”的原则,首先将数据自动转换成同一类型,然后在同一类型数据间进行运算。
转换规则如图2-5所示。
1)横向向左的箭头,表示必须的转换。
char和short型必须转换成int型,float型必须转换成double型。
2)纵向向上的箭头,表示不同类型的转换方向。
例如,int型与double型数据进行混合运算,则先将int型数据转换成double型,然后在两个同类型的数据间进行运算,结果为double型。
注意:
箭头方向只表示数据类型由低向高转换,不要理解为int型先转换成unsigned型,再转换成long型,最后转换成double型。
(2)除自动转换外,C语言也允许强制转换。
数据类型强制转换的一般格式为:
(要转换成的数据类型)(被转换的表达式)
当被转换的表达式是一个简单表达式时,外面的一对圆括号可以缺省。
例如,
(int)(x+y)/*将x+y的结果转换成int型*/
2.3.5赋值运算
(1)简单赋值运算
赋值符号“=”就是赋值运算符,它的作用是将一个表达式的值赋给一个变量。
赋值运算符的一般形式为:
变量=赋值表达式
例如,x=5y=(float)5/2
如果表达式值的类型,与被赋值变量的类型不一致,但都是数值型或字符型时,系统自动地将表达式的值转换成被赋值变量的数据类型,然后再赋值给变量。
(2)复合赋值运算
复合赋值运算符是由赋值运算符之前再加一个双目运算符构成的。
复合赋值运算的一般格式为:
变量双目运算符=表达式
└──┬──┘
复合赋值运算符
它等价于:
变量=变量双目运算符(表达式)。
当表达式为简单表达式时,表达式外的一对圆括号才可缺省,否则可能出错。
例如,x+=3/*等价于x=x+3*/
y*=x+6/*等价于y=y*(x+6),而不是y=y*x+6*/
C语言规定的10种复合赋值运算符如下:
+=,-=,*=,/=,%=;/*复合算术运算符(5个)*/
&=,^=,|=,<<=,>>=;/*复合位运算符(5个)*/
(3)赋值表达式
由赋值运算符或复合赋值运算符,将一个变量和一个表达式连接起来的表达式,称为赋值表达式。
(a)一般格式
变量(复合)赋值运算符表达式
(b)赋值表达式的值
任何一个表达式都有一个值,赋值表达式也不例外。
被赋值变量的值,就是赋值表达式的值。
例如,“a=5”这个赋值表达式,变量a的值“5”就是它的值
2.3.6自增(++)、自减(--)运算
1.作用
自增运算使单个变量的值增1,自减运算使单个变量的值减1。
2.用法与运算规则
自增、自减运算符都有两种用法:
(1)前置运算──运算符放在变量之前:
++变量、--变量
先使变量的值增(或减)1,然后再以变化后的值参与其它运算,即先增减、后运算。
(2)后置运算──运算符放在变量之后:
变量++、变量--变量先参与其它运算,然后再使变量的值增(或减)1,即先运算、后增减。
自增、自减运算符的用法与运算规则示例。
/*程序功能:
自增、自减运算符的用法与运算规则示例*/
main()
{intx=6,y;
printf("x=%d\n",x);/*输出x的初值*/
y=++x;/*前置运算*/
printf("y=++x:
x=%d,y=%d\n",x,y);
y=x--;/*后置运算*/
printf("y=x--:
x=%d,y=%d\n",x,y);}
程序运行结果:
x=6
y=++x:
x=7,y=7
y=x--:
x=6,y=7
2.3.7逗号运算(,)及其表达式
C语言提供一种用逗号运算符“,”连接起来的式子,称为逗号表达式。
逗号运算符又称顺序求值运算符。
1.一般形式
表达式1,表达式2,……,表达式n
2.求解过程
自左至右,依次计算各表达式的值,“表达式n”的值即为整个逗号表达式的值。
例如,逗号表达式“a=3*5,a*4”的值=60:
先求解a=3*5,得a=15;再求a*4=60,所以逗号表达式的值=60。
第3章顺序结构程序设计
本章重点:
理解顺序结构的程序执行过程,掌握赋值语句和基本输入/输出函数的使用,能够用正确的格式进行输入与输出;掌握简单程序设计的一般方法,能够根据要求编写出简单的程序。
3.1结构化程序设计的基本概念
3.1.1C语言的语句(包括以下5个种类)
1.表达式语句
由表达式组成的语句称为表达式语句,其作用是计算表达式值或改变变量值。
它的一般形式是:
表达式;
2.函数调用语句
由一个函数调用加上一个分号构成函数调用语句,其作用是完成特定的功能。
它的一般形式是:
函数名(参数列表);
3.控制语句
控制语句用于完成一定的控制功能,以实现程序的各种结构方式。
C语言有9种控制语句,可分为三类:
(1)条件判断语句:
if语句、switch语句
(2)转向语句:
break语句、continue语句、goto语句、return语句
(3)循环语句:
for语句、while语句、dowhile语句
4.复合语句
复合语句是用大括号将若干语句组合在一起,又称分程序,在语法上相当于一条语句。
注意:
复合语句中最后一个语句的分号不能省略不写。
5.空语句
只有一个分号的语句称为空语句。
它的一般形式是:
;空语句是什么也不执行的语句,常用于循环语句中的循环体,表示循环体什么都不做。
3.1.2程序的3种基本结构
1.顺序结构;2.选择结构;3.循环结构。
具体详见教材第42—43页。
3.1.3赋值语句
1.语句介绍
赋值语句是一个应用十分普遍且最简单的语句。
赋值语句的一般形式:
x=e;
其中:
x是变量名,“=”前面已介绍过,是赋值号,e是表达式。
赋值语句的功能是将赋值号右边表达式的值计算出来,再赋给赋值号左边变量。
2.赋值表达式与赋值语句的区别
(1)赋值表达式不能有分号“;”,而赋值语句一定要有分号“;”,这是最本质的区别。
(2)赋值表达式中的赋值号“=”可以连用,而赋值语句中的赋值号“=”不能连用。
(3)赋值表达式可以包括在其他表达式之中。
3.2数据的输入和输出
3.2.1格式化输出函数printf()
printf()函数的功能是向系统指定的设备输出若干个任意类型的数据。
1.printf()函数调用形式
printf函数是一个标准库函数,其调用的一般形式:
printf(格式控制字符串,输出列表);
printf("a=%d\n",a);
上式中”a=”表示一般字符,原样输出;”%d”表示格式说明;”\n”转义字符,表示换行;最右边的”a”表示输出列表。
2.对于printf()函数具体的参数请参阅教材P47和P48的表格说明。
3.关于printf()函数的注意事项:
(1)可以在格式控制字符串中包含前面所讲的“转义字符”,如“\n”、“\t”、“\r”、“\b”、“\377”等。
(2)控制输出类型除X、E、G外,必须是小写字母。
如%d不能写成%D。
(3)若想输出字符“%”,则在格式字符串中用连续两个%表示。
如:
printf("%f%%",1.0/4);则输出:
0.250000%。
3.2.2格式化输入函数scanf
scanf()函数的功能是从键盘上将数据按用户指定的格式输入并赋给指定的变量。
1.scanf()函数调用形式:
scanf(格式控制字符串,地址列表);
其中格式控制字符串的定义与使用方法和printf函数相似,但不能显示非格式字符串,即不能显示提示字符串。
地址列表是要赋值的各变量地址。
地址是由地址运算符“&”后跟变量名组成,如&x表示变量x的地址。
&是取地址运算符,其作用是求变量的地址。
2.格式说明符
%[*][输入数据宽度m][长度]类型
其中:
[]:
表示可选项
*:
表示输入的数值不赋给相应的变量,即跳过该数据不读。
[输入数据宽度m]:
m是十进制正整数,表示按m的宽度输入数据。
[长度]:
长度格式符为l和h,l表示输入长整型数据或双精度实型数据;h表示输入短整型数据。
类型:
是格式说明符中必须要有的,其格式符的意义与printf()函数基本相同,具体如表教材P503-3和3-4所示。
4.例子:
分析程序的结果
#include
main()
{
inta,b,c;
scanf("%3d%3d%4d",&a,&b,&c);
printf("\na=%d,b=%d,c=%d\n",a,b,c);
}
#include
main()
{
charstr1,str2;
scanf("%c%c",&str1,&str2);
printf("\n%c%c\n",str1,str2);
}
3.2.3字符数据的输入与输出
1.字符输入函数getchar()
字符输入函数getchar()的功能是从标准设备(键盘)上读入一个字符。
其一般调用形式:
getchar();
该函数没有参数,但一对圆括号不能省略。
getchar()只能从键盘上接收一个字符。
2.字符输出函数putchar()
字符输出函数putchar()的功能是向标准输出设备(显示器)输出一个字符。
其一般调用形式:
putchar(c);
其中:
c是参数,它可以是整型或字符型变量,也可以是整型或字符型常量。
当是整型量时,输出以该数值作为ASCII码所对应的字符;当是字符型量时,直接输出字符常量。
3.3顺序结构的程序设计举例
例一、输入三角形的三条边,编程求该三角形的面积
#include
#include
main()
{
floata,b,c,s,area;
scanf("%f%f%f",&a,&b,&c);
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("\na=%.2f,b=%.2f,c=%.2f\n",a,b,c);
printf("\narea=%.3f\n",area);
}
例二、
#include
main(){intx=1,y=5;printf("x=%%d,y=%%d",x,y);}
【分析】本程序格式控制字符串中,有两个连续的%%。
前面已经讲过,两个连续的%%表示输出一个%,因此变量x,y没有对应的输出格式,只能输出双引号中的字符。
第4章选择结构程序设计
本章重点:
掌握关系表达式和逻辑表达式的组成及运算,理解分支程序设计的概念,掌握if语句、switch语句的基本
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 复习资料
![提示](https://static.bingdoc.com/images/bang_tan.gif)