C语言程序设计
2021-12-21 11:51:34 35 举报
AI智能生成
C语言程序设计前五章流程图版描述
作者其他创作
大纲/内容
第一章 程序设计与C语言
程序与程序设计语言
程序设计语言的发展
机器语言
采用二进制码,由0与1组成
通常也称低级语言
汇编语言
采用助记符来代替机器指令的二进制码。从而可以使运算指令使用符号而不在使用二进制表示
通常也称低级语言
高级语言
非结构化语言
编程风格随意,没有编程规范,程序难以阅读和维护。早期的FORTRAN,ALGOL和BASIC都属于非结构化语言
就是隐患多,软件的正确性不会
结构化语言
程序构造清晰,易与阅读和维护。QBASIC、Pascal和C语言都属于结构化语言
面向对象的语言
开发应用程序会更加容易,耗时少,效率更高
程序设计语言的功能
数据表达
数据是计算机的处理对象,数据类型就是对某些具有相同性质的数据集的总称
流程控制
顺序控制结构
分支控制结构
循环控制结构
三种循环的共同特点
1、只要单一的入口或单一的出口
2、结构中的每个部分都有被执行的可能
3、结构内不应出现永不终止的死循环
- 程序的算法表示(软件的主题是程序,程序的核心是算法)
具有1、确定性 2、有穷性 3、可行性 4、有零个或多个输出 5、有一个或多个输入
可用文字,流程图或伪代码来描述算法
C语言程序设计的特点
C语言的特点
1、C语言语句简洁紧凑,使用方便灵活。
2、运算符丰富,表达能力强
3、C语言程序可移植性好
4、生成的目标代码质量高,运行效率高
5、语言处理能力强
C语言是一种结构化语言
C语言中的约定
标识符
由字母、数字和下划线组成,其中第一个字符必须是字母或下划线
关键字
是C语言规定的、赋予特点含义和有专门用途的标识符
用户自定义标识符
预定义标识符
分隔符
C语言的语法成分
1、常量
2、变量
3、运算符
4、表达式
5、语句
是程序最基本的执行单位,以分号结尾
6、函数定义与调用
7、输入与输出
输入scanf(),输出printf()
C语言的编辑、编译、链接与运行
程序设计的任务
1、分析问题,2、设计问题,3、程序循环,4、运行并调试程序,5、分析程序运行结果,6、编写程序文档
运行C程序的步骤与方法
编制源程序<对源程序进行编译<与库函数链接<运行目标程序
1、编制源程序
后缀名.c
2、编译
后缀名.obj
3、链接
后缀名.exe
4、运行
第二章 数据类型、运算符与表达式
C语言的数据类型
1、基本类型
整型
字符型
实型(浮点型)
2、构造类型
数组类型
结构体类型
共用体类型
枚举类型
3、指针类型
4、空类型
C语言的常量
直接常量
1、整型常量
即整数,包括正、负整数和零。在C语言中,整型常量可以用十进制、八进制和十六进制表示
十进制:由数字0到9,正、负组成
八进制:由0为前缀,其后由数字0到7组成,一般为无符号数
十六进制:以0x或0X为前缀,其后由数字0到9和字母A到F组成。一般为无符号数
2、实型常量
即实数,又称浮点数。C语言中只能用十进制表示
表示方法
小数形式:由整数部分,小数点和小数部分组成整数部分或小数部分为0时可忽略不写,但小数点不可忽略
注意:必须有小数点,且小数点前后至少一边要有数字
指数形式:由尾部部分、字母E或e和指数部分组成,格式为·:±尾数E指数。如1.23E-2,它的数值为1.23×10^2
注意:字母E(或e)的前后必须有数字,且整数部分只能是整数
在C语言中,实型常量默认为是double型的实数,如果在后面加上字母f或E,则认为是float型的实数
3、字符型常量
指单个字符,用一对单引号及其括号所括起来的字符来表示
特点
1、只能用单引号括起来,不能用双引号或其它括号。
2、只能是单个字符,不能是字符串
可以说ASCII字符集中的任意字符
转移字符 P28,由多个字符组成,但它是一个字符常量,只代表一个字符
4、字符串常量
由一对双引号括起来的零个或多个字符序列。字符串中可以说空格字符、转义字符和其它字符,也可以使用汉字等文字符号
注意:系统会自动在每个字符串的尾部加上'\0',因此n个字符组成的字符串,在内存中要占用n+1个字节空间
符号常量
定义:用一个标识符来表示一个常量
一般形式:#define 标识符 常量值
例:#define xp 3.145
好处
1、增加程序的可读性
2、提高程序的可维护性
3、简化程序代码
4、方便数组的定义
C语言的变量
变量的定义与使用
变量的定义
格式:类型说明符 变量名表;
1、类型说明符必须是C语言中的有效数据类型,该类型决定了编译时分配给变量的内存单元的多少
2、变量名表可以由一个或多个变量名组成,各变量名之间用“,”分隔。
3、变量的定义必须放在变量的使用之前,一般在函数体的开头部分进行定义。
变量的初始化
C语言允许在定义变量的同时对变量赋值
注意
1、对一个变量赋初值后,该值被储存在分配给该变量的内存空间中
2、不允许对多个未定义的同类型变量连续初始化
3、初始化时,“=”左右两边的类型要一致,否则系统会进行自动赋值转换
4、没有进行初始化的变量,其值是由定义时所使用的储存类型决定的
变量的使用
变量定义之后,就可以在程序中使用
整型变量
可分6种,详细可去P33
1、各种无符号整数所占的字节数与相应的有符号整数相同
2、有符号整数以二进制补码形式储存
3、无符号整型以二进制原码形式储存
实型变量
关键字:float 类型:单精度型 占用字节:4 保留有效数字:7 取值范围:3.4E-38到3.4E+38
关键字:double 类型:双精度型 占用字节:8 保留有效数字 16 强制范围:1.7E—308到1.7E+308
字符型变量
即字符常量
运算符和表达式
赋值运算符和赋值表达式
简单赋值运算符
就是“=”
例:c=3 意:把3赋值给c
复合赋值表达式
在简单赋值运算符前加上算术运算符
例:详细见P36,要看的自己翻书找哦
变量=表达式 由赋值运算符将一个变量和一个表达式连接起来的式子所组成
算术运算符和算术表达式
基本的算术运算符:+、-、*、/、% 详见P37
双目运算符,“-”也可以是单目运算符
自增、自减运算符:++,--
单目运算符
算术运算符的优先级和结合性
“++、--、-”>“*、/、%”>“+、-”
单目运算符是右结合,双目运算符是左结合
算术表达式
由算术运算符、运算对象和括号连接起来的式子
注意
表达式中乘号不能省略,且表达式中所以字符均在同一行
在表达式中还可以使用多层圆括号,但要注意括号的配对
子主题
在C语言中5*6/4不等于6/4*5
逗号运算符和逗号表达式
逗号表达式的一般形式:表达式1,表达式2,....,表达式n
C语言中“,”也是一种运算符,称为逗号运算符
逗号运算符是双目运算符,其优先级最低,是左结合
求字节数运算符
运算符sizeof用于计数数据类型所占字节,它说一个单目运算符,优先级高于双目运算符,其一般形式;sizeof(表达式)或sizeof表达式 sizeof(数据类型)详见P40
char 1字节,short int 2字节, int 4字节 float 4字节 double 8字节
数据类型转换
自动类型转换
详见P41
强制类型转换
(类型说明符)(表达式)
采用强制表达式类型转换运算符将某种数据类型强制转换成指定的数据类型
注意
需强制类型转换中的表达式一定要括起来,否则只对紧随括号后的量进行类型转换
强制类型转换是一种不安全的转换,如果是从高将类型转换成低级类型,则会损失数据的精度
强制类型转换并不改变表达式中变量的类型和值
第三章 顺序结构程序设计
C语言的语句
C语言中,语句是以分号结尾的字符序列,是程序最基本的执行单位,分号是C语言的必要组成部分。书写程序代码时,一行可以写几个语句,一个语句也可以写在多行上。
1、说明语句
用于定义程序所使用的变量与类型
2、表达式语句
表达式语句由表达式加上“;”组成。
3、分支语句
实现分支控制过程,根据条件成立与否执行不同的语句。其由两种分支结构
- 双分支if-else语句
2、多分支switch语句
4、循环语句
for语句
while语句
do-while语句
5、转向语句
break语句、goto语句、continue语句、return语句
6、复合语句
用一对大括号{}将若干语句顺序组成在一起所形成的语句
7、空语句
只由一个分号“;”构成
8、函数定义与调用
函数是完成特定功能的小模块,是C语言中唯一的一种子程序,常常在一个C程序中包含若干个函数,复杂的任务通过调用这些函数来完成。
9、输入与输出
C语言没有提供用于数据输入与输出的语句,所有的输入与输出都是通过由系统提供的有关函数(如sscanf()和printf()函数)来实现的
数据的输入与输出
输出函数(printf()和输入函数scanf())
printf()函数
一般格式:printf(“格式控制字符串”,输出项表列)
格式控制说明:以%开头,不同类型的数据采用不同的格式控制字符,以说明输出数据的类型、形式、长度、小数位数等。
普通字符:在输出数据时,需要原样输出的字符
注意:格式字符与输出项的类型要一一对应,不同类型的数据所使用的格式字符不同
一般情况下,格式字符与输出项的个数应相同。输出个数与格式字符的个数为准
若输出项是表达式时,printf()函数将按从右到左的顺序计算出其值后输出。
scanf()函数
一般调用形式:scanf("格式控制字符串",输出项表列)
格式控制资格:同上
普通字符:同上
整型数据的输入与输出
详见P48、49
实型数据的输入与输出
详见P51
字符型数据的输入与输出
使用scanf()函数与printf()函数对字符型数据进行输入输出(可用于多个字符的输入输出)
使用getchar()函数和putchar()函数对字符型数据进行输入和输出(只能用于单个字符的输入和输出)
设ch为字符型变量:ch=getchar()
putchar(输出参数)
数据库函数
指数函数exp(x)
绝对值函数fabs(x)
以e为底的对数函数log(x)
幂函数pow(x,y)
平方根函数sqrt(x)
第四章 分支结构程序设计
关系运算符、逻辑运算符、条件运算符
关系运算符与关系表达式
1、关系运算符
用于判断两个操作数的大小,C语言中有六个关系符
>,>=,<,<=,==(等于),!=(不等于)
都是双目运算符,结合方向为左结合
其优先级低于算术运算符,高于赋值运算符
2、关系表达式(用关系运算符将两个表达式连接起来的式子)
表达式1关系运算符 表达式2
各种运算符的优先级从高到低的顺序
!<算术运算符<关系运算符<&&和||<赋值运算符
中间三个是左结合,两边是右结合
逻辑运算符与逻辑表达式
1、逻辑运算符
!(非)右结合,&&(与)左结合,||(或)左结合
就非运算符!是单目运算符,与运算符&&和或运算符||是双目运算符
2、逻辑表达(用逻辑运算符将两个表达式连接起来的式子)
表达式1 逻辑运算符 表达式2或逻辑运算符 表达式1
条件运算符和表达式
1、条件运算符
由“?”和":"两个符号组成,用于条件求值
2、条件表达式
表达式1?表达式2:表达式3
条件表达式中表达式的类型可以不同,且结果为表达式2和表达式3中类型较高的类型
条件表达式中表达式也是是数值表达式,也可以是赋值表达式或函数表达式
使用if-else实现分支结构
if-else语句
1、双分支if-else语句
一般形式:if(表达式)回车 语句1;回车else回车 语句2:;
2、单分支if语句
if(表达式)回车 语句;
if语句的嵌套
一个if语句中包含一个或多个if语句的现象
多分钟if语句
if(表达式1)回车 语句1;回车else if(表达式2)回车语句2;回车.....else if(表达式n-1)回车语句n-1;回车else回车 语句n
使用switch语句实现分支结构
详见P73
switch后的表达式可以是任何表达式,其值只能为整型、字符型、枚举型之一
各个case和default的出现次序不影响执行结果
可以让多个case共用一组执行语句
每个case后面的常量表达式的值互不相同,否则就会出现互相矛盾的现象
switch允许嵌套使用
switch语句中不使用break语句时,不会跳出正在执行的switch语句,而会继续其后的所有语句
default语句,
第五章 循环结构程序设计
使用for语句实现循环结构
for(表达式1;表达式2;表达式3)回车 循环体语句;
1、首先执行表达式1. 2、判断表达式2,真则执行循环体语句,然后执行第三步,假则结束循环,执行第五步
3、计算表达式3, 4、返回第二步继续执行
5、循环结束,继续执行for语句的下一条语句
若无表达式2,则会形成死循环
表达式1、2、3可以省略,但“;”不可省略
表达式1可在for语句前补上,表达式3可以在循环体语句中
使用while语句实现循环结构
while(表达式)回车 循环体;
1、结束表达式的值,真则执行第二步,假则转到第四步
2、执行循环体语句。 3、返回第一步
4、结束循环,执行while语句的下一条语句
使用do-while语句实现循环结构
do回车 循环体 回车while(表达式);
1、执行循环体语句
2、计算表达式的值,真则返回第一步,假则执行第三步
3、结束循环,执行do-while语句的下一条语句
在do之后不能由语句结束符“;”,因为该语句还没有结束
改变循环结构的转跳语句
1、break语句
用于循环语句时,可使程序终止循环而去执行循环语句的后续语句
通常与if语句一起配合使用,即满足条件时便跳出循环
2、continue
跳过循环体中continue后面的语句,继续下一次循环,只能用在循环语句中,通常与if语句一起使用
3、goto
goto 语句标号;
语句标号是一个有效的说明符,使用时在语句标号的后面跟一个“:”出现在函数中某语句的前面。程序执行到goto语句时,会控制转跳到该语句标号处,达到控制循环的目的。图示:P105
循环嵌套
当一个循环的循环体内又包含了另一个完整的循环结构时,称为循环的嵌套或者是二重循环。根据问题的需要,可以构成三重以及以上的循环嵌套结构,但一般情况下最多使用到三重循环。
典型算法举例
递推法
迭代法
穷举法
0 条评论
下一页