全国计算机等级考试二级c语言_第1页
全国计算机等级考试二级c语言_第2页
全国计算机等级考试二级c语言_第3页
全国计算机等级考试二级c语言_第4页
全国计算机等级考试二级c语言_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

第五章选择结构本章要点什么是分支结构?它的作用是什么?

if语句和switch语句实现分支结构有何异同?switch语句中的break起什么作用?逻辑运算和关系运算的相同之处是什么?它们之间又有什么不同?任务程序1.两分段的数学函数计算2.分段计算水费3.机票实际价格的计算4.查询自动售货机中商品的价格5.1两分段的数学函数计算例5-1两分段的数学函数计算。

程序解析关系运算if-else语句逻辑运算1程序解析#include<stdio.h>#include<math.h>voidmain(){floatx,y;

printf(“Enterx:”);

scanf(“%f”,&x);

if(x==0.0) y=1;else y=sin(x)/x;

printf(“x=%5.2f,y=%5.2f”,x,y);}关系表达式选择结构2关系运算x<=15比较x和15的大小比较的结果:真假当x取值9.5时,x<=15的结果是:?当x取值21.3时,x<=15的结果是:?关系运算—比较运算,比较两个操作数关系运算符x<yx<=yx==yx>yx>=yx!=y关系表达式:用关系运算符将2个表达式连接起来的式子。如:x<=1区分=和==运用关系表达式表示比较的数学式C关系表达式x≤10x≥10x≠10x=10x<=10x>=10x!=10x==10用关系表达式描述条件判断x是否为负数x<0判断x是否不为零x!=03if-else语句if(表达式)

语句1else

语句2语句1表达式语句2真假

if(x==0.0) y=1;else y=sin(x)/x;软件测试的基本思想软件测试精心设计一批测试用例[输入数据,预期输出结果]

,然后分别用这些测试用例运行程序,看程序的实际运行结果与预期输出结果是否一致。inputx:2.5f(2.50)=0.4inputx:0f(0.00)=0.0if(x!=0)y=1/x;elsey=0;计算二分段函数if(表达式)

语句1else

语句2if(x<=10&&x>=1)y=4*x/3;else

y=0;4逻辑运算(ch>='a'&&

ch<='z')||(ch>='A'&&

ch<='Z')ch>='0'&&

ch<='9'x<=1关系运算-1<=x<=10-11 x

x>=-1并且

x<=1x>=-1&&x<=13种逻辑运算符逻辑与

&&

逻辑或

||逻辑非

!XX&&

YYXYX||

YX!

X逻辑与

&&

逻辑或||逻辑非!(x>1)&&(y>1)(x>1)||(y>1)(x>1) !(x>1)即x<=1逻辑运算符的含义逻辑运算符的功能逻辑与

&&

逻辑或||逻辑非!

aba&&b

a||b!a假

假假假真假真假真真真假假真假真真真真假逻辑表达式逻辑表达式:用逻辑运算符将逻辑运算对象连接起来的式子。(ch>='a')&&(ch<='z')

判断ch

是否为小写英文字母或:ch>='a'&&ch<='z'(ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')

判断ch

是否为英文字母条件的表示写出满足下列条件的C表达式。ch

是空格或者回车。ch==''||ch=='\n'number是偶数。number%2==0year是闰年,即year能被4整除但不能被100整除,或year能被400整除。

(year%4==0&&year%100!=0)||(year%400==0)在表示逻辑运算值时,以“1”代表“真”,“0”代表“假”。在判断一个量是为“真”还是为“假”时,以“0”代表“假”,以非“0”的数值作为“真”。5.2分段计算水费源程序-分段计算水费#include<stdio.h>int

main(void){doublex,y;

printf("Enterx:");

scanf("%lf",&x);

if(x<0){y=0;}elseif(x<=15){y=4*x/3;}else{y=2.5*x-10.5;}printf("f(%.2f)=%.2f\n",x,y);return0;}Enterx:-0.5f(-0.50)=0.00Enterx:9.5f(9.50)=12.67Enterx:21.3f(21.30)=42.75Enterx:?

if(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3……elseif(表达式m)语句melse语句n流程图if语句的三种结构条件执行二分支多分支表达式语句真(非0)假(0)

条件

语句1

语句2YN条件执行输入大写字母输出相应小写字母#include<stdio.h>voidmain()

{charch;

scanf(“%c”,&ch);if(ch>=‘A’&&ch<=‘Z’)

ch=ch+32;

printf(“ch=%c\n”,ch);}

变量定义变量赋值变成小写输出结果是大写字母吗?YN变量使用二分支结构#include<stdio.h>#include<math.h>voidmain(){floatx,y;

printf(“Enterx:”);

scanf(“%f”,&x);

if(x==0.0) y=1;else y=sin(x)/x;

printf(“x=%5.2f,y=%5.2f”,x,y);}关系表达式选择结构课堂练习题目:评价学生的成绩,输入一个百分制分数score,输出对应的成绩等级score≥90 优秀score≥80 良好score≥70 中score≥60 及格score<60 不及格#include<stdio.h>voidmain(){ intscore;

printf("inputascore:");

scanf("%d",&score); if(score>=90) printf("优秀\n"); elseif(score>=80) printf("良好\n"); elseif(score>=70) printf("中\n"); elseif(score>=60) printf("及格\n"); elseprintf("不及格\n");}课堂练习(程序)5.3机票实际价格的计算例5-3机票预定:输出实际机票价格原价为4000元5-10月为旺季,头等舱打9折,经济舱打7.5折其他时间为淡季,头等舱打6折,经济舱打3折程序解析if语句的嵌套1程序解析#include<stdio.h>voidmain(){

intprice=4000;//机票的原价

intmonth;//出行的月份

inttype;//头等舱为1,经济舱为2

printf("请输入您出行的月份:1-12");scanf(“%d”,&month);

printf("请问您选择头等舱还是经济舱?头等舱输入1,经济舱输入2");scanf(“%d”,&type);

if(month>=5&&month<=10)//旺季

{

if(type==1)//头等舱

printf("您的机票价格为:%d",price*0.9);elseif(type==2)//经济舱

printf("您的机票价格为:%d",price*0.75);

}

else//淡季

{

if(type==1)//头等舱

printf("您的机票价格为:%d",price*0.6);elseif(type==2)//经济舱

printf("您的机票价格为:%d",price*0.3);

}}2嵌套的if语句多分支结构有多种形式实现方法:嵌套的

if语句

else–if语句嵌套的if-else语句switch语句嵌套的if语句if(表达式)

语句1else

语句2

if语句

if语句

else–if语句嵌套的if-else语句if(表达式1)语句1elseif(表达式2)语句2……elseif(表达式n-1)语句n-1else语句n假表达式1表达式2语句1语句2语句n-1语句n真

表达式n-1假真

假假真

else–if语句n个分支需要n-1次比较嵌套的if–else语句if(表达式1)if(表达式2)语句1else语句2elseif(表达式3)语句3else语句4表达式1表达式3语句4真假表达式2语句3语句1语句2真真假假if(x<1)y=x+1;elseif(x<2)y=x+2;elsey=x+3;if(x<2)if(x<1)y=x+1;elsey=x+2;elsey=x+3;

x<2x<1y=x+1y=x+2真

假真

y=x+3假假x<1x<2y=x+1y=x+2真

假真

y=x+32种嵌套if语句的比较else和if的匹配if(表达式1)if(表达式2)语句1else语句2elseif(表达式3)语句3else语句4if(表达式1)if(表达式2)语句1

elseif(表达式3)语句3else语句4else与最靠近它的、没有与别的else匹配过的if匹配if(表达式1)if(表达式2)语句1elseif(表达式3)语句3else语句4改变else和if的配对例3-10改写下列if语句,使else和第1个if配对。if(x<2)if(x<1)y=x+1;elsey=x+2;if(x<2){if(x<1)y=x+1;}elsey=x+2;if(x<2)if(x<1)y=x+1;else;elsey=x+2;每条语句的执行条件?

5.4查询自动售货机中商品的价格例5-4

查询自动售货机中商品的价格程序解析switch语句1程序解析假设自动售货机出售4种商品,薯片(crisps)、爆米花(popcorn)、巧克力(chocolate)和可乐(cola),售价分别是每份3.0、2.5、4.0和3.5元。在屏幕上显示以下菜单,用户可以连续查询商品的价格,当查询次数超过5次时,自动退出查询;不到5次时,用户可以选择退出。当用户输入编号1~4,显示相应商品的价格;输入0,退出查询;输入其他编号,显示价格为0。[1]Selectcrisps[2]Selectpopcorn

[3]Selectchocolate[4]Selectcola

[0]Exit#include<stdio.h>Int

main(void){intchoice,i;doubleprice;

for(i=1;i<=5;i++){printf("[1]Selectcrisps\n");printf("[2]Selectpopcorn\n");printf("[3]Selectchocolate\n");printf("[4]Selectcola\n");printf("[0]exit\n");

printf("Enterchoice:");

scanf("%d",&choice);

if(choice==0)break;

switch(choice){case1:price=3.0;break;case2:price=2.5;break;case3:price=4.0;break;case4:price=3.5;break;default:price=0.0;break;}

printf("price=%0.1f\n",price);

}

printf("Thanks\n");}[1]Selectcrisps[2]Selectpopcorn

[3]Selectchocolate[4]Selectcola

[0]ExitEnterchoice:1price=3.0[1]Selectcrisps[2]Selectpopcorn

[3]Selectchocolate[4]Selectcola

[0]ExitEnterchoice:7price=0.0

[1]Selectcrisps[2]Selectpopcorn

[3]Selectchocolate[4]Selectcola

[0]ExitEnterchoice:0Thanks2switch语句处理多分支选择问题,3种情况1)在switch语句的每个语句段中都使用break语句switch(表达式){case常量表达式1:语句段1;break;case常量表达式2:语句段2;break;....…case常量表达式n:语句段n;break;default:语句段n+1;break;}switch(表达式){case常量表达式1:语句段1;break;case常量表达式2:语句段2;break;....…case常量表达式n:语句段n;break;default:语句段n+1;break;}表达式的值=常量表达式2的值表达式语句段1语句段2语句段n语句段n+1表达式的值=常量表达式1的值表达式的值=常量表达式n的值其他breakbreakbreakbreakswitch(choice){case1:price=3.0;break;case2:price=2.5;break;case3:price=4.0;break;case4:price=3.5;break;default:price=0.0;break;}用else-if如何实现?求解简单表达式例5-5输入一个形式如“操作数运算符操作数”的四则运算表达式,输出运算结果。例如:输入:3.1+4.8

输出:7.9源程序#include<stdio.h>int

main(void){charoperator;doublevalue1,value2;

printf("Typeinanexpression:");

scanf("%lf%c%lf",&value1,&operator,&value2);

switch(operator){case'+':

printf("=%.2f\n",value1+value2);

break;case'-':

printf("=%.2f\n",value1-value2);break;case'*':

printf("=%.2f\n",value1*value2);break;case'/':

printf("=%.2f\n",value1/value2);break;default:

printf("Unknownoperator\n");break;}return0;}Typeinanexpression:3.1+4.8

=7.9如果除数为0?2)在switch中不使用breakswitch(表达式){case常量表达式1:语句段1;case常量表达式2:语句段2;....…case常量表达式n:语句段n;default:语句段n+1;}switch(表达式){case常量表达式1:语句段1;case常量表达式2:语句段2;....…case常量表达式n:语句段n;default:语句段n+1;}switch(choice){case1:price=3.0;case2:price=2.5;case3:price=4.0;case4:price=3.5;default:price=0.0;}表达式的值=常量表达式2的值表达式语句段1语句段2语句段n语句段n+1表达式的值=常量表达式1的值表达式的值=常量表达式n的值其他price=?3)在switch的某些语句段中使用break例6输入10个字符,分别统计出其中空格或回车、数字和其他字符的个数。int

main(void){intblank,digit,i,other;charch;blank=digit=other=0;

printf("Enter10characters:");

for(i=1;i<=10;i++){

ch=getchar();

switch(ch){case'':case'\n':blank++;

温馨提示

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

评论

0/150

提交评论