C语言程序设计
2021-12-20 14:56:54 0 举报
AI智能生成
看看不亏
作者其他创作
大纲/内容
第一章 程序设计与C语言
程序与程序设计语言
程序设计语言的发展
机械语言
用二进制码......
汇编语言
助记符代替二进制
高级语言
非结构化语言
有FORTRAN、BASIS、ALGOL
结构化语言
QBASIC、Pascal、C
面向对象语言
C++、C#、Visual Basic、JAVA
程序设计语言的功能
数据表达
流程控制
.顺序控制结构
一条语句执行完后,按自然顺序执行下一条语句,C语言中的赋值语句、输入、输出等都构成了顺序结构。
分支控制结构
:又称选择结构。计算机在执行程序时,常常需要根据不同的条件选择不同的语句
循环控制结构
许多时候,计算机需要执行相同的语句。重复执行一般是有条件的,在条件满足时,重复执行;在条件不满足时,则不会重复执行。
三个基本控制结构的共同特点
只有单一的入口和单一的出口
结构中的每个部分都有被执行的可能
结构内不应出现永不终止的死循环
程序的算法
程序算法的特征
确定性
.有穷性
可行性
有零个或多个输入
有一个或多个输出
程序算法的表示方法
文字描述算法
用流程图描述算法
伪代码表示
程序设计语言表示
C语言程序设计的特点
C语言的特点
C语言语句简洁紧凑,使用方便灵活。
运算符丰富,表达能力强。
C语言程序可移植性好
.生成的目标代码质量高,运行效率高
语言处理能力强。
C语言是一种结构化语言。
C语言的约定
C语言的约定
标识符
关键字
用户自定义标识符
预定义标识符
子主题
分隔符
C语言的语法成分
常量
变量
运算符
表达式
语句
函数定义与调用
输入与输出
C语言的编辑、编译、链接、运行
程序设计的任务
分析问题
设计问题
程序设计
运行并调试程序
分析程序运行结果
编写程序文档
运行C程序的步骤与方法
编辑源程序
编译
编译
运行
第二章 数据类型、运算符和表达式
C语言的数据类型
数据类型分为
基本类型
.整型
字符型
实型(浮点型)
构造类型
数组类型
结构体类型
共同体类型
子主题枚举类型
指针类型
空类型
C语言的常量
直接常量
整型常量
整型常量即整数,包括正整数、负整数和零。C语言中,整型常量可以用十进制、八进制和十六进制表示。
十进制表示:由数字0~9,正、负号组成,如369,-663等
八进制表示:以0(数字0)为前缀,其后由数字0~7组成,如0163,036等;八进制数一般是无符号数。如0192、-011都是不合法的八进制常量。
十六进制表示:以0x或0X为前缀,其后由数字0~9和字母A~F(字母大小写均可)组成,如0x12cd,0X6Fa等。十六进制数一般是无符号数。
注意:(1)在一个整型常量后面加一个字母u或U,认为是unsigned int型,如246U。(2)在一个整型常量后面加一个字母1或L,认为是long int型,如12L。
实型常量
实型常量即实数,又称为浮点数。C语言中,实数只能用十进制形式表示,实数的表示方法有两种:小数形式和指数形式。
小数形式
由整数部分、小数点和小数部分组成,当整数部分或者小数部分为0时,可以省略不写,但是小数点不可省略
指数形式
由尾数部分、字母E或e和指数部分组成,格式为:士尾数E指数
字符型常量
字符常量指单个字符,用一对单引号及其括号所语起的字有来表示,如写’a’、‘B’、=’$’、’?”都是合法的字符常量。在C语言中,字符常量有以下特点:
字符常量只能用单引号括起来,不能用双引号或其它括号。
字符常量只能是单个字符,不能是字符串。
字符可以是ASCT学符集中的任意字符,按ASCT码的大小,不同的字符之间存在着次序,以字符的ASCI码值按升序连续排列。
字符串常量
字符串常量是由一对双引号"”括起来的零个或多个字符序列,字符串中可以使用空格字符、转义字符和其他字符,也可以使用汉字等文字符号。字符串中还可以使用空字符,如:” ”表示空串,即不包含任何字符。
C语言的变量
变量的定义和使用
变量的定义
其定义格式:类型说明符 变量名表;
(1)类型说明符必须是C语言中的有效数据类型,如int、float、double、char等,用于指定变量的类型,该类型决定了编译时分配给变量的内存单元的多少。
(2)变量名表可以由一个或多个变量名组成,各变量名之间用“,”分隔。变量名必须是合法的C语言标识符,变量名一般使用小写字母。
(3)变量的定义必须放在变量的使用之前,一般在函数体的开头部分进行定义。
注:在C语言中,基本数据类型包括char(字符型)、int(整型)、float(单精度浮点型)及double(双精度浮点型)等。不同的类型用于存放不同的数据,所需的存储空间也不相同。
变量的初始化
在C语言允许在定义变量的同时对变量赋值,这个过程称为变量的初始化。
对变量初始化时需注意:
对变量初始化时需注意:
(1)对一个变量赋初值之后,该值被存储在分配给该变量的内存空间中。
(2)不允许对多个未定义的同类和变能连续机的花,“x=y=3:”是不合法的,写成“int x=3,y=3;”。
(3)初始化时,一般应使“一”右边表达式的数据类型和“=”左边的变量的类型一致,如果不一致,系统会进行自动赋值转换。
(4)没有进行初始化的变量,其值是由定义时所使用的存储类型决定的。全局变量和static型变量的值是0或\0’,其它存储类型的局部变量的值是未知的
变量的使用
变量定义之后,就可以在程序中使用。在程序中使用变量,称为变量的引用,如进行数值计算,数据处理等。使用变量时,应该先赋值,后引用。
在程序中可以通过初始化、赋值表达式或者输入函数scanf()变量赋值。
在程序中可以通过初始化、赋值表达式或者输入函数scanf()变量赋值。
整型变量
一个整型变量用来保存整数。在C语言中,整型又可分为:短整型(short int)、整型(in)、长整型(long int)、无符号整型(unsiened int),无符号短整型(unsigned short int)和无符号长整型(unsigned long int)六种。
实型
C语言中实型变量分单精度(float型)和双精度(double型)两类。
字符型变量
字符型变量的值是字符常量,即用单引号引起来的单个字符。字符型变量的类型说明符是char,其类型说明的格式和命名规则与整型变量相同。
运算符和表达式
赋值运算符和赋值表达式
简单赋值运算符
最简单的赋值运算符就是“=”,它的作用是将一个数值赋给一个变量。如r=2的作用是执行一次赋值操作(或称赋值运算)。把常量2赋给变量r。也可以将一个表达式的值赋给一个变量。
.复合赋值运算符
在简单赋值运算符前面加上算术运算符就构成
赋值表达式
在C语言中,赋值语句属于表达式语句。赋值表达式是由赋值运算符将一个变量和一表达式连接起来的式子所组成。
算术运算符和算术表达式
基本的算术运算符
基本算术运算包括加、减、乘、除和求余等运算,其中加、减、乘、除和求余运算均为双目y=-3运算符,所谓双目运算符是指运算时需要两个操作数。
自增、自减运算符
C语言有两个特殊运算符“十十”和“一”。(1)++自增运算符,为单目运算符,其功能是使变量的值自加1。自增运算符有两种使用形式:
①前缀方式:用于变量前面,如“int a=++×;”它是“先计算,后使用”,即先将x的值自加1,然后将x的值赋给变量a。
②后缀方式:用于变量后面,如“inta=x十+;”它是“先使用,后计算”,即先将x的值赋给变量a,然后再将x的值自加1。
一—自减运算符,为单目运算符,功能是使变量的值自减1,使用方法和自增运算符相似。
算术运算符的优先级和结合性
C语言规定了运算符的优先级和结合性,单日运算符是右结合的,双目算术运算符是左结合的。算术运算符的优先级为:“十十、.__”“×、、%”>“十、一”,即单目运算符的优先级高于双目运算符,双目算术运算符中 、、%的优先级高于十、一。在优先级相同的情况下,按规定的“结合性”进行处理。
算术表达式
算术表达式是由算术运算符、运算对象和括号连接起来的式子,运算对象可以是常量、变量和函数等。
通常数学表达式均可写成C语言的算术表达式。
算术表达式使用注意:
通常数学表达式均可写成C语言的算术表达式。
算术表达式使用注意:
(1)表达式中的乘号不能省略,且表达式中的所有字符均应写在同一行上。
(2)在表达其中走可以使用多层圆括号(不能使用中括号□和花括号()),但是要注意括号的配对。
逗号运算符和逗号表达式题
C语言中逗号“,”也是一种运算符,称为逗号运算符,其功能是把多个表达式连接起来组成一个表达式,称为逗号表达式。逗号表达式的一般形式为:表达式1,表达式2,···,表达式n
(1)逗号表达式的执行顺序是:从左到右依次计算每个表达式的值,并把最后一个表达式的值作为整个逗号表达式的值。
(2)逗号运算符是双目运算符,其优先级最低,是左结合的。
(3)并非所有出现逗号的地方都为逗号表达式,如在变量说明语句中,以及函数参数表中逗号只是用作各变量之间的分隔符。
求字节数运算符
运算符 sizcof用于计算数据类型所占的字节数,它是一个单目运算符,优先级高于双目运算符,其一般格式如下:
(1)sizeof(表达式)或sizeof 表达式
(2)sizeof(数据类型名)
数据类型转换
自动类型转换
不同类型的数据在一起运算时,编译系统会自动进行类型转换。进行自动转换的规则是:把占用内存空间少的(低级)类型向占用空间多的(高级)类型转换,以保证运算的精度。
强制类型转换
强制类型转换是采用强制类型转换运算符将某种数据类型强制转换成指定的数据类型,其一般形式为
(类型说明符)(表达式)
(类型说明符)(表达式)
功能:把表达式的运算结果强制转换成类型说明符指定的类型。
进行强制类型转换时需注意:
进行强制类型转换时需注意:
(1)需强制类型转换中的表达式一定要括起来,否则只对紧随括号后的量进行类型转换。
2)强制类型转换是一种不安全的转换,如果是从高级类型转换成低级类型,则会损失数据的精度。
(3)强制类型转换并不改变表达式中变量的类型和值。
第三章 顺序结构程序设计
C语言的语句
说明语句
说明语句用于定义程序所使用的变量
表达式语句
表达式语句由表达式加上分号”;“组成
分支语句
分支结构实现分支控制过程,根据条件成立与执行不同的语句
分支结构有两种
双分支结构if-else语句
多分支结构switch语句
循环语句
C语言中有三种实现循环控制的语句
for语句
while语句
do-swile语句
转向语句
break语句
goto语句
continue语句
return语句
空语句
空语句只由一个分号构成
函数定义与调用
函数是完成特定功能的小模块,是C语言中唯一的 种子程序,常常在一个C程序中包含若干个函数,复杂的任务通过调用这些函数来完成
输入与输出
C语言没有提供用于数据输入及输出的语句,所有的输入与输出都是通过系统提供的有关函数来实现的。
数据的输入与输出
输出函数(pritf() )和输入函数(scanf() )
printf()函数
格式控制说明
按指定的格式输出数据,其格式 为以%开头的格式控制字符,不同类型的数据采用不同的格式控制字符,以说明输出数据的类型、形式、长度、小数位数等。
普通字符
在输出数据时,需要原样输出的字符
scanf () 函数
格式控制说明
按指定的格式输入数据,其格式为以开头的格式控制字符,不同数据类型的数据采用不同的格式控制字符
普通字符
再输入数据时,需要原样输入的字符
整形数据的输入和输出
实型数据的输入和输出
字符型数据的输入和输出
字符型数据的输入与输出可以调用函数getchar()、scanf()、和putchar()printf()
使用scanf( )函数和printf( )函数对字符型数据进行输入输出
使用scanf()函数和printf()函数进行字符型数据的输入与输出时,其相应的格式控制字符为”c“,如”printf("%c%c\n",a,b)“,也可以在”%“和”c"之间加修饰符。
使用getchar( )函数和putchar( )函数对字符型数据进行输入输出
getchar( )函数。
运行时从键盘输入缓冲区中读取一个字符,并赋值给ch
putchar( )函数
输出一个字符,输出参数时字符型变量或字符型常量
数学库函数
指数函数exp(x):计算e的x次方
绝对值函数fabs(x):计算|x|
以e为底的对数函数log(x):计算lnx
幂函数pow(x,y):计算x的y次方
分子结构程序设计
关系运算符、逻辑运算符、条件运算符
关系运算符和关系表达式
关系运算符
关系运算符用于判断两个操作数的大小关系。
关系表达式
用关系运算符将两个表达式连接起来的式子称为关系表达式。
逻辑运算符和逻辑表达式
.逻辑运算符
关系表达式只能描述单一的条件。
逻辑表达式
用逻辑运算符将两个表达式连接起来的式子称为逻辑表达式。
条件运算符和条件表达式
条件运算符
条件运算符由“?”和“:”两个符号组成,用于条件求值,,它是一个三目运算符,需要三个操作数。条件运算符的优先级低于逻辑运算符、高于赋值运算符,它是右结合的
条件表达式
用条件运算符将3个表达式连接起来的式子称为条件表达式。
使用if—else实现分支结构
if—else语句
双分支if语句
其一般形式为如下:
if(表达式)
语句1;
else
语句2;
if(表达式)
语句1;
else
语句2;
其语义是首先求解表达式,如果表达式的值为“真”,则执行语句1,若表达式的值为“假”,则执行语句2,无论执行完语句1还是语句2,都会结束整个if语句的执行。
单分支if语句
其一般形式如下:
if(表达式)
语句1;
if(表达式)
语句1;
其语义是首先计算表达式,如果表达式的值为“真”,则执行语句;否则不执行语句,直接执行if语句的下一语句
if语句的嵌套
一个if语句中包含了一个或多个if语句的现象称为if语句的嵌套。
多分支if语句
多分支语句其一般形式如下:
if(表达式1)
语句1;
else if(表达式2)
语句2;
else if (表达式n-1)
语句n-1;
else
语句n;
if(表达式1)
语句1;
else if(表达式2)
语句2;
else if (表达式n-1)
语句n-1;
else
语句n;
其语义是首先求解计算表达式1,如果表达式的值为“真”,则执行语句1,并结束整个if语句的执行;否则,求解表达式2,......若表达式1至表达式n-1的值为“假”时,执行语句n。
使用switch语句实现分支结构
switch语句的一般形式如下:
switch(表达式)
{ case常量表达式1:语句1;break;
case常量表达式2:语句2;break;
...
case常量表达式n:语句n;break;
default:语句n+1;break;}
switch(表达式)
{ case常量表达式1:语句1;break;
case常量表达式2:语句2;break;
...
case常量表达式n:语句n;break;
default:语句n+1;break;}
其执行过程为:首先计算switch后面口号内的表达式,然后将表达式的值从上到下按顺序与各个case后面的常量表达式的值进行比较,若与某个常量表达式的值相等,则执行该常量表达式后面的语句,然后执行break语句,跳出switch语句,switch语句执行结束;如果表达式的值与任何一个常量表达式的值都不相等,则执行default后的语句,结束switch语句的执行。
在switch语句格式中的每一个语句后面都使用break语句
在switch语句格式中的部分语句后面都使用break语句
由与可以让多个case共用一组执行语句
在switch语句格式中不使用break语句
switch语句中不使用break语句时,程序在执行相应语后,不会跳出正在执行的switch语句,而是会继续执行其后的所有语句
第五章 循环结构程序设计
5.2 使用for语句实现循环结构
for语句的基本语法
for 语句的一般形式为:
for(表达式1;表达式2;表达式3;)
循环体语句;
for(表达式1;表达式2;表达式3;)
循环体语句;
1.可以应用与计数型的循环
格式如下:
for(循环变量赋初值;循环条件;循环变量增加)
循环体语句
for(循环变量赋初值;循环条件;循环变量增加)
循环体语句
2.for语句的一般形式中省略表达式1
格式如下:
for(;表达式2;表达式 3)
循环体语句;
for(;表达式2;表达式 3)
循环体语句;
3.for语句的一般形式中省略表达式2
格式如下:
for(表达式1;;表达式 3)
循环体语句;
for(表达式1;;表达式 3)
循环体语句;
4.for语句的一般形式中省略表达式3
子主格式如下:
for(表达式1;表达式 2;)
循环体语句;
for(表达式1;表达式 2;)
循环体语句;
5.for语句的一般形式中表达式1和表达式3也可以是逗号表达式
6.for语句的一般形式中表达式2的值和只要非0,就执行循环体。
7.for语句的一般形式中循环体语句可以省略。
5.3 使用while语句实现循环结构
while语句的基本语法
while(表达式)
循环体;
循环体;
5.4 使用do-while语句实现循环结构
do-while语句的基本语法
do
循环体
while(表达式);
循环体
while(表达式);
5.5 改变循环结构的跳转语句
break语句
break语句用在循环语句和switch语句中。
continue语句
continue语句的作用是跳过循环体中continue后面的语句,继续下一次循环。continue语句只能用在循环体语句中,常与if语句一起使用。
goto语句
5.6 循环嵌套
当 一个循环体内又包含了另一个完整的循环结构时,称为循环的嵌套或者是二重循环。根据问题需要,可以构成三重以上的循环嵌套结构,但一般情况下最多使用到三重循环。
5.7 典型算法举例
递推法
迭代法
穷举法
5.8 循环程序设计
0 条评论
下一页