资源描述
第六讲 IF语句
1、 IF语句
1.1简单分支语句
l 语句一般格式
if (表达式) 语句
表达式:可为算术、关系、逻辑、赋值等表达式
内嵌语句,可为:
· 赋值语句
· 函数调用语句
· 控制语句
· 复合语句
· 空语句
· 功能:
· 计算表达式的值,如果是一个非0值(即逻辑真),就执行内嵌语句,否则(即逻辑假)跳过内嵌语句,顺序执行后续语句。
简单分支语句的算法:
语句
流程图
N
Y
表达式非0?
表达式非0
T F
语句
N-S结构图
l 例如:
⑴ if (x>0) m++;
⑵ if ( a>b )
{ c=a; a=b; b=c; }
1.2双重分支语句
l 语句一般格式
if (表达式) 语句1 else 语句2
l 功能:
– 计算表达式的值,如果它的值是一个非0值(逻辑真),就执行内嵌语句1,之后跳过内嵌语句2,执行后续语句;否则跳过内嵌语句1,执行内嵌语句2,之后执行后续语句。
表达式非0
T F 语句1 语句2
N-S结构图
语句1
语句2
流程图
N
Y
表达式非0?
双重分支语句的算法
l 例如:
⑴ if (x>0) m++; else m--;
⑵ if ( ch>= 'a' && ch<= 'z' )
{ ch=ch-32 ; printf(" %c\n",ch); }
else printf(" %c\n",ch) ;
1.3多重分支语句
l 语句一般格式
if (表达式1) 语句1
else if (表达式2) 语句2
……
else if (表达式m) 语句m
else 语句 n
l 功能:
– 依次计算并判断表达式i,为非0时执行后面的语句,都为0时,执行语句n
– 无论执行完那个语句分支,都转到后续语句
多重分支语句的算法
l 流程图
表达式2?
表达式1?
语句n
语句1
语句2
语句m
…
Y
N
Y
N
N
Y
l N-S结构图
l 例如:
if (a<0) x= -1 ;
else if (a==0 ) x= 0 ;
else x=1 ;
1.4 if语句的简单应用
【例】输入一个字符,如果是大写字母,则将其转换为小写字母输出,否则直接输出。
思路:
l 输入:用 getchar 或 scnaf 函数
l ch是否为大写字母: ch>='A' && ch<='Z'
(或 ch>=65 && ch <= 90)
l 大写字母转换为小写字母: ch=ch+32
l 输出:用 putchar 或 printf 函数
程序:
#include "stdio.h"
main( )
{ char ch;
ch=getchar( );
if (ch>='A' && ch<='Z')
ch=ch+32;
printf("%c\n",ch );
}
1.5 if语句的嵌套
如果if的内嵌语句中又使用了一个if语句,则构成if语句的嵌套。
【例】比较两个整数的关系。
#include <stdio.h>
main( )
{ int x, y;
printf ("Enter integer X and Y:");
scanf ("%d%d", &x, &y);
if ( x != y )
if ( x > y ) printf ("X>Y\n");
else printf ("X<Y\n");
else printf ("X=Y\n");
}
if语句嵌套的形式
l 简单if语句的嵌套形式
if (表达式)
if 语句
l 双重(或多重)分支if语句的嵌套形式
if (表达式)
if 语句
else
if 语句
例如:
⑴ if (c<=100)
if (c>=50) printf("50<=c<=100\n");
⑵ if (c<=100)
if (c>=50) printf("50<=c<=100\n");
else printf("c<50\n");
else
if (c<=150) printf("100<c<=150\n");
else printf("c>150\n");
⑶ if (c<=100)
if (c>=50) printf("50<=c<=100\n");
else printf("c<50\n")
再例如:
if(a>b)
if(a>c)
if(a>d) m=1;
else m=2;
else m=3;
问题:哪一个 else 和哪一个 if 相匹配?
规则:在嵌套的if~else语句中,else总是与上面的离它最近的尚未配对的if 配对。
【例】输入一个数,判断它是奇数还是偶数,如果是奇数则进一步判断它是否为5的倍数。
程序:
main( )
{ int x;
scanf ("%d",&x);
if (x%2 != 0)
{ printf("%d is an odd \n",x) ;
if (x%5==0)
printf("%d is the times of 5 \n",x) ;
}
else
printf("%d is an even \n",x) ;
}
学习if语句的难点
l if ~else 语句的配对
l 正确用表达式描述条件
例如:当x大于5小于10时令x自增
if ( 5<x<10 ) x++;
l 正确判断内嵌语句
例如:if(x<y)
x=x+3; y=y-2;
else
x=x-3; y=y+2;
熟悉常用的if 表达式形式
例如有定义:int a,b=0;
a等于什么值时,执行b=2 ;语句?
if (a==0) b=2;等价于if (!a) b=2;
if (a!=0) b=2; 等价于if (a) b=2;
展开阅读全文