- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
后续程序. 后续程序.
此为真,做语句1 此为真,做语句1, 其它语句都不做
上面的语句为以下三种格式: 上面的语句为以下三种格式: 1,空语句 ; , 2,一个语句(不引起转移) ,一个语句(不引起转移) 3,前后加大括号的语句(复合语句), ,前后加大括号的语句(复合语句), 也叫程序段, 也叫程序段,如: {int a; 允许在复合语句前部定义变量,只 允许在复合语句前部定义变量, 能在复合语句中使用 float b; a=3; {int a; 变量要在 b=7.0;} 不能写成 最前面定 a=3;
表达式可 以是任意 合法表达 式,后面 不能加; 不能加;
此语句用于提示输入 例2:void main() : {int a,b,max; printf("\n input two numbers: "); scanf("%d %d",&a,&b); max=23 max=a; if (max<b) max=b; max=46 printf("max=%d",max); } 输入: 输入:23 46 输出:max=46 输出:max=46
输入:23 46 输入: 输出:max=46 输出:max=46
3,第三种形式为if-else-if形式: ,第三种形式为 形式: 形式 后面不能 if(表达式1) if(表达式 表达式1 加; 语义: 语义: 语句1 语句1; else if(表达式2) if(表达式 表达式2 依次判断表达式的 语句2 语句2; 值,当出现某个值为 else if(表达式3) if(表达式 表达式3 真时,则执行其对应 语句3 语句3; 的语句.然后跳到整 … 个if语句之外继续执行 语句之外继续执行 else if(表达式m) if(表达式 表达式m) 程序. 程序 . 如果所有的表 语句m 语句m; 达式均为假,则执行 else 语句n. 语句 .然后继续执行 语句n 语句n;
5.2 逻辑表达式: 逻辑表达式:
由逻辑运算符, 由逻辑运算符,圆括号把表达式连接起来的式子 ——表示条件 ——表示条件 若所表示的条件成立,其值为1(非0),否则其值为0 若所表示的条件成立,其值为 非 ,否则其值为 逻辑运算符: 逻辑运算符:&& (与) ,|| (或),!(非) &&和 ||均为双目运算符,具有左结合性 &&和||均为 双目运算符 ,具有左结合性. !为单目 均为双目运算符 左结合性. 运算符,具有右结合性 右结合性. 运算符,具有右结合性. 逻辑运算符和其它运算符优先级的关系可表示如下: 逻辑运算符和其它运算符优先级的关系可表示如下: !(非)→&&(与)→||(或) &&(与 ||(或 "&&"和"||"低于关系运算符,"!"高于算术运算 &&" ||"低于关系运算符, 符.
优先 成立为1 成立为1 不成立为0 不成立为0
注意:数学中多个条件, 注意:数学中多个条件,例 a>b>c>d 应表示为 a>b && b>c && c>d 不能顺手也写为 a>b>c>d 关系运算符都是双目运算符, 关系运算符都是双目运算符,其结合性均 左结合. 为左结合.关系运算符的优先级低于算术 运算符,高于赋值运算符. 运算符,高于赋值运算符. <,<=,>,>=的 在六个关系运算符中 , <,<=,>,>= 的 优先级相同,高于== 和 != , == 和 != 的 优先级相同 , 高于 ==和 !=,==和!=的 优先级相同. 优先级相同.
float b; b=7.0;}
义
#include"stdio. #include"stdio.h" 输入: void main(){ 输入:A 输出: char c; 输出:This is a capital letter c=getchar(); c=getchar(); if(c<32 32) if(c<32) character\n"); printf("This is a control character\n"); if(c>='0'&&c<='9 else if(c>='0'&&c<='9') digit\n"); printf("This is a digit\n"); else if(c>='A'&&c<='Z') 一个 letter\n"); printf("This is a capital letter\n"); 语句 else if(c>='a'&&c<='z') letter\n"); printf("This is a small letter\n"); else character\n"); printf("This is an other character\n"); }
按照运算符的优先顺序可以得出: 按照运算符的优先顺序可以得出: a>b && c>d 等价于 (a>b)&&(c>d) !b==c||d<a 等价于 ((!b)==c)||(d<a) a+b>c&&x+y<b 等价于 ((a+b)>c)&&((x+y)<b)
例 : 设x=0,y=2,a=8,k=-1,q=1,z=1,则 , 1,x+y>3 && a==8 , &&1 &&1 →2>3 &&1 → 0 &&1 → 0 2,x+y && 'a' , &&97 → 2 &&97 → 1 3,x+(y=3)==k*z || !a , →0+3==-1 || !a → 0||0 →0 4, 4,(x!=7) || 'a' →0!=7||97 →1||97 →1 5,! ( x+y>3 && a==8 ) , &&1) &&1) →!(2>3&& →!(0&& →!0 →1 6,! ( k*q ) → !(-1) →0 , 7,!!!x →!!(1) →!(0) → 1 ,
例 4 : 从键盘输入一个字符 , 判断它是否小写字母 . 从键盘输入一个字符, 判断它是否小写字母. 若是,将其转换成大写字母,否则不进行转换, 若是 , 将其转换成大写字母 , 否则不进行转换 , 作 后输出该字母. 后输出该字母. main() #include<stdio. #include<stdio.h> {char c; main() c=getchar(); { char c,a; if(c<='z'&&c>='a')cif(c<='z'&&c>='a')c-=32; c=getchar(); printf("%c\ printf("%c\n",c);} if(c<=' if(c<='a' || c>='z' ) c>=' a=c; /*判断非小写字母情况*/ /*判断非小写字母情况 判断非小写字母情况* if(c<=' &&c>=' if(c<='z'&&c>='a') a=ca=c-32; *判断是否是小写字母情况*/ 判断是否是小写字母情况* printf("%c\ printf("%c\n",a); }
功能:输入三个数, 例3:void main() 功能:输入三个数,按 : 照从大到小顺序输出 {int a,b,c,t; printf("\n input two numbers: "); scanf("%d %d %d " ,&a,&b,&c); if (a<b){ t=a;a=b;b=t;} 实现数的 if (a<c){ t=a;a=c;c=t;} 互换 if (b<c){ t=b;b=c;c=t;} printf("%d %d %d\n",a,b,c); } 输入: 输入:1 6 2↙ 输出: 输出:6 2 1
2,第二种形式为: if-else ,第二种形式为 if(表达式) if(表达式 表达式) 语句1 语句1; else 语句2 语句2; 语义:如果表达式的值 为真, 则执行语句1, 为真 , 则执行语句 , 否则 执行语句2 执行语句 .
后面不能 加;
void main() 例2的改写 {int a, b; printf("input two numbers: "); 输入两个整数 scanf("%d %d",&a,&b); if(a>b) printf("max=%d\n",a); else 输出其中大数 printf("max=%d\n",b); }