if语句
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例6.10 输出变量a的值 main() { int a=0, i=1;
switch( i ) { case 0:
case 1: a+=2; case 2: case 3: a+=3; default: a+=7; } printf(“%d\n”,a); }
2个case子句, 共用同一语句
(组)
执行顺序:
3.switch 语句使用说明 (1)在case后的各常量表达式的值不能相同, 否则会出现错误。 (2)在case后,允许有多个语句,可以不用 { } 括起来。 (3)各case和default子句的先后顺序可以 变动,而不会影响程序执行结果。 (4)default子句可以省略不用。 (5)多个case子句,可共用同一语句(组)。
if (a>b) s=s+t; else
if (a= =b) t=5; /* 语句2是 if 语句*/ else t=2*s;
例 6.8 输入任意三个整数,求三个数中的最大值。 main() { int n1,n2,n3 ; scanf("%d,%d,%d",&n1,&n2,&n3);
if (n1>n2) if (n1>n3) printf("max=%d\n", n1); else printf("max=%d\n", n3);
2. 第二种形式
(1)语句格式: if(表达式) 语句1; else 语句2; 说明:else子句(可选)是 if 语句的一部分,必 须与 if 配对使用,不能单独使用 (2)语句功能:如果表达式的值为真(T),则执行 语句1,否则执行语句2 。
。
例6.1 输入两个整数,输出其中的大数。 void main() {
3条并列单 分支语句
printf("Three nbers after sorted:");
printf("%d,%d,%d\n",a,b,c);
}
3. 第三种形式 (1) 语句格式
if (表达式1) { 语句组1} else if (表达式2) { 语句组2} else if (表达式3) { 语句组3} else if (表达式4) { 语句组4} else { 语句组5}
int a,b,max; printf("\n input two numbers: "); scanf("%d%d",&a,&b); max=a; if (b>max) max=b; printf("max=%d",max); }
例6.2 输入两个整数,输出其中的大数。 main() { int a, b;
5. if 语句与条件运算符
如果在条件语句中,只执行单个的赋值语句时, 常可使用条件表 达式来实现。不但使程序简洁,也提高了运行效率。
例 6.7 输入任意三个整数,求三个数中的最大值。 main() { int n1,n2,n3,max; scanf("%d,%d,%d",&n1,&n2,&n3); max= n1>n2 ? n1: n2; max= (n3>max) ? n3: max ; printf("max=%d\n",max); }
max= ( n1>n2 ) ? ((n1>n3 ) ? n1 : n3):((n2>n3 ) ? n2 : n3);
6.if语句的嵌套与嵌套匹配原则
(1)if 语句嵌套,是指,在“语句1”或(和)“语句 2”中,又包含有 if 语句的情况。
if 语句嵌套时,else子句与在它上面、距它最近、且尚 未匹配的 if 配对。例如:
不影响结果; break语句很重要,其作用终止switch语句,执行switch结构外的
语句,如果没有它,程序将继续执行下一个case后的程序段,直 到遇到break或switch结构结束为止; switch()中表达式的值的类型可以使整数类型、字符型或枚举类型, 而case后只能是常量,一般为整数、字符或常量表达式。 凡是能用switch语句编写的程序都能用if语句编写,反之则不然。
else if (n2> n3) printf("max=%d\n", n2); else printf("max=%d\n", n3);
}
例6.9 if 语句的嵌套使用 main() { int a, b, c, d, x;
a=b=c=0; d=20; if ( a ) d=d-10; else if ( d+2 )
例6.4 输入任意三个数,按从小到大的顺序排序输出。
main()
{
int a, b, c, temp;
printf("Please input three numbers:");
scanf("%d,%d,%d",&a,&b,&c);
if (a>b) { temp=a; a=b; b=temp;}
if (b>c) { temp=b; b=c; c=temp;} if (a>b) { temp=a; a=b; c=temp;}
case后面“常量表达式”的值,必须各不相同,多个case 子句,可共用同一语句(组)。
2.执行过程 ( 1 ) 当 switch 后 面 “ 表 达 式 ” 的 值 , 与 某 个 case后面的“常量表达式”的值相同时,就执行该 case后面的语句组; (2)如果没有任何一个case后面的“常量表达 式”的值,与“表达式”的值匹配,则执行default 后面的语句,然后,再执行switch语句的下一条。 case后面的常量表达式仅起语句标号作用,并 不进行条件判断。系统一旦找到入口标号,就从此标 号开始执行,不再进行标号判断;
判别键盘输入字符的类别。
可以根据输入字符的ASCII码来判别类型。由ASCII码表可 知ASCII值小于32的为控制字符。
在“0”和“9”之间的为数字, 在“A”和“Z”之间为大写字母, 在“a”和“z”之间为小写字母, 其余则为其它字符。
用if-else-if语句编程,判断输入字符ASCII码所在的范围, 分别给出不同的输出。
例 6.5 输入 + * - / , 输出对应的单词。 #include<stdio.h> main() { char ch ; ch=getchar(); if (ch=='+') printf("plus\n"); else if (ch=='-') printf("minus\n"); else if(ch=='*') printf("multiply\n"); else if (ch=='/') printf("divide\n"); else printf("error\n"); }
6.1 if 语 句
1. 第一种形式 (1)语句格式: if(表达式) 语句 语句中的表达式必须用单括号 “(” 和 “ )”括起来。 表达式后面语句也可使用复合语句。 (2)语句功能:如果表达式的值为真(T),则执行其后 的语句, 否则不执行该语句。 在C语言中,没有逻辑型数据类型。当表达式的值为任 何非零值,表示表达式的条件成立;当表达式的值为零 值,表示表达式的条件不成立。
a+=2; a+=3; a+=7;
4.switch语句中break语句使用 switch (表达式) { case 常量表达式1:语句组1;break; case 常量表达式2:语句组2;break; ...... case 常量表达式n:语句组n;break; [default:语句组n+1;] }
例6.6 输入任意三个整数,求三个数中的最大值。
main()
{ int n1,n2,n3,max;
scanf("%d,%d,%d",&n1,&n2,&n3);
if (n1>n2) max=n1; else max=n2; if (n3>max) max=n3;
max=n1; if (n2>max) max=n2;
输入两个整数,输出其中的大数。改用if-else语句判别a,b 的大小,若a大,则输出a,否则输出b。
表达方法3
前二种形式的if语句一般 都用于两个分支的情况。 当有多个分支选择时,可 采用if-else-if语句
其语义是:依次判断表达 式的值,当出现某个值为 真时, 则执行其对应的 语句。然后跳到整个if语 句之外继续执行程序。 如果所有的表达式均为假, 则执行语句n 。 然后继 续执行后续程序。
④ 再否则,当“表达式4”的值不等于0时,执行语 句组4,转向下一条语句;
⑤ 再否则,执行语句组5,转向下一条语句;
4. if语句说明 (1) 在三种形式的if语句中,条件表达式通常是逻 辑表达式或关系表达式, 但也可以是其它表达式, 如赋值表达式等,甚至也可以是一个变量。 (2) 在if语句的三种形式中,所有的语句应为单个 语句,如果要想在满足条件时执行一组(多个)语句, 则必须把这一组语句用{ } 括起来组成一个复合语 句。但要注意的是在}之后不能再加分号。
max=22 本例中的第1个if语句,可优化为如下不带else子句的形 式: max=n1;
if (n2>max) max=n2; 优化的基本思想是: 首先取一个数预置为max(最大值),然后再用max依次 与其余的数逐个比较,如果发现有比max大的,就用它给max 重新赋值,比较完所有的数后,max中的数就是最大值。
若 语句组5 又是一条 if 语句,整个语句最少 是一个6个分支的多分支 if 语句。
(2)多分支 if 语句的执行过程
① 当“表达式1”的值不等于0时,则执行语句组1 , 然后转向下一条语句;
② 否则,当“表达式2”的值不等于0时,执行语句 组2,转向下一条语句;
③ 再否则,当“表达式3”的值不等于0时,执行语 句组3,转向下一条语句;
printf("input two numbers: "); scanf("%d%d",&a,&b); if(a>b) printf("max=%d\n",a); else printf("max=%d\n",b); }
例6.3从键盘输入两个数,按升序输出两个数 #include <stdio.h> main() { float a, b, t; scanf("%f,%f",&a,&b); if (a>b) { t=a; a=b; b=t; } printf( "%5.2f,%5.2f\n",a ,b); }
printf("The three numbers are:”);
printf(“%d,%d,%d\n",n1,n2,n3);
printf("max=%d\n",max);
}
程序运行情况如下:
Please input three nbers:11,22,18↙
The three nbers are:11,22,18
传统流程图
if语句的嵌套
switch功能流程图
使用switch语句的关键是构造其条件表达式, 必须让其值与case后各常量值对应,所以它适 宜解决多分支且有较强规律的情况。
注意事项
switch(表达式)行后不能有分号; 如果case后的常量包含了所有情况,则default行可以不要; default行一般放于若干case后,也可以放于case中任意位置,并
if (!c) x=15;
说明(1)if后面 的“表达式”,除常 见的关系表达式或逻 辑表达式外,也允许 是其它类型的表达式, 其数值可以是整型、 实型、字符型。
else x=25;
printf(“d=%d,x=%d\n”,d,x)
}ຫໍສະໝຸດ Baidu
6.2 switch 语句
1.switch语句的一般形式 switch (表达式) { case 常量表达式1: 语句组1 case 常量表达式2: 语句组2 ...... case 常量表达式n: 语句组n [ default:语句组n+1 ] } “表达式” 可以是int、char和枚举型中的一种,每个
if语句
if或if/else格式、功能
用if语句可以构成分支结构。 它根据给定的条件进行判断, 以决定执行某个分支
程序段。 C语言的if语句有三种基本形式。
返回
表达方法1
if(表达式) 语句; 其语义是:如果表达式的值为真,则执行其后的语句, 否
则不执行该语句。
表达方法2
其语义是:如果表达式的值为真,则执行语句1,否则执 行语句2 。