版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 软件作坊软件作坊 软件危机软件危机 结构化程序设计的思想结构化程序设计的思想 顺序结构顺序结构选择结构(分支结构)选择结构(分支结构)循环结构循环结构 顺序结构顺序结构选择结构(分支结构)选择结构(分支结构)循环结构循环结构 顺序结构顺序结构选择结构(分支结构)选择结构(分支结构)循环结构循环结构 顺序结构顺序结构选择结构(分支结构)选择结构(分支结构)循环结构循环结构 表达式语句表达式语句 函数调用语句函数调用语句 控制语句控制语句 复合语句(或称分程序)复合语句(或称分程序) 空语句空语句 表达式语句表达式语句 最简单的可执行语句。在表达式后面加最简单的可执行语句。在表达式后面加上分号。
2、上分号。 +i; x=y; x=x+y; 有效的表达式语句一般都要有赋值运算。有效的表达式语句一般都要有赋值运算。 函数调用语句函数调用语句 由函数名、实际参数以及分号构成。由函数名、实际参数以及分号构成。 printf(welcome); printf是函数名,是函数名,“welcome”是实际参数。是实际参数。函数名既可以是函数名既可以是C语言提供的库函数名,也可语言提供的库函数名,也可以是自己定义的函数名。以是自己定义的函数名。 控制语句控制语句 控制语句是用于控制程序流程的语句,控制语句是用于控制程序流程的语句,控制语句一般指那些改变了顺序结构的语句。控制语句一般指那些改变了顺序结构的
3、语句。 分支语句(分支语句(if 和和 switch) 循环语句(循环语句(while、do-while、for) 转向语句(转向语句(break、goto、continue、return)。)。 。 复合语句和分程序结构复合语句和分程序结构 复合语句是用复合语句是用 把数据说明语句和若把数据说明语句和若干个有序的执行语句组合在一起而构成。干个有序的执行语句组合在一起而构成。其一般格式为其一般格式为 数据说明数据说明; 语句语句; 复合语句在语法上相当于一复合语句在语法上相当于一个简单语句,在程序中可以个简单语句,在程序中可以作为一个独立语句来看待,作为一个独立语句来看待,因此又称为分程序。因
4、此又称为分程序。 空语句空语句 空语句,顾名思义,就是什么也不存在的空语句,顾名思义,就是什么也不存在的语句,只有一个分号:语句,只有一个分号: ; 尽管空语句不会有任何命令执行,但仍然尽管空语句不会有任何命令执行,但仍然是一个有用的语句。常用于循环语句中,使循是一个有用的语句。常用于循环语句中,使循环体为空。环体为空。 例:例:for (sum=0,i=0;i=9;i+,sum=sum+i) ; 顺序结构程序举例:顺序结构程序举例: 注意注意: 以上程序的适用范围是整数类型以上程序的适用范围是整数类型 (包括字符型),不能用于浮点数。(包括字符型),不能用于浮点数。 算术运算符种类及运算算术
5、运算符种类及运算 + - * / %注意注意: 相除,相除,仍为仍为,商向下取整。,商向下取整。 运算符运算符实际上是数学运算的实际上是数学运算的运运 算,其算,其都必须是都必须是 。 + - * / %注意注意:还可以用做单目运算符,是还可以用做单目运算符,是运算。其余操作符均为双目运算符。运算。其余操作符均为双目运算符。 算术运算符种类及运算算术运算符种类及运算例如:例如:int a,b,c;a=2; b=6; c=8; a/b a% c/a c%b b/a 以上的结果各是什么?以上的结果各是什么? 算术运算符的优先级算术运算符的优先级 算术运算符的优先级算术运算符的优先级 算术表达式应能
6、正确的表达数学公式。算术表达式应能正确的表达数学公式。 例如:数学表达式是例如:数学表达式是 3+x3+x 2a 2a 相应的相应的C C语言表达式应该是什么呢?语言表达式应该是什么呢? 算术运算符的优先级算术运算符的优先级 算术运算符的结合性算术运算符的结合性 普通赋值运算符普通赋值运算符 赋值运算符的赋值运算符的优先级小于优先级小于算术运算符算术运算符 赋值运算符的结合性是自右至左赋值运算符的结合性是自右至左 如:如:a=b=2;/*-求求a、b两数之和两数之和-*/#include void main ( ) int a,b,sum; a=123; b=456; sum=a+b; pri
7、ntf (sum is %dn, sum); 普通赋值运算符普通赋值运算符 l复合赋值运算符复合赋值运算符 += 、- =、*=、/=、%=。 (=、&=、=、|=)。)。 复合赋值运算符的使用规则是:复合赋值运算符的使用规则是: Xop=YXop=Y与与X=XopYX=XopY等价。等价。例如: int a,b,c; a=1; b=2 c=3; a+=b; a+=b+=c; b+=c-=5; a+=b*c; b%=2; a+=b+c=4; 错,为什么?错,为什么?l复合赋值运算符复合赋值运算符赋值语句例题:赋值语句例题: 用温度计测量出用华氏法表示的温度(如 F,今要求把它转换为以摄
8、氏法表示的温度(如 C) 。)32(95fcf代表华氏温度,代表华氏温度,c代表摄氏温度代表摄氏温度顺序程序设计举例顺序程序设计举例: 求华氏求华氏6464度对应的摄氏值度对应的摄氏值#include int main ( ) float f,c; f=64.0; c=(5.0/9)*(f-32); printf(f=%fnc=%fn,f,c); return 0; 以上程序说明:以上程序说明: 表达式:表达式: c=5*(f-32)/9;若写成:若写成: c=5/9*(f-32); 会出现什么结果?会出现什么结果?也可以写成:也可以写成:c=5.0/9*(f-32); l3.5.1 3.5.
9、1 问题提出与程序示例问题提出与程序示例 o关系运算符:关系运算符:用来对两个数值进行比较的比较运算符用来对两个数值进行比较的比较运算符o语言提供种关系运算符:语言提供种关系运算符: (小于小于) = (小于或等于小于或等于) (大于大于) = (大于或等于大于或等于) = (等于等于) != (不等于不等于) o关系、算术、赋值运算符的优先级关系、算术、赋值运算符的优先级算术运算符算术运算符 (高高)赋值运算符赋值运算符 (低低)关系运算符关系运算符 ca+b 等效于 c(a+b)ab=c 等效于 (ab)=ca=bc 等效于 a=(bc 等效于 a=(bc) 在在C语言中,关系表达式表示的
10、关系成立语言中,关系表达式表示的关系成立时,表达式的值为整数时,表达式的值为整数1;关系表达式表示的;关系表达式表示的关系不成立时,表达式的值为整数关系不成立时,表达式的值为整数0 关系运算符关系运算符结合性结合性均为均为自左至右自左至右。 六个关系运算符中的六个关系运算符中的“!=”和和“=”的优先级小的优先级小于其余四个运算符。于其余四个运算符。关系运符的值:关系运符的值: 关系式成立关系式成立 值为值为1 关系式不成立关系式不成立 值为值为0例如:例如: int a=2,b=3,c=4,x,y; x=a=b; y=(a+b)!=c; printf(“%d %dn”,x,y); 输出结果:
11、?输出结果:? lif形式形式if (表达式表达式) 语句语句1;下一条语句;下一条语句; l3.5.2 if形式形式 l3.5.2 if形式形式 (1)表达式必须用圆括号括起来,不能省略。表达式必须用圆括号括起来,不能省略。 (2)表达式可以使用表达式可以使用关系表达式关系表达式,也可以使用,也可以使用逻逻辑运算符连接关系表达式辑运算符连接关系表达式,可以是一般的表,可以是一般的表达达式式。 if (score=60) if (ab) &(b=c) if (x) if (checkstate()注意:注意: (3)注意区分赋值号注意区分赋值号“=”与关系运算符与关系运算符“=” 。i
12、f (x=10) if (x=10) (4)语句语句1既可以是单个语句,也可以是复合语既可以是单个语句,也可以是复合语句句 。就必须使用复合语句,使就必须使用复合语句,使用复合语句时则要用将用复合语句时则要用将将一组带分号将一组带分号的语句括起来。的语句括起来。注意:注意: l3.5.2 if形式形式 l3.5.2 if形式形式 l3.5.2 if形式形式 l3.5.2 if形式形式 lif else 形式形式if (表达式)(表达式) 语句语句1;else 语句语句2;下一条语句;下一条语句; l3.5.3 if else 形式形式 l3.5.3 if else 形式形式 l3.5.3 if
13、 else形式形式 l3.5.3 if else形式形式 #include stdio.hvoid main() int score; printf(请输入分数请输入分数 (0=分数分数=60) printf(及格及格n); else printf(不及格不及格n ); lelse if 形式形式 if (表达式表达式1) 语句语句1; else if (表达式表达式2) 语句语句2; else if (表达式表达式3) 语句语句3; else if (表达式表达式n) 语句语句n; else 语句语句n+1; 一条语句;一条语句; l3.5.1 3.5.1 问题提出与程序示例问题提出与程序示
14、例 l3.5.4 else if 形式形式else if 形式传统流程图形式传统流程图 l3.5.4 else if 形式形式 l3.5.4 else if 形式形式 l3.5.4 else if形式形式 l3.5.4 else if 形式形式 l3.5.4 else if形式形式 l3.5.4 else if形式形式 l3.5.5 嵌套的嵌套的if语句语句 l5.5.5 嵌套的嵌套的if语句语句 l3.5.5 嵌套的嵌套的if语句语句 l3.5.5 嵌套的嵌套的if语句语句 l3.5.5 嵌套的嵌套的if语句语句 l3.5.5 嵌套的嵌套的if语句语句l3.5.5 嵌套的嵌套的if语句语句
15、C语言的逻辑运算符:语言的逻辑运算符: 逻辑与逻辑与 & 逻辑或逻辑或 | 逻辑非逻辑非 ! 逻辑与和逻辑或是双目运算符,而逻辑非逻辑与和逻辑或是双目运算符,而逻辑非是单目运算符。是单目运算符。 逻辑运算常用于判断两个以上的关系。例逻辑运算常用于判断两个以上的关系。例如判断:如判断: xyz A B !A !B A & & B A |B 逻 辑 真 逻 辑 真 逻 辑 假 逻 辑 假 逻 辑 真 逻 辑 真 逻 辑 真 逻 辑 假 逻 辑 假 逻 辑 真 逻 辑 假 逻 辑 真 逻 辑 假 逻 辑 真 逻 辑 真 逻 辑 假 逻 辑 假 逻 辑 真 逻 辑 假 逻 辑
16、假 逻 辑 真 逻 辑 真 逻 辑 假 逻 辑 假 C语言系统对语言系统对任何非任何非0值值都认定为是逻辑都认定为是逻辑真,而将真,而将0认定为逻辑假。认定为逻辑假。 如果一个表达式参与逻辑运算,只要这个如果一个表达式参与逻辑运算,只要这个表达式的解为非表达式的解为非0,则系统就认为这个表达式,则系统就认为这个表达式的结果是逻辑真。的结果是逻辑真。 注意,系统逻辑运算的结果仍然只有两个:注意,系统逻辑运算的结果仍然只有两个:1(逻辑真)和(逻辑真)和0(逻辑假)。(逻辑假)。 逻辑运算符经常与关系运算符一起使用。逻辑运算符经常与关系运算符一起使用。 C C语言表达式:语言表达式: (x=10)
17、&(x=10)&(x=100) 其其数学含义是:数学含义是: 1010 x x100100 逻辑运算符的优先级逻辑运算符的优先级 !& | 高高 低低 !的优先级!的优先级高于高于算术运算符(当然也高于算术运算符(当然也高于关系运算符)和赋值运算符关系运算符)和赋值运算符 &和和|的优先级的优先级高于高于赋值运算符,但是赋值运算符,但是低低于于算术运算符和关系运算符。算术运算符和关系运算符。 !单目运算符,其结合性是自右至左;!单目运算符,其结合性是自右至左;&和和|的结合性是自左至右。的结合性是自左至右。 计算表达式计算表达式 x=1 & y=
18、0 x=1 & y=0 若若x x此时不为此时不为1 1,在检测,在检测x=1x=1以后,就不以后,就不会再检测会再检测y=0y=0。 计算表达式计算表达式 79-!079-!0的值的值 x=y |x=0 若若x=y成立,则表达式的值为真,不需要再做成立,则表达式的值为真,不需要再做x=0了。了。 若若x=y不成立,这时需要执行赋值不成立,这时需要执行赋值x=0,表达式的结果仍然是。,表达式的结果仍然是。不要在一般的表达式中夹杂赋值运算不要在一般的表达式中夹杂赋值运算 o判别某一年是否闰年,用逻辑表达式表示判别某一年是否闰年,用逻辑表达式表示o闰年的条件是符合下面二者之一:闰年的条件是
19、符合下面二者之一:能被能被4整除,但不能被整除,但不能被100整除整除能被能被400整除整除n(year % 4 = 0 & year 100 !=0) | year % 400 = 0n如果表达式值为如果表达式值为1,则闰年;否则为非闰年,则闰年;否则为非闰年 例:输入一个整数,该数若为奇数,例:输入一个整数,该数若为奇数,乘以乘以2,为偶数,除以,为偶数,除以2. 该程序用以下几种方法编制该程序用以下几种方法编制: (注意注意if(e)中中e的几种不同用法的几种不同用法)if 语句例题:语句例题:用第用第1种形式:种形式: #include void main( ) int a,d
20、; scanf(“%d”,&a); d=a*2; if(a%2= =0) d=a/2; printf(“a=%d d=%dn”,a,d); if 语句例题:语句例题:用第用第2种形式:种形式: #include void main( ) int a,d; scanf(“%d”,&a); if(a%2!=!=0) d= a*2; else d= a/2; printf(“a=%d d=%dn”,a,d); if 语句例题:语句例题:也可以写成:也可以写成: #include void main( ) int a,d; scanf(“%d”,&a); if(a%2) d=a
21、*2; else d=a/2; printf(“a=%d d=%dn”,a,d); if 语句例题:语句例题:if 语句例题:判断输入字符的种类语句例题:判断输入字符的种类 运算符运算符 + 和和 - 单目运算符,其功能分别是将变量自身的单目运算符,其功能分别是将变量自身的内容增内容增1和减和减1。 +i和和-i是是表示法,表示法,i+和和i-是是表表示法。示法。 如果直接在如果直接在+i和和i+的后面加上分号构的后面加上分号构成成C的执行语句,即的执行语句,即 +i; i+; 前缀与后缀并无区别(减符号也一样)。前缀与后缀并无区别(减符号也一样)。但是,将它们用在表达式中则前缀与后缀是但是,
22、将它们用在表达式中则前缀与后缀是有有区别区别的。的。 注意:注意: 注意:注意:例题:例题:#include void main( ) int a,b,x,y; a=b=1; x=+a; y=b+; x+; y-; printf(“%d %d %d %dn”,a,b,x, y ); 输出结果是?输出结果是? 运算符运算符 & | 按位取反按位取反 左移左移 右移右移 按位与按位与 按位或按位或 按位异或按位异或 操作数在实现位操作时按二进制进行运算,操作数在实现位操作时按二进制进行运算,一般应为无符号型整数。一般应为无符号型整数。 按位与的运算规则是:按位与的运算规则是:0&0
23、=0 0&1=0 1&0=0 1&1=1按位与按位与&例如:例如:char w1,w2,w3;w1=10; w2=8; w3= w1&w2 ; w3的内容可以通过下式运算:的内容可以通过下式运算: 00001010 00001000 (按位与(按位与&) 00001000 (结果)(结果) 按位与按位与& &运算经常用于把特定位清零(屏蔽)。运算经常用于把特定位清零(屏蔽)。例如,例如, a的值为的值为11011010,b的值为的值为11110000, a&b 11011010 & 11110000 1101000
24、0 相当于把相当于把a的低的低4位屏蔽,高位屏蔽,高4位不变位不变 按位或的运算规则是:按位或的运算规则是:0 | 0=0 0 | 1=1 1 | 0=1 1 | 1=1例如:例如:char w1,w2,w3;w1=10; w2=8; w3= w1|w2 ; w3的内容可以通过下式运算:的内容可以通过下式运算: 00001010 | 00001000 (按位或(按位或 |) 00001010 (结果)(结果) 按位异或的运算规则是:按位异或的运算规则是:0 0=0 0 1=1 1 0=1 1 1=0例如:例如:char w1,w2,w3;w1=10; w2=8; w3= w1w2 ; w3的内
25、容可以通过下式运算:的内容可以通过下式运算: 00001010 00001000 (按位异或(按位异或 ) 00000010 (结果)(结果)其语法格式为:其语法格式为: sizeof(表达式表达式) 表达式可以是变量名、常量、以及数据表达式可以是变量名、常量、以及数据类型名。类型名。 sizeof是一个比较特殊的单目运算符,也是一个比较特殊的单目运算符,也是一个非常有用的运算符,经常用于动态分是一个非常有用的运算符,经常用于动态分配空间。配空间。形式:形式:switch (表达式表达式)case 常量常量1:语句:语句1;break; case 常量常量2:语句:语句2;break; cas
26、e 常量常量3:语句:语句3;break; default:语句:语句n; break; 表达式应取整型、字符型。表达式应取整型、字符型。 各常量应与表达式的类型各常量应与表达式的类型 相同,各常量值不能相同。相同,各常量值不能相同。 各常量后的语句可以为空各常量后的语句可以为空 语句。语句。 每个每个break和和default是可是可 选的选的 。 其中:其中:switch语句执行流程语句执行流程计算表达式值计算表达式值常量常量1常量常量2常量常量n选选default语句语句1语句语句2语句语句n语句语句n+1选选break选选break选选break选选breakNoNo= = = =Y
27、esYesYesYesNoNoNoNoNoNoYesYesYesYesYesYesswitchswitch语句例题:语句例题:分析程序运行结果分析程序运行结果 。#include void main() int x,a,b,c,d; a=b=c=d=0; scanf(“%d”,&x); switch(x) case 1: a+; break; default : d=1; case 2 : b+; break; case 3 : c+; break; printf(“%d%d%d%dn”,a,b,c,d);输入输入 结果为结果为 输入输入 结果为结果为 输入输入 结果为结果为 1 1
28、执行程序:执行程序:#include void main() int x,a,b,c,d; a=b=c=d=0; scanf(“%d”,&x); switch (x) case 1 : a+; case 2 : b+; case 3 : c+; break; default : d=1; break; case 0 : ; /空语句空语句 printf(“%d%d%d%dn”,a,b,c,d);输入输入 结果为结果为 1 1 1 1 输入输入 结果为结果为 1 1 输入输入 结果为结果为 输入输入 结果为结果为 执行程序:执行程序:switch语句例题:语句例题:#include vo
29、id main( ) int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0:a+;break; case 1:b+;break; case 2: a+;b+;break; printf(“a=%d, b=%dn”,a,b); 结果:结果: a=2, b=1switch语句例题:语句例题:#include void main( ) int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0:a+;break; case 1:b+;break; break; case 2: a+;b+;b
30、reak; printf(“a=%d, b=%dn”,a,b); 结果:结果: a=1, b=0将上面程序改为以下:将上面程序改为以下: #include stdio.h void main() int x; printf(“n 1-小型车小型车”); printf(n 2-中型车中型车); printf(n 3-大型车大型车); printf(n 4-重型车重型车); printf(n 请选择车型请选择车型: ); scanf(%d,&x); switch (x) case 1: printf(费用是费用是%d 元元n,15); break; case 2: printf(费用是费用
31、是%d 元元n,35); break; case 3: printf(费用是费用是%d 元元n,50); break; case 4: printf(费用是费用是%d 元元n,70); break; default: printf(输入错误!输入错误!n); 计算方法:计算方法: 首先计算表达式首先计算表达式1的值,的值, 若表达式若表达式1为真,取表达式为真,取表达式2的值的值 若若表达式表达式1为假,取表达式为假,取表达式3的值的值 形式:形式: 表达式表达式1 ?表达式?表达式2 :表达式:表达式3例如:例如: a=2; b=3; c=ab?a:b; 例例3.20 输入一个纳税人的个人月
32、收入,计算输入一个纳税人的个人月收入,计算 应纳个人所得税。应纳个人所得税。 l按照规定,按照规定,l全月应纳税所得额全月应纳税所得额=月收入月收入2000。l而应纳个人所得税税额的计算公式是:而应纳个人所得税税额的计算公式是:l应纳个人所得税税额应纳个人所得税税额l =应纳税所得额应纳税所得额适用税率适用税率- -速算扣除数速算扣除数l例如某人月收入例如某人月收入8400,减去,减去2000元,全月应元,全月应l纳税所得额为纳税所得额为6400元,应纳个人所得税税额元,应纳个人所得税税额l=640020%- -375=905元。元。程序见教材 P72 例题l例例3.21 编写程序,输入一个用
33、整数表示的编写程序,输入一个用整数表示的l年份,输出显示该年份是否是闰年。年份,输出显示该年份是否是闰年。程序见教材 P73-74 例题 例例3.22 混淆关系运算符混淆关系运算符“=”和赋值运算符和赋值运算符“=”。 例题:求 方程的解。02cbxax解题思路:处理以下各情况解题思路:处理以下各情况 ,不是二次方程,不是二次方程 ,有两个相等实根,有两个相等实根 ,有两个不等实根。,有两个不等实根。 ,有两个共轭复根。,有两个共轭复根。 应当以应当以p+qi和和p-qi的形式输出复根的形式输出复根 其中,其中,p=-b/2a,q=( )/2a ( 其中开放用函数其中开放用函数sqrt( ))042 acb042 acb042 acbacb42#include #include void ma
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/CSPSTC 170-2025隧道掘进机(TBM)数据采集、存储与前处理技术规程
- T/ZAWS 009-2024加氢站用高压氢气管道安装及检测规范
- T/HBSL 14-2025生产建设项目水土保持单元工程施工质量验收规范
- T/CIE 265-2024硅基无源光电器件电磁仿真规范
- T/CAOE 93-2025智慧海洋应急通信试验网络终端设备技术要求
- T/CSAE 482-2025纯电动与混合动力越野乘用车爬坡与脱困性能试验方法
- 2025~2026学年江西吉安市吉水县人教版五年级下册期末数学试卷【附答案】
- AI在梵语巴利语中的应用
- 2026学年广东省河源市三年级数学期末自测模拟难点突破题详细参考解析详细答案和解析
- PHP 上机考试试题(含详细答案解析)
- 2025年全国HIV抗体诊断试剂临床质量评估报告范文
- 阅读护理文献分享
- 血液体液溅洒处理流程
- 机电安装工程技术标书模板
- 担保合同范本
- 上海交通大学物理化学考研冲刺宝典
- 中职英语1 基础模块 Unit 3 shopping
- 全民国防教育日忆九一八事件勿忘国耻勇毅前行课件
- 简易砌墙合同范本
- 探讨在预防接种中如何与家长有效沟通
- 新汉语水平考试 HSK(四级)试题及答案
评论
0/150
提交评论