C语言基础(2)
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.3 循环程序结构
循环结构是结构化程序设计的三种基本结构之一,是构成各 循环结构是结构化程序设计的三种基本结构之一, 种复杂程序的基本构造单元。在C语言中提供了三种用以实 种复杂程序的基本构造单元。 现程序循环结构的语句,它们是: 现程序循环结构的语句,它们是:
1. 2. 3.
while语句 while语句 do_while语句 do_while语句 for语句。 for语句。 语句
2.1.2 逻辑运算符和逻辑表达式
两个逻辑对象a 两个逻辑对象a和b之间的逻辑运算真值表如表所示: 之间的逻辑运算真值表如表所示: a 0 0 1 1 4. 逻辑表达式 用逻辑运算符将算术表达式、关系表达式或逻辑量连接起 用逻辑运算符将算术表达式、 来的式子。例如: 来的式子。例如: ( a > b ) && ( x > y) b 0 1 0 1 !a 1 1 0 0 a&&b 0 0 0 1 a||b 0 1 1 1
1. 条件运算符的表达式 exp1 ? exp2 : exp3 条件运算符是C语言中惟一的一个三元运算符, 条件运算符是C语言中惟一的一个三元运算符,使用条件运 算符构成的表达式称为条件表达式。 算符构成的表达式称为条件表达式。 2. 条件表达式的执行过程 首先计算表达式exp1的值, exp1的值为非 首先计算表达式exp1的值,若exp1的值为非0(真),则 的值为非0 ),则 的值 计算出表达式exp2的值作为整个条件表达式的值; 计算出表达式exp2的值作为整个条件表达式的值;若exp1 的值作为整个条件表达式的值 的值为0 的值为0(假),则计算出表达式exp3的值作为整个条件 ),则计算出表达式 则计算出表达式exp3的值作为整个条件 表达式的值。 表达式的值。
2.3.1 while型循环结构 while型循环结构
1. while型循环控制结构的一般形式为 while型循环控制结构的一般形式为 while(exp) while(exp) LoopLoop-Body 2. while型循环结构的执行过程 while型循环结构的执行过程
先计算作为判断条件的表达式exp值 先计算作为判断条件的表达式exp值,对表达 式exp的值进行判断。若条件表达式的值为非 exp的值进行判断 的值进行判断。 0(真),则执行一次循环体Loop-Body;然后再 0(真 则执行一次循环体Loop-Body; 一次计算条件表达式exp的值, 一次计算条件表达式exp的值,若计算结果仍 的值 为非0(真 再一次执行循环体。 为非0(真),再一次执行循环体。重复上述过 程,直到某次计算出的条件表达式值为0(假) 直到某次计算出的条件表达式值为0(假 时,则退出循环结构;控制流程转到该循环 则退出循环结构; 结构之后的语句。 结构之后的语句。
变量b=2(原值), 变量b=2(原值), b=2
2则:a++ && b++ || c++ 的值为 则 的值为1 变量a=2、变量b=3、变量 、变量 变量 、变量c=0(原值)。 (原值)。
2.2 分支程序结构
2.2.1 if语句与程序的单分支结构 if语句与程序的单分支结构
1. 单分支if语句的结构形式 单分支if if语句的结构形式 if(expression) sentence; sentence; 其中: 其中: expression-------条件表达式 条件表达式 sentence------ 执行的语句 注意: 注意:
关系运算示例。 例2-1 关系运算示例。
2.1.2 逻辑运算符和逻辑表达式
1. 逻辑运算符 &&(逻辑与) &&(逻辑与) 2. 逻辑运算结果 数值“1”表示逻辑 数值“1”表示逻辑“真”,用数值“0”表示逻辑“假”。 表示逻辑“ 用数值“0”表示逻辑 表示逻辑“ 判断一个数据对象的真假时: 判断一个数据对象的真假时:
2.2.3 if_else语句与程序的双分支结构 if_else语句与程序的双分支结构
1. 双分支结构的形式 if(expression) sentence1; else sentence2; expression y sentence1 sentence2 n
2.2.4 条件运算符与条件表达式
① ②
if后面没有分号。 if后面没有分号。 后面没有分号 sentenct后面有分号,只能有一条语句。 sentenct后面有分号,只能有一条语句。 后面有分号
2.2.2 复合语句及其在程序中的使用
1. 复合语句的形式 在C语言中,复合语句是用一对花括号“{}”将若干条C语 语言中,复合语句是用一对花括号“{}”将若干条 将若干条C 句括起来形成的语句序列。复合语句的基本形式如下所示: 句括起来形成的语句序列。复合语句的基本形式如下所示: { sentence1; … sentencei; sentencei; … sentencen; sentencen;
2.1.2 逻辑运算符和逻辑表达式
6. 求逻辑表达式值的注意事项
① ②
对逻辑表达式从左到右扫描求解; 对逻辑表达式从左到右扫描求解; 只要逻辑表达式的值已经确定,则求解过程不再进行。 只要逻辑表达式的值已经确定,则求解过程不再进行。
wk.baidu.com
例如:int a=1,b=2,c=0; 例如: 1则: a++||b++&&c++ 且:a=2, a=2, 的值为1 的值为1 变量c=0(原值) 变量c=0(原值)。 c=0
2.2.5 if语句的嵌套与程序的多分支结构 if语句的嵌套与程序的多分支结构
其一般形式为: 其一般形式为: if(exp1) if(exp1) sentence1; else if(exp2) if(exp2) sentence2; else if(exp3) if(exp3) sentence3; … else if(expN) if(expN) sentenceN; sentenceN; else sentenceN+1;
算术运算符
关系运算符
赋值运算符
2.
优先级:如上图所示。且关系运算符的结合性为左结合。 优先级:如上图所示。且关系运算符的结合性为左结合。 例如:c<a+b 等价于 c<(a+b) c<(a+b) 例如:c<a+b
2.1.1 关系运算符和关系表达式
3. 表达式:用关系运算符将两个表达式连接起来的式子称为 表达式: 关系表达式。例如: 关系表达式。例如: a+1>b+c ; 4. 表达式的值 在C语言中没有逻辑数据类型,所以在进行关系运算时: 语言中没有逻辑数据类型,所以在进行关系运算时: 用数值“1”或非 或非0 用数值“0”表示逻辑 表示逻辑“ 用数值“1”或非0表示 “真”,用数值“0”表示逻辑“假” 例如: 5>=5 例如: 5!=5 /*结果为 /*结果为1*/ 结果为1*/ /*结果为 /*结果为0*/ 结果为0*/ 10==10 5<3 /*结果为 /*结果为1*/ 结果为1*/ /*结果为 /*结果为0*/ 结果为0*/ (a = 3) > (b = 5) ; ‘a’ < ‘ b’; b’;
① ②
||(逻辑或) ||(逻辑或)
!(逻辑非) 逻辑非)
若数据对象为数值“ 若数据对象为数值“0”,则判定为假; 则判定为假; 若数据对象为数值非 若数据对象为数值非“0”,则判定为真; 则判定为真;
例如, int a=8, b=0; 例如, 则: a||b /*结果为1*/ /*结果为 结果为1*/ &&b /*结果为0*/ /*结果为 结果为0*/ !a /*为0*/ /*为
结构化程序设计基础和C 结构化程序设计基础和C语言的控制结构
C程序控制结构中的条件表示 分支程序结构 循环程序结构 C语言的其他简单控制结构 C语言控制结构应用举例
2.1 C程序控制结构中的条件表示 C程序控制结构中的条件表示
1. 结构化程序概述
① ② ③
顺序结构: 顺序结构: 选择结构: 选择结构: 循环结构: 循环结构: 结构化程序的表述问题 如何表示控制结构中的条件; 如何表示控制结构中的条件; 对于控制结构中的条件如何判断成立与否; 对于控制结构中的条件如何判断成立与否;
2.2.6 switch语句与程序的多分支结构 switch语句与程序的多分支结构
switch(number) 2 { case 1: statement1; case 2: : statement2; case 3: statement3; default: statement4; }
?
statement5;
2.
① ②
在C言中通常用关系运算和逻辑运算来实现对程序控制结构 言中通常用关系运算和逻辑运算来实现对程序控制结构 关系运算 中条件的描述和处理。 中条件的描述和处理。
2.1.1 关系运算符和关系表达式
1. 运算符:用于比较两个运算对象间的某种关系是否成立。 运算符:用于比较两个运算对象间的某种关系是否成立。
2.2.4 条件运算符与条件表达式
3. 条件运算符的优先级:高于赋值运算符,低于关系运 条件运算符的优先级:高于赋值运算符, 算符和算术运算符。 算符和算术运算符。 4. 条件运算符的结合方向:为右结合性。 条件运算符的结合方向:为右结合性。 例如: a>b?a:c>d?c:d 例如: a>b?a:c> 应先计算:c>d?c:d的值 应先计算:c>d?c:d的值 再计算表达式a>b?a:(c>d?c:d)的值。 再计算表达式a>b?a:(c>d?c:d)的值。 ch= ch>=‘A‘ ch= ch>=‘A‘ && ch<=’Z‘ ? ch+32: ch-32; 表示什么意思? ch<=’Z‘ ch表示什么意思?
}
2.2.2 复合语句及其在程序中的使用
例2-5 从键盘上输入三角形的三 边的边长, 边的边长,若它们能构成一个三 角形,则输出其面积。 角形,则输出其面积。
if(a+b>c && a+c>b && b+c>a) if(a+b>c a+c>b b+c>a) /*满足三角形条件时求其面积 满足三角形条件时求其面积* /*满足三角形条件时求其面积*/ { s=(a+b+c)/2; s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(sarea=sqrt(s*(s-a)*(s-b)*(s-c)); printf("%f\n",area); printf("%f\n",area); }
2.1.2 逻辑运算符和逻辑表达式
5. 优先级: (与关系运算符同时考虑) 优先级: 与关系运算符同时考虑) !(非) !(非 算术运算符 关系运算符 > >= < <= == != && 和 || 赋值运算符 = 有此规定后: 有此规定后: ( a > b ) && ( x > y) ( a==b) || (x==y) ( !a ) || ( a > b ) 可写成: a > b && x > y ; 可写成: 可写成: a==b || x==y ; 可写成: 可写成: ! a || a > b ; 可写成: (低 ) (高 )
2.2.5 if语句的嵌套与程序的多分支结构 if语句的嵌套与程序的多分支结构
例如,在一个二分支if语句的两个语句部分分别嵌入了一 例如,在一个二分支if语句的两个语句部分分别嵌入了一 个二分支if语句的形式为 个二分支if语句的形式为: 语句的形式为: if(exp1) if(exp1) if(exp2) if(exp2) sentence1; else sentence2; else if(exp3) if(exp3) sentence3; else sentence4; C语言中规定:程序中的else 语言中规定:程序中的else 子句与在它前面距它最近的且 尚未匹配的if配对 尚未匹配的if配对。无论将程 配对。 序书写为何种形式, 序书写为何种形式,系统总是 按照上面的规定来解释程序的 结构。 结构。
2.2.5 if语句的嵌套与程序的多分支结构 if语句的嵌套与程序的多分支结构
例2-9 编写程序求如下所示多分支方程的解。 编写程序求如下所示多分支方程的解。
2.2.6 switch语句与程序的多分支结构 switch语句与程序的多分支结构
switch(expession) switch(expession) {case constand1:sentences1; constand1: break; case constand2:sentences2; constand2: break; 1. switch语句结构形式 switch语句结构形式 … case constandN:sentencesN; constandN:sentencesN; break; default: default:sentencesN+1 }