具有选择结构的C程序设计课件_第1页
具有选择结构的C程序设计课件_第2页
具有选择结构的C程序设计课件_第3页
具有选择结构的C程序设计课件_第4页
具有选择结构的C程序设计课件_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章具有选择结构的C程序设计我们在前章所介绍的简单C程序,是从程序结构的角度而言是简单的,所能解决的问题也是有限的但实际工作中,经常还会遇到根据不同情况进行不同处理的问题,这就需要计算机要作出判断和选择,而根据不同的条件来执行不同的程序段。在本章中,将介绍几种能实现判断和选择的语句以及怎样利用这些语句来实现C的程序设计第四章具有选择结构的C程序设计我们在前章所介绍的简第三章简单的C程序设计4.1if语句

if语句是用来判断所给定的条件是否满足,根据判定的结果(真或假)来决定执行给出的两种操作之一。语句格式1:if(表达式)语句;语句功能:根据表达式的结果来决定是否执行格式中的语句。if语句的三种格式

1、表达式可以是任意表达式2、语句只为一条语句,若超过一条,则采用复合语句3、当表达式的值为非0时代表“真”;0

时代表“假”第三章简单的C程序设计4.1if语句语句格式2:if(表达式)语句1;else语句2;语句功能:如果表达式的值为真(即非0)则执行语句1,否则执行语句2。#include“stdio.h”main(){inta,b;scanf(“%d%d\n”,&a,&b);

if(a>b)printf(“a=%d\n”,a);

elseprintf(“b=%d\n”,b);}

语句1语句2表达式?YN语句格式2:if(表达式)语句1;语句功能向计算机输入a,b

两个整数,然后判断a>b,若a>b

则输出a

的值。举例#include“stdio.h”main(){inta,b;scanf(“%d%d\n”,&a,&b);

if(a>b)printf(“a=%d\n”,a);}关系表达式输出函数调用语句向计算机输入a,b两个整数,然后判举例#inc语句格式3:if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;…...else语句n;语句功能:(elseif结构)用于实现多分支情况的处理。即在多个分支中仅执行表达式为非0值的那个if下的语句;若所有表达式都是0值,则执行最后一个else下的语句。最后一个else及其下面的语句也可以不存在。语句格式3:if(表达式1)语句1;语句功能#include“stdio.h”main(){intg;scanf(“%d\n”,&g);

if(a<60)printf(“不及格”);

elseif(g<70)printf(“及格”);elseif(g<80)printf(“中”);elseif(g<90)printf(“良”);elseif(g<=100)printf(“优”);elseprintf(“数据无效”);}#include“stdio.h”x(x<1)y=2x-1(1≤x<10)3x-11(x≥10)练习#include“stdio.h”main(){intx;floaty;scanf(“%d\n”,&x);

if(x<1)y=x;

elseif((x>=1)&&(x<10))y=2*x-1;

elsey=3*x-11;

printf(“x=%d,y=5.2f\n”,x,y);

}x(x<1)练习

A)i=0,j=0,a=6B)i=1,j=1,a=7C)i=1,j=0,a=7D)i=0,j=1,a=0练习写出下列程序的运行结果main(){inti=0,j=0,a=6;

if

((++i>0)||(++j>0))

a++;

printf(“i=%,j=%d,a=%d\n”,i,j,a);}20smain(){inta,b,c;a=10,b=50,c=30;

if

(a>b)a=b,b=c;c=a;

printf(“a=%db=%dc=%d\n”,a,b,c);}21

A)a=10b=50c=10B)a=10b=30c=10C)a=50b=30c=10D)a=50b=30c=503、main(){inti=-1;

if

(i<=0)

printf(“****\n”)

elseprintf(“%%%%\n”);}22

A)****B)%%%%C)%%%%cD)有语法错误,不能正确执行main(){inti,j,k,a=3,b=2;

i=(--a==b++)?–a:++b;j=a++;k=b;printf(“i=%d,j=%d,k=%d\n”,i,j,k);}23

A)i=2,j=1,k=3B)i=1,j=1,k=2C)i=4,j=2,k=4D)i=1,j=1,k=3A)i=0,j=0,a=6B语句格式4:语句说明:if(表达式)

if(表达式1)语句1;

else

语句2;

else

if(表达式2)语句3;

else

语句4;

if

语句任意嵌套形式(即嵌套的位置是任意,不固定的。)

注意:

在多个if-else嵌套中,else-if配对关系不能弄错。一个else应与它最近的一个且没有其它else配对的if组成配对关系。语句格式4:语句说明:if

main(){intx;floaty;scanf(“%d\n”,&x);

if

(x!=0)

if(x>0)

y=1;

elsey=-1;

elsey=0;

printf(“x=%d,y=5.2f\n”,x,y);

}-1(x<0)y=0(x=0)1(x>0)main()-1(x<判断某一年是否为闰年练习#include“stdio.h”main(){intyear,z;scanf(“%d”,&year);

if(year%4==0)

if(year%100==0)

if(year%400)==0)z=1;elsez=0;

elsez=1;

elsez=0;

if(z)printf(“%d”,year);elseprintf(“aleapyear\n”,year);}判断某一年是否为闰年练习#include“stdio.hmain(){intx,a,b,ok1,ok2;x=100;a=10;b=20;ok1=5;ok2=0;

if(a<b)

if(b!=15)

if(!ok1){x=1;printf(“x=%d\n”,x);}

elseif(ok2)x=10;x=-1;printf(“x=%d\n”,x);}写出下列程序的运行结果

请main()写出下列程序的运行结果请作业

A)0.000000B)0.250000C)0.500000D)1.0000002.0C)0.500000main(){floatx,y;scanf(“%f”,&x);

if

(a<0.0)y=0.0;

elseif((x<5.0)&&(x!=2.0))y=1.0/(x+2.0);

elseif(x<10.0)y=1.0/x;elsey=10.0;

printf(“%f\n”,y);}(96)25作业A)0.000000B作业

A)34B)4C)35D)3B)4main(){inta,b,c,x;a=b=c=0;x=35;

if

(!a)x--;

elseif(b);if(c)x=3;

elsex=4;

printf(“%d\n”,x);}(98.4)26作业A)34B)4C)

在书店买书,以100本为限。如果买1本不打折扣;买2本打折10%;买3本折扣为15%买3本以上折扣为20%。设书本数为x,单价为20.00元。请设计能实现该算法的C程序。作业27在书店买书,以100本为限。如果买1本作4.2switch语句前面我们学习了if语句,它的基本功能是实现两个分支选择,但在解决实际问题时,往往需要用到多分支的选择。虽然if语句的规则嵌套可以实现多分支的选择,但不够直观简洁,特别是在分支较多的情况下,if语句的嵌套层次也会更深,从而增加了理解的难度,也不便于修改和扩充。为此,C语言还提供了一个用于实现多分支选择的switch语句,以来解决多分支选择问题。4.2switch语句前面我们学习了if语句,语句格式:switch(表达式)

{case常量表达式1:语句组1;break;case常量表达式2:语句组2;break;……case常量表达式n:语句组n;break;default:语句组n+1;}语句格式:switch(表达式)语句格式:语句说明:首先计算表达式的值,然后依次与每一个case中常量表达式的值进行比较,一旦发现了某个匹配的值,就执行该case后面的语句组直到执行了break语句为止。若没有匹配的值则执行default后面的语句组。语句格式:语句说明:首先计算表达式的值,然

请编写程序,根据输入的学生成绩,应给出相应的等级。即:

90-100

A

80-89

B

70-79

C

60-69

D

0-60

E

main()

{intg;scanf(“%d\n”,&g);

switch(g/10)

{case10:case9:printf(“A\n”);break;case8:printf(“B\n”);break;case7:printf(“C\n”);break;case6:printf(“D\n”);break;

default:printf(“E\n”);

}

}

switch(表达式)

{case常量表达式1:语句组1;

break;case常量表达式2:语句组2;

break;……case常量表达式n:语句组n;break;default:语句组n+1;}1、表达式:可以是整型、字符型或枚举型等表达式,其表达式的结果值一定为整数。

2、常量表达式:可以是整数、字符等常量。

3、语句组:可以由一条语句或复合语句构成

4、要求switch后面的表达式值的类型必须面

case的常量表达式的类型要相同。switch(表达式)1、表达式:可以是整型、

请您选择进制转换菜单

1、10进制转换为16进制

2、16进制转换为10进制

3、10进制转换为

8进制

4、8进制转换为10进制请输入您的选择:再输入转换数据:举例请编写一个数制转换程序,要求能进行如下的数制转换

10进制转换为16进制;

16进制转换为10进制;

10进制转换为8进制;

8进制转换为10进制;请您选择进制转换菜单举例请编写一个数制转换程序,要求能进

main()

{intnum,data;printf(“\n1:10-16\n”);printf(“2:16-10\n”);printf(“\n3:10-8\n”);printf(“2:8-10\n”);printf(“\n请输入您的选择\n”);scanf(“%d\n”,&num);

switch(num)

{case1:scanf(“%d”,&data);printf(“%d,%x\”,data,data);break;case2:scanf(“%x”,&data);printf(“%x,%d\”,data,data);break;case3:scanf(“%d”,&data);printf(“%d,%o\”,data,data);break;case4:scanf(“%o”,&data);printf(“%o,%d\”,data,data);break;

default:printf(“数据有误\n”);

}

}

请您选择进制转换菜单

1、10进制转换为16进制

2、16进制转换为10进制

3、10进制转换为

8进制

4、8进制转换为10进制请输入您的选择:再输入转换数据:请您选择进制转换菜单

main(){floatx,y;charop;

scanf(“%f,%c,%f”,&x,&op,&y);

switch(op){case‘+’:printf(“%.2f%c%.2f=%.4f\n”,x,op,y,x+y);break;case’-’:printf(“%.2f%c%.2f=%.4f\n”,x,op,y,x-y);break;case‘*’:printf(“%.2f%c%.2f=%.4f\n”,x,op,y,x*y);break;case‘/’:if(y==0)printf(“数据错误!\n”);elseprintf(“%.2f%c%.2f=%.4f\n”,x,op,y,x/y);

}}请编制一个能完成两个数的四则运算程序(输入数值保留两位小数。练习main()请编制一个能完成两个数的四则练习第四章具有选择结构的C程序设计练习

main(){intyear,z;

scanf(“%d”,&year);

if(year%4==0)if(year%100==0)if(year%400==0)z=1;elaez=0;elsez=1;elsez=0;if(z)printf(“%dis”,year);elaeprintf(“%disnot”,year);

}请编制一个用于判断某一年是否是闰年的程序。29第四章具有选择结构的C程序设计练习main()第四章具有选择结构的C程序设计

有一函数x(-5<x<0)y=x-1(x=0)x+1(0<x<10)练习请编写一程序,要求输入x的值,输出y的值,分别利用:1、不嵌套的if语句2、嵌套的if语句3、if–else语句4、switch语句第四章具有选择结构的C程序设计练习输入一个整数x,然后判断该数是否为偶数,若是请打印输出,否则不打印。请编写程序。作业1输入一个整数x,然后判断该作业1请将以下语句改写成switch语句if(a<30)m=1;elseif(a<40)m=2;elseif(a<50)m=3;elseif(a<60)m=4;elsem=5;2请将以下语句改写成switch语句2main()

{intu=010,v=0x10,w=10;printf(“%d,%d,%d\n”,u,v,w);

}

A)8,16,10B)10,10,10C)8,8,10D)8,10,103main()

main()charc1=‘b’,c2=‘e’;printf(“%d,%c\n”,c2-c1,c2-’a’+’A’);}

A)2,MB)3,EC)2,ED)输出结果不确定5main()5

main(){intk=11;printf(“k=%d,k=%o,c=%x\n”,k,k,k);}A)k=11,k=12,k=11B)k=11,k=13,k=13C)k=11,k=013,k=0xbD)k=11,k=13,k=b4main()main()(一){inta;floatb,c;scanf(“%2d%3f%4f”,&a,&b,&c);printf(“\na=%d,b=%f,c=%f\n”,a,b,c);}

若运行时从键盘输入9876543210,则上面程序输出结果是

A)a=98,b=765,c=4321B)a=10,b=432,c=8765C)a=98,b=765.000000,c=4321.000000D)a=98,b=765.0,c=4321.0

4main()第四章具有选择结构的C程序设计我们在前章所介绍的简单C程序,是从程序结构的角度而言是简单的,所能解决的问题也是有限的但实际工作中,经常还会遇到根据不同情况进行不同处理的问题,这就需要计算机要作出判断和选择,而根据不同的条件来执行不同的程序段。在本章中,将介绍几种能实现判断和选择的语句以及怎样利用这些语句来实现C的程序设计第四章具有选择结构的C程序设计我们在前章所介绍的简第三章简单的C程序设计4.1if语句

if语句是用来判断所给定的条件是否满足,根据判定的结果(真或假)来决定执行给出的两种操作之一。语句格式1:if(表达式)语句;语句功能:根据表达式的结果来决定是否执行格式中的语句。if语句的三种格式

1、表达式可以是任意表达式2、语句只为一条语句,若超过一条,则采用复合语句3、当表达式的值为非0时代表“真”;0

时代表“假”第三章简单的C程序设计4.1if语句语句格式2:if(表达式)语句1;else语句2;语句功能:如果表达式的值为真(即非0)则执行语句1,否则执行语句2。#include“stdio.h”main(){inta,b;scanf(“%d%d\n”,&a,&b);

if(a>b)printf(“a=%d\n”,a);

elseprintf(“b=%d\n”,b);}

语句1语句2表达式?YN语句格式2:if(表达式)语句1;语句功能向计算机输入a,b

两个整数,然后判断a>b,若a>b

则输出a

的值。举例#include“stdio.h”main(){inta,b;scanf(“%d%d\n”,&a,&b);

if(a>b)printf(“a=%d\n”,a);}关系表达式输出函数调用语句向计算机输入a,b两个整数,然后判举例#inc语句格式3:if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;…...else语句n;语句功能:(elseif结构)用于实现多分支情况的处理。即在多个分支中仅执行表达式为非0值的那个if下的语句;若所有表达式都是0值,则执行最后一个else下的语句。最后一个else及其下面的语句也可以不存在。语句格式3:if(表达式1)语句1;语句功能#include“stdio.h”main(){intg;scanf(“%d\n”,&g);

if(a<60)printf(“不及格”);

elseif(g<70)printf(“及格”);elseif(g<80)printf(“中”);elseif(g<90)printf(“良”);elseif(g<=100)printf(“优”);elseprintf(“数据无效”);}#include“stdio.h”x(x<1)y=2x-1(1≤x<10)3x-11(x≥10)练习#include“stdio.h”main(){intx;floaty;scanf(“%d\n”,&x);

if(x<1)y=x;

elseif((x>=1)&&(x<10))y=2*x-1;

elsey=3*x-11;

printf(“x=%d,y=5.2f\n”,x,y);

}x(x<1)练习

A)i=0,j=0,a=6B)i=1,j=1,a=7C)i=1,j=0,a=7D)i=0,j=1,a=0练习写出下列程序的运行结果main(){inti=0,j=0,a=6;

if

((++i>0)||(++j>0))

a++;

printf(“i=%,j=%d,a=%d\n”,i,j,a);}20smain(){inta,b,c;a=10,b=50,c=30;

if

(a>b)a=b,b=c;c=a;

printf(“a=%db=%dc=%d\n”,a,b,c);}21

A)a=10b=50c=10B)a=10b=30c=10C)a=50b=30c=10D)a=50b=30c=503、main(){inti=-1;

if

(i<=0)

printf(“****\n”)

elseprintf(“%%%%\n”);}22

A)****B)%%%%C)%%%%cD)有语法错误,不能正确执行main(){inti,j,k,a=3,b=2;

i=(--a==b++)?–a:++b;j=a++;k=b;printf(“i=%d,j=%d,k=%d\n”,i,j,k);}23

A)i=2,j=1,k=3B)i=1,j=1,k=2C)i=4,j=2,k=4D)i=1,j=1,k=3A)i=0,j=0,a=6B语句格式4:语句说明:if(表达式)

if(表达式1)语句1;

else

语句2;

else

if(表达式2)语句3;

else

语句4;

if

语句任意嵌套形式(即嵌套的位置是任意,不固定的。)

注意:

在多个if-else嵌套中,else-if配对关系不能弄错。一个else应与它最近的一个且没有其它else配对的if组成配对关系。语句格式4:语句说明:if

main(){intx;floaty;scanf(“%d\n”,&x);

if

(x!=0)

if(x>0)

y=1;

elsey=-1;

elsey=0;

printf(“x=%d,y=5.2f\n”,x,y);

}-1(x<0)y=0(x=0)1(x>0)main()-1(x<判断某一年是否为闰年练习#include“stdio.h”main(){intyear,z;scanf(“%d”,&year);

if(year%4==0)

if(year%100==0)

if(year%400)==0)z=1;elsez=0;

elsez=1;

elsez=0;

if(z)printf(“%d”,year);elseprintf(“aleapyear\n”,year);}判断某一年是否为闰年练习#include“stdio.hmain(){intx,a,b,ok1,ok2;x=100;a=10;b=20;ok1=5;ok2=0;

if(a<b)

if(b!=15)

if(!ok1){x=1;printf(“x=%d\n”,x);}

elseif(ok2)x=10;x=-1;printf(“x=%d\n”,x);}写出下列程序的运行结果

请main()写出下列程序的运行结果请作业

A)0.000000B)0.250000C)0.500000D)1.0000002.0C)0.500000main(){floatx,y;scanf(“%f”,&x);

if

(a<0.0)y=0.0;

elseif((x<5.0)&&(x!=2.0))y=1.0/(x+2.0);

elseif(x<10.0)y=1.0/x;elsey=10.0;

printf(“%f\n”,y);}(96)25作业A)0.000000B作业

A)34B)4C)35D)3B)4main(){inta,b,c,x;a=b=c=0;x=35;

if

(!a)x--;

elseif(b);if(c)x=3;

elsex=4;

printf(“%d\n”,x);}(98.4)26作业A)34B)4C)

在书店买书,以100本为限。如果买1本不打折扣;买2本打折10%;买3本折扣为15%买3本以上折扣为20%。设书本数为x,单价为20.00元。请设计能实现该算法的C程序。作业27在书店买书,以100本为限。如果买1本作4.2switch语句前面我们学习了if语句,它的基本功能是实现两个分支选择,但在解决实际问题时,往往需要用到多分支的选择。虽然if语句的规则嵌套可以实现多分支的选择,但不够直观简洁,特别是在分支较多的情况下,if语句的嵌套层次也会更深,从而增加了理解的难度,也不便于修改和扩充。为此,C语言还提供了一个用于实现多分支选择的switch语句,以来解决多分支选择问题。4.2switch语句前面我们学习了if语句,语句格式:switch(表达式)

{case常量表达式1:语句组1;break;case常量表达式2:语句组2;break;……case常量表达式n:语句组n;break;default:语句组n+1;}语句格式:switch(表达式)语句格式:语句说明:首先计算表达式的值,然后依次与每一个case中常量表达式的值进行比较,一旦发现了某个匹配的值,就执行该case后面的语句组直到执行了break语句为止。若没有匹配的值则执行default后面的语句组。语句格式:语句说明:首先计算表达式的值,然

请编写程序,根据输入的学生成绩,应给出相应的等级。即:

90-100

A

80-89

B

70-79

C

60-69

D

0-60

E

main()

{intg;scanf(“%d\n”,&g);

switch(g/10)

{case10:case9:printf(“A\n”);break;case8:printf(“B\n”);break;case7:printf(“C\n”);break;case6:printf(“D\n”);break;

default:printf(“E\n”);

}

}

switch(表达式)

{case常量表达式1:语句组1;

break;case常量表达式2:语句组2;

break;……case常量表达式n:语句组n;break;default:语句组n+1;}1、表达式:可以是整型、字符型或枚举型等表达式,其表达式的结果值一定为整数。

2、常量表达式:可以是整数、字符等常量。

3、语句组:可以由一条语句或复合语句构成

4、要求switch后面的表达式值的类型必须面

case的常量表达式的类型要相同。switch(表达式)1、表达式:可以是整型、

请您选择进制转换菜单

1、10进制转换为16进制

2、16进制转换为10进制

3、10进制转换为

8进制

4、8进制转换为10进制请输入您的选择:再输入转换数据:举例请编写一个数制转换程序,要求能进行如下的数制转换

10进制转换为16进制;

16进制转换为10进制;

10进制转换为8进制;

8进制转换为10进制;请您选择进制转换菜单举例请编写一个数制转换程序,要求能进

main()

{intnum,data;printf(“\n1:10-16\n”);printf(“2:16-10\n”);printf(“\n3:10-8\n”);printf(“2:8-10\n”);printf(“\n请输入您的选择\n”);scanf(“%d\n”,&num);

switch(num)

{case1:scanf(“%d”,&data);printf(“%d,%x\”,data,data);break;case2:scanf(“%x”,&data);printf(“%x,%d\”,data,data);break;case3:scanf(“%d”,&data);printf(“%d,%o\”,data,data);break;case4:scanf(“%o”,&data);printf(“%o,%d\”,data,data);break;

default:printf(“数据有误\n”);

}

}

请您选择进制转换菜单

1、10进制转换为16进制

2、16进制转换为10进制

3、10进制转换为

8进制

4、8进制转换为10进制请输入您的选择:再输入转换数据:请您选择进制转换菜单

main(){floatx,y;charop;

scanf(“%f,%c,%f”,&x,&op,&y);

switch(op){case‘+’:printf(“%.2f%c%.2f=%.4f\n”,x,op,y,x+y);break;case’-’:printf(“%.2f%c%.2f=%.4f\n”,x,op,y,x-y);break;case‘*’:printf(“%.2f%c%.2f=%.4f\n”,x,op,y,x*y);break;case‘/’:if(y==0)printf(“数据错误!\n”);elseprintf(“%.2f%c%.2f=%.4f\n”,x,op,y,x/y);

}}请编制一个能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论