C语言程序设计
2021-12-20 14:36:55 0 举报
AI智能生成
C语言程序设计与C语言 数据类型,运算符和表达式 顺序结构程序设计 分支结构程序设计 循环结构程序设计 总结
作者其他创作
大纲/内容
第二章 数据结构,运算符和表达式
C语言的数据类型
基本类型
整型
字符型
实型(浮点型)
构造类型
数组类型
结构体类型
共用体类型
枚举类型
指针类型
空类型
C语言的常量
直接常量
整型常量
十进制
有数字0—9,正负号组成
八进制
以0为前缀,后面数字由0—7组成
十六进制
以0x或0X为前缀后面由数字0—9和字母大小写都可组成
十六进制一般是无符号数
十六进制一般是无符号数
实型常量
小数形式
如12.367 -17.266均为正确的实数
指数形式
以小数形式表达实数时必须要有小数点
字符型常量p28
字符常量只能用单引号括起来,不能用双引号或其它括号
字符常量只能是单个字符不能是字符串
字符可以是ASCII字符集中的任意字符
c常见的转义字符在p28
字符串常量
符号常量
增加程序的可读性
提高程序的可维护性
简化程序代码
方便数组定义
C语言的变量
变量定义与使用
变量定义
类型说明符必须是C语言中的有效数据类型
变量名表可以由一个或多个变量名组成,各变量之间用“,”分隔
变量的定义必须放在变量的使用之前,一般在函数体的开头部分
变量的初始化
定义变量的同时对变量赋值
变量的使用
先赋值后引用
整型变量
各种无符号整数所占的字节数与相应的有符号整数相同
有符号整数以二进制补码形式存储
无符号整数以二进制原码形式存储
实型变量
单精度型数据能保留7位小数,双精度型数据能保留16位有效小数
字符型变量
运算符和表达式
赋值运算符和赋值表达式
简单赋值运算符
将一个数值赋值给一个变量
也可将表达式赋值给一个变量
复合赋值运算符
图表在p36
赋值表达式
变量=表达式
计算运算符右侧表达式的值
左侧的变量
算术运算符和算术表达式
基本的算术运算符表在p37
自增,自减运算符
++为自增 其功能使变量的值自加1
前缀先加后用
后缀先用后加
算术运算符的优先级和结合性
算术表达式
表达式中的乘号不能省略,且表达式中的所有字符均在行上
表达式还可以使用多层圆括号,但要注意括号的配对
逗号运算符和逗号表达式
逗号表达式的执行顺序是:从左到右依次计算每个表达式的值,并把最后一个表达式的值作为整个逗号表达式的值
逗号运算符是双目运算符,其优先级最低,是左结合的
并非所有出现逗号表达式的地方都为逗号表达式,如在变量说明语句中,以及函数参数表中逗号只是用作各变量之间的分隔符
求字节数运算符
运算符sizeof用于计算数据类型所占的字节数
字符串的长度应增加一个字节,用于存放字符串的结束符‘\n’
数据类型转换
自动类型转换
转换图在p41
强制类型转换
需强制转换中的 表达式一定要用括号括起来,否则支队紧随括号后的表达式进行运算
是一种不安全的转换,如从高级转换成低级则会损失数据的精确度
并不改变表达式中变量的类型和值
第四章 分支结构设计
关系,逻辑,条件运算符
关系运算符,逻辑运算符,条件运算符
关系运算符和关系表达式
关系运算符
用于判断两个操作数的大小关系
是双目运算符,结合方式是左结合
关系运算符的优先级低于算术运算符,但高于赋值运算符
>,>=的优先级高于==的优先级
关系表达式
用关系运算符将两个表达式连接起来的式子
只能描述单一的条件
比较两个表达式的大小,返回一个逻辑值
关系表达式中允许出现嵌套情况
=是赋值运算符,==是关系运算符
对实数进行相等判断可能得不到正确的结果
关系表达式中可以出现赋值运算符
主要用分支结构中的条件判断
逻辑运算符和逻辑表达式
逻辑运算符
可将若干个关系表达式连接起来且正确描述上述关系
! 逻辑非;&& 逻辑与;||逻辑或:优先级从左到右增高
&&和||运算符都是双目运算符,!为单目运算符
逻辑运算符表在P61
逻辑表达式
参与逻辑运算符的数据可以是1和0,也可以是非零值和0
还可以是任何类型的数据,但最终都是以非0和0来判断真假
可以用赋值运算符
只对决定整个表达式所需的最少数目的子表达式进行计算
逻辑运算符可能出现短路现象,后面的表达式不再计算
ch是英文字母 逻辑表达式为(ch>=’a'&&ch<=‘z’)||(ch》=‘A’&&ch<='z'
a,b不同时为0 逻辑表达式为!(a==0&&b==0)或a!=0||b!=0或a||b
ch是空格或回车 逻辑表达式为(ch==’‘||(ch=='\n')
year是闰年 即year能被4整除但不能被100整除,或year能被400整除 逻辑表达式为(year%4==0&&year%100!=0)||(year%400==0)
条件运算符和条件表达式
条件运算符
由?和:两个符号组成,用于条件求值
是三目运算符需要三个操作数
优先级低于逻辑运算符,高于赋值运算符
是右结合的
条件表达式
将3个表达式连接起来的式子
一般形式为:表达式1?表达式2:表达式3
系统会自动进行转换,表达式中级别类型较高的,并将其作为条件表达式的类型
表达式2和表达式3不仅可以是数值表达式也可以是函数表达式
条件表达式允许嵌套
使用if-else实现分支结构
if-else语句
双分支if语句图在p64
先求解表达式,判断是否为真,为真执行语句1,为假执行语句2
执行完语句都会结束整个if语句的执行
双分支if语句可以用条件表达式替换
当if语句中只给同一变量赋值时,可用条件表达式代替if语句
if语句和条件表达式可以是等价的
单分支if语句图在p66
先计算表达式,为真则执行语句;为假则不执行语句直接执行if语句的下一语句
语法上可以是任意类型的表达式
无论单双分支if语句表达式都用来描述判断的条件
被执行的语句均为单个语句
若要执行多个语句时,必须将这一组语句用大括号{}括起来形成复合语句
复合语句也可用做交换变量的值
if语句的嵌套流程题在p68
语句1和语句2可以嵌套另一个if语句,在缺省else部分的if语句也可嵌套另一个if语句
if语句可采用缩进格式,编译系统不会报错,但使程序结构更清晰易读
子主if语句嵌套的结构中一定要注意else与if之间的对应关系题
else总与它前面最近的一个未匹配的if语句相匹配
多分支if语句
多分支结构流程图在p71
是最常用的实现多分路的方法
若程序需要计算cos(x)的值,在程序开始处要包含数学库函数的头文件math.h
使用Switch语句实现分支结构图在p73
先计算Switch后面括号内的表达式
Switch后的表达式可以是任何表达式,其值只能为整型,字符型,枚举型之一
每个case后面的常量表达式的值互不相同步,否则就会出现互相矛盾现象
各个case和default的出现次序不影响执行结果题
Switch语句允许出现嵌套使用
Switch语句不使用break语句时
出现在执行相应语句后,不会跳出正在执行的Switch语句,会继续执行其后的所有语句
删去所有Switch语句,然后执行程序,分析其结果
分支结构程序设计
子主题标准格式实现p77
嵌套格式实现p78
多分支格式实现p79
第一章 程序设计与c语言设计
程序与程序设计语言
程序设计语言的发展
机器语言
汇编语言
高级语言
非结构化语言
结构化语言
面向对象语言
程序设计语言的功能
数据表达
流程控制
顺序控制结构
分支控制结构
循环控制结构
程序的算法表示
确定性,有穷性,可行性,有零个或多个输入,有一个或多个输出
用文字描述算法
用流程图描述算法
流程图的基本框架
三种基本控制结构
j交换两个变量的值
找最大数的流程
求两数的最大公约数的流程
伪代码表示
程序设计语言表示
C语言程序设计的特点
C语言的发展历史
C语言的特点
简洁紧凑,使用方便灵活
运算符丰富,表达能力强
可移植性好
生成的目标代码质量高,运行效率高
语言处理能力强
是一种结构化语言
C语言的约定
C语言中的约定
标识符
关键字
用户自定义标识符
预定义标识符
分隔符
C语言的语法成分
常量
运算符
表达式
语句
函数定义与调用
输入与输出
C语言程序的编辑,编译,连接与运行
程序设计的任务
分析问题
设计算法
程序设计
运行并调试程序
分析程序运行结果
编写程序文档
运行C语言的步骤与方法
编辑源程序
编译
连接
运行
第三章 顺序结构程序设计
C语言的语句
说明语句
int a,b定义两个整型变量
char ch定义一个字符型变量
表达式语句
c=a+b是一个赋值表达式
c=a+b;是一个表达式语句
分支语句
根据条件成立与否执行不同的语句
双分支if-else与多分支switch
循环语句
for语句
while语句
do-while语句
转向语句
break语句
goto语句
continue语句
return语句
复合语句
用一对大括号{}将若干语句顺序组合在一起所形成的语句
出复合语句外其他所有语句都以分号结束
空语句
只有一个分号(;)构成
一般用在程序的某个位置上,在功能上并不执行任何实际操作
用于循环语句中的循环时,可以实现延时作用
函数定义与调用
函数式完成特定功能的小模块,是c语言中唯一的种子程序
在c程序中包含若干个函数,复杂的任务通过调用这些函数来完成
花{}中的部分称为函数体,函数体由数据表达与流程控制语句组成
函数定义后,可在别的函数调用该函数
输入与输出
c语言没有提供用于数据输入与输出语句
通过系统提供的有关函数来实现(如scanf()和printf())
数据的输入和输出
输出函数(printf()和输入函数scanf())
printf()函数
格式控制说明
int 用%d
float和double型数据都用%f
普通字符
在输出数据时,需要原样输出的字符
格式字符与输出项要一一对应
可以没有输出项,只能用来输出一个字符串,也可以有多个输出项用逗号分隔
格式字符与输出项的个数应相同
若要输出‘%’,应在格式控制字符串中使用连续两个‘%’
scanf()函数
格式控制说明
其格式为以%开头的格式控制字符,不同类型的数据采用不同的格式控制字符
普通字符
输入项必须是地址,不能是变量名
格式字符可以指定输入数据所占的列数,系统会截取相应列数的数据
数据输入结束:空格,tab键,回车键,非法输入,指定宽度
用户也可以指定其他字符作为输入间隔
整型数据的输入和输出
输入输出所使用的格式控制字符表在p48
当格式字符的项数多于输出项是,多与格式字符的位置将会输出一个不确定的值
当格式字符的项数小于输出项时,多余的项数不会输出
实型数据的输入和输出
实型数据的输入输出所使用的的格式控制字符表在p51
在格式字符串的‘%’和格式字符之间也可以有一些修饰符
在输出实型数据时,可以指定输出的精确度,在格式字符串的‘%’和格式字符之间加入‘m,n’
使用scanf()函数输入实型数据时不能指明精度
字符型数据的输入和输出
使用scanf()函数和printf()函数对字符型数据进行输入输出
相应的格式控制字符为‘c’
也可在‘%’和‘c’之间加修饰符
使用getchar()函数和putchar()函数对字符型数据进行输入输出
该函数得到的字符可以赋给一个字符变量或整型变量
也可以不复制给任意变量,而直接作为该函数的参数
可以在printf函数中输出刚接收的字符
数据库函数
常见库函数在p54
指数函数exp(x)
绝对值函数fabs(x)
以e为底的对数函数log(x)
幂函数pow(x,y)
平方根函数sqrt(x)
第五章 循环结构程序设计
使用for语句实现循环结构
for 语句的基本语法
可应用于计数型的循环
循环变量赋初值是一个赋值语句,用于给循环变量赋初值
循环条件时一个关系表达式,决定何时终止循环
循环变量增量决定循环变量在完成一次循环后如何变化
for语句的一般表达式中省略表达式1
省略表达式1时,可将循环变量赋初值放在for之前
不能省略第一个冒号;
for语句的一般表达式中省略表达式2
省略表达式2时,表示不对循环进行控制,如果没有其他处理,会形成死循环
应避免这样使用for结构
for语句的一般表达式中省略表达式3
省略表达式3时,可以在循环体语句中加入修改循环变量的值的语句
for语句的一般表达式中表达式1和表达式3也可以是逗号表示
for语句的一般形式中表达式2的值只要非0,就执行循环体
for语句的一般形式中循环体语句可以省略
for循环使用示例
在for循环中,每读入一个字符,根据字符种类,选择不同的分支执行相应的运算
程序中使用字符输入函数getchar()读入字符,使用多分支if结构实现分支,用逻辑表达式判断字符种类
循环的次数是由输入字符是否为\n来控制,与变量i的计算次数无关
使用while语句实现循环结构
while语句的基本语法
while循环使用示例
循环体为一条完整的if语句,若有多条语句时,必须使用复合语句的形式
while后面的括号()不可省略
语句中的表达式可以是任意类型的表达式
可以是复合语句,当循环体由多条语句构成时,必须用大括号将这些语句括起来,形成复合句
为使循环能正常结束,循环体中应对表达式进行修正,使表达式的值趋近于“假”,避免出现死循环
使用do-while语句实现循环结构
do-while循环使用示例
在do之后不能有语句结束符;,因为该语句还没有结束
在while(表达式)之后必须有语句结束符;表示do-while语句到此结束
再循环体中必须有改变循环条件的语句,否则会出现死循环
改变循环结构的跳转语句
break语句
break语句用在循环语句和Switch语句中
用于循环语句中,可使程序终止循环而转去执行循环语句的后继语句
beak语句与if语句一起配合语句使用时,满足条件会跳出循环
需要循环条件永远成立,循环体中需要搭配“if(条件)break;”语句,循环在条件满足条件的情况下结束
continue语句
continue语句的作用是跳过循环体中continue后面的语句,继续下一次循环
continue语句只能用在循环语句中,常与if语句一起使用
注意continue语句与break语句有着本质的区别
continue语句只结束本次循环不终止整个循环的执行,而break语句的作用是强制停止整个循环程序
goto语句
goto语句标号是一个有效的标识符,使用时在语句标号的后面跟一个; 出现在函数中某语句的前面
程序执行到goto语句时,会控制跳转到该语句标号处,达到控制循环的目的
注意,语句标号必须与goto语句处于同一个函数中
通常goto语句与if语句连用是现循环控制
大型程序中由于goto语句可能存在的不合理的使用,会使程序结构变坏,所以结构化程序设计中,不建议使用goto语句
循环嵌套
使用for语句,while语句及do-while语句相互嵌套p105
使用循环嵌套时应注意几点
外循环执行一次,内循环要执行一轮
循环嵌套格式中的内循环体不允许出现交叉,即外循环要完全包含内循环
循环嵌套时,内循环使用break语句和continue语句时,只影响包含她们的内循坏,与外循环无关
内循环中使用的变量若要赋初值,一定要注意赋值语句的位置
典型算法举例
递推法
找出前后项的关系,应用循环结构实现算法,确定前后项的关键
迭代法
穷举法
在一个集合内对每个元素一一测试
0 条评论
下一页