C语言选择结构.docx

上传人:b****8 文档编号:28008631 上传时间:2023-07-07 格式:DOCX 页数:11 大小:17.80KB
下载 相关 举报
C语言选择结构.docx_第1页
第1页 / 共11页
C语言选择结构.docx_第2页
第2页 / 共11页
C语言选择结构.docx_第3页
第3页 / 共11页
C语言选择结构.docx_第4页
第4页 / 共11页
C语言选择结构.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

C语言选择结构.docx

《C语言选择结构.docx》由会员分享,可在线阅读,更多相关《C语言选择结构.docx(11页珍藏版)》请在冰豆网上搜索。

C语言选择结构.docx

C语言选择结构

clrscr();/*清屏*/

选择结构

一、单分支选择语句

1.格式

if(表达式)语句

2.功能

当表达式的值为非0(真、条件成立)时,执行“语句”。

否则执行if之后的下一句。

3.说明

(1)表达式可以是任意类型的表达式(结果是数值型),但通常是关系或逻辑表达式。

也可以是数值型的常量或变量(它们是最简单的表达式)。

(2)“语句”可以是以分号结束的单个语句,也可以是一个复合语句。

不可以是多个语句。

4.举例

例1、任意读入两个整数,然后输出其中的较大者。

main()

{intx,y;

scanf("%d%d",&x,&y);

if(x>y)printf("%d\n",x);

if(y>=x)printf("%d\n",y);

}

二、双分支if语句

【格式】

if(表达式)

语句1

else

语句2

【功能】

【说明】

1.“语句1”和“语句2”可以分别是以分号结束的单个语句,也可以分别是一个复合语句。

都不可以是多个语句。

2.else子句不可以独立存在。

改写上例:

任意读入2个整数,输出较大数。

main()

{intx,y;

scanf("%d%d",&x,&y);

if(x>y)

printf("%d\n",x);

else/*暗含两种情况:

<和=*/

printf("%d\n",y);

}

例如:

任意读入2个整数,按从小到大的顺序输出这2个数。

【法1】

main()

{intx,y;

scanf("%d%d",&x,&y);

if(x

printf("%d,%d\n",x,y);

else

printf("%d,%d\n",y,x);

}

【法2:

借助第三数,完成两数的交换】

让x中放较小数,y中放较大数。

main()

{intx,y;

intt;/*中间变量*/

scanf("%d%d",&x,&y);

if(x>y)

{t=x;x=y;y=t;}

printf("%d,%d\n",x,y);

}

【基本算法一:

两数交换,借助第三数】

t=x;x=y;y=t;

【思考:

本题改成“任意读入3数,从小到大输出”】

三、多分支if语句

【格式】

if(表达式1)

语句1

elseif(表达式2)

语句2

elseif(表达式3)

语句3

……

else

语句n+1

【功能】

【注意】else和if之间有空格。

最后的else子句可以省。

【举例】

例1、批发铅笔,批发量x,

100≤x<300,打7折;

300≤x<500,打5折;

500≤x<1000,打4.5折;

x>=1000,打4折。

其余不

打折。

求顾客应付款。

(1元/支)

【法1:

多分支选择语句】

main()

{intx;

floatcost;

scanf("%d",&x);

if(x>=1000)

cost=1*x*0.4;

elseif(x>=500)

cost=1*x*0.45;

elseif(x>=300)

cost=1*x*0.5;

elseif(x>=100)

cost=1*x*0.7;

else

cost=1*x;

printf("cost=%f\n",cost);

}

%m.nf(m、n是正整数,通常m>n,

m表示整个实数所占显示宽度,包含小数点,实数宽度不够时,左补空格;

n表示小数点右边的位数。

例如:

printf("%6.2f\n",3.14159);

UU3.14(U代表空格)

又如:

printf("%3.4f\n",3.14159);

3.1416

【注意】%m.nf的格式可以省写成“%.nf”,即可将m省略。

%-m.nf(若数宽度不够,则右补空格)

%.nf(m可以省,满足小数点后保留n位,该实数实际需要占多少位,就占多少位。

关于整数:

%md:

输出的整数若位数不足m位,左补空格。

%-md:

输出的整数若位数不足m位,右补空格。

例:

任意读入一个年份,判断其是否为闰年。

(能被400整除,或能被4整除且不能被100整除的,就是闰年)

四、if语句的嵌套(if语句中含有另一个if语句)

例1:

铅笔打折的改写。

main()

{intx;

floatcost;

scanf("%d",&x);

if(x<100)

cost=1*x;

else

if(x<300)

cost=1*x*0.7;

else

if(x<500)

cost=x*1*0.5;

else

if(x<1000)

cost=1*x*0.45;

else

cost=1*x*0.4;

printf("cost=%.2f\n",cost);

}

【注意】

(1)外选择语句必须完整地

包含内选择语句,请缩进书写。

(2)else总是和前面最近的一个没有配对且有资格配对的if配对。

例2、任意读入一个字符,

判断其是否为数字字符,若是,

进一步判断其是否为’5’,是

就输出该字符及其ASCII码值;

若不是数字字符,就输出

“Isnotdigit!

”。

【法一:

利用ASCII值判断】

#include

main()

{charc;

c=getchar();

if(c>='0'&&c<='9')

{if(c=='5')

printf("%c,%d\n",c,c);}

else

puts("Isnotdigit!

\n");

}

【用{}取消内if的配对资格!

【法二:

利用系统函数isdigit判断数字字符】

用系统函数(库函数):

isdigit(字符型数据)

含义是判断“字符型数据”是否为数字字符。

(是,则函数返回值为非0;否则为0),使用时一定要加头文件“ctype.h”。

#include

#include

main()

{charx;

scanf("%c",&x);

if(isdigit(x)!

=0)/*逻辑等价于isdigit(x)*/

{if(x=='5')

printf("%c:

%d\n",x,x);}

else

printf("Isnotdigit!

\n");

}

【将光标移到系统函数名下方,然后按Ctrl+F1,弹出对应头文件名。

按Esc键回到蓝色编辑环境。

【结论】

(1)用{}扩住某单分支if语句,可以取消其与else的配对资格!

(2)两组逻辑等价式:

变量a格式

a取值

逻辑等价式

a

0或非0

a!

=0

!

a

0或非0

a==0

【解释:

数值数据a

a!

=0

0(假)

非0(真)

所谓“逻辑等价”就是,当某式子的结果被当做逻辑值用时,其逻辑等价式的真值与该式子完全一致。

五、多分支switch语句

【格式】

switch(表达式)

{case常量1:

语句块1;break;

case常量2:

语句块2;break;

case常量3:

语句块2;break;

……

default:

语句n+1;

}

【说明】

(1)switch后的表达式通常

是整型或字符型表达式(常量、变量);

(2)case后的常量必须是

整型或字符型。

(3)“break;”语句只能出现

在switch或循环语句中。

作用

是跳出所在语句结构。

(4)“语句块1;……语句块n+1;”

可以是若干个语句,不必构成一个

复合语句。

(5)default分支可以省略。

【功能】

例1:

改写铅笔。

#include

main()

{intx;

floatcost;

scanf("%d",&x);

switch(x/100)

{case0:

cost=1*x;break;

case1:

case2:

cost=1*x*0.7;break;

case3:

case4:

cost=1*x*0.5;break;

case5:

case6:

case7:

case8:

case9:

cost=1*x*0.45;break;

default:

cost=1*x*0.4;

}

printf("%.2f\n",cost);

}

【而以下也正确】

#include

main()

{intx;

floatcost;

scanf("%d",&x);

switch(x/100)

{case1:

case2:

cost=1*x*0.7;break;

default:

cost=1*x*0.4;break;

case3:

case4:

cost=1*x*0.5;break;

case5:

case6:

case7:

case8:

case9:

cost=1*x*0.45;break;

case0:

cost=1*x;

}

printf("%.2f\n",cost);

}

【注意】

(1)各分支位置可以不分先后(不好!

应试的)。

但依然只有最后一个分支可以不加break;语句!

(2)两个(或以上)相邻分支的操作一样,可将对应语句写在最后一个分支上。

(3)如果前面的分支缺了break语句,则无条件地接着做下一个分支的语句,直到遇到break;或switch的}为止。

【补充:

4个数学函数,要加

#include

1、pow(x,y)

功能:

计算xy

2、abs(数值型表达式)

求“数值型表达式”的绝对值,即

|数值型表达式|。

注意:

必须是整型数据。

3、fabs(实数表达式)

求绝对值

4、sqrt(正数)

求“正数”的平方根。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 视频讲堂

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1