C语言程序设计-选择结构

PPT
  • 阅读 64 次
  • 下载 0 次
  • 页数 26 页
  • 大小 251.500 KB
  • 2022-11-12 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档8.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
C语言程序设计-选择结构
可在后台配置第一页与第二页中间广告代码
C语言程序设计-选择结构
可在后台配置第二页与第三页中间广告代码
C语言程序设计-选择结构
可在后台配置第三页与第四页中间广告代码
C语言程序设计-选择结构
C语言程序设计-选择结构
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 26
  • 收藏
  • 违规举报
  • © 版权认领
下载文档8.00 元 加入VIP免费下载
文本内容

【文档说明】C语言程序设计-选择结构.ppt,共(26)页,251.500 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-2248.html

以下为本文档部分文字说明:

C语言程序设计选择结构什么是选择结构?⚫根据所指定的条件是否满足,决定从给定的两组操作中选择其一。⚫选择结构是程序智能化的基础。⚫C语言的选择结构语法:if(条件表达式)语句1else语句2解释:如果条件满足则执行“语句1”,否

则执行“语句2”。注意:①当条件满足时,只执行“语句1”,不执行“语句2”;反之亦然;②“语句1”和“语句2”都需要有分号作为结束标志;③“语句2”后面的分号同时也是if语句的结束标志。语句1语句2语句1语句

2例:if(a>3)b=0;elseb=1;if(x<0.0)negative=negative+1;elsepositive=positive+1;#include<stdio.h>#include<math.h>main(){floata,b,c,x1,x2,beta;sc

anf("a=%f,b=%f,c=%f",&a,&b,&c);beta=b*b-4.0*a*c;if(beta>=0)x1=(-b+sqrt(flag*beta))/(2.0*a);elsex1=-9999;if(beta>=0)x2=(-b-sqrt(flag*beta))/(2.0*a)

;elsex2=-9999;printf("x1=%8.3f\n",x1);printf("x2=%8.3f\n",x2);}例:解一元二次方程⚫如果判别式小于零,则无法进行开方运算,给出错误提示。开始定义浮点型变量a,b,c定义浮点型变量x1,x2

,beta用scanf读入数据计算判别式,保存在beta中x1=-9999结束beta>=0?YN计算x1beta>=0?YN计算x2beta>=0?NY输出无解输出计算结果if(beta>=0)printf("results=%8.3f,%8.3f",x1,x2);elsepri

ntf("beta<0,can'tbetreated");}x2=-9999条件表达式⚫关系表达式关系运算符含义优先级>大于(>)高>=大于等于(≥)<小于(<)<=小于等于(≤)==等于(=)低!=不等于(≠)if(a>

0)p++;elsem++;if(x<=3.0)ok=1;elseok=0;if(x1!=x2)equal=1;elseequal=0;if(-3<x<3)action=1;elseaction=0;?例:关系表达

式有具体的计算结果:条件满足时为"真",条件不满足时为"假"。if语句在计算条件表达式后,若结果为"真"则执行“语句1”,若结果为"假"则执行“语句2”。条件表达式⚫逻辑表达式用于将多个关系表达式串起来表示更复杂的

条件。逻辑运算符含义&&与(AND)||或(OR)!非(NOT)条件a条件b!a!ba&&ba||b真真假假真真真假假真假真假真真假假真假假真真假假if(x>-3&&x<3)action=1;elseaction=0;if(a>b&&x>y)num=num+1;else

num=num-1;if(f!=a||m<=n)num++;elsenum--;例:注意事项:⚫C语言没有逻辑变量,用"1"代表"真",用"0"代表"假"。a=1;b=2;x=3;y=4;if(a+1=

=b&&x>y)……⚫推广,C语言用非零代表"真",用零代表"假"。if(b)……→if(b!=0)……if(a=a+4)……→a=a+4;if(a!=0)……if(3)…….→条件恒成立⚫C语言可能不对整个表达式进行计算。i

f(4||a==b)…if(0&&a==b)…⚫实型变量不能进行相等的比较。if(pi==3.14)……if(pi-3.14<1.0e-005&&pi-3.14>-1.0e-005)……100注意事项:⚫优先级a=b>c→a=(b>c)c>a+b→c>(a+b)a>b==c→(a

>b)==ca==b<c→a==(b<c)!(非)算数运算符关系运算符&&、||=(赋值)高低!a>b-4→(!a)>(b-4)a=!b>5&&!c<d||'c'+3>d→a=(!b>5)&&(!c<d)||('c'+3>d)技巧与建议:如果记不住优先级,就用括号将表达式进行明

显的分隔。实际编程序的时候也建议这样做。(x-3)*(y-4)>=0&&x!=0(3)(4)()xxfxx−−=写出:的定义域if语句的形式⚫if(表达式)语句1;else语句2;⚫if(表达式)语句1;表达式语句1语句2真假if(beta>=0)k=1

;elsek=0;表达式语句1假真flag=0;……if(beta>=0)flag=1;……例:输入一个整数a,判断它是偶数还是奇数?#include<stdio.h>voidmain(){inta;printf("inputanumber:");scanf("%d",&a);if(a

%2==0)printf("%disaneven\n",a);elseprintf("%disanodd\n",a);}分析:若a是偶数,a%2==0注意:该方法只适用于整数。if语句的形式⚫if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;……el

se语句n;表达式1语句1假真表达式2表达式3假语句2真语句3真假语句n#include<stdio.h>main(){floatincome,rate,tax;scanf("%f",&income);if(income<800.0)rate=0

.05;elseif(income<1200.0)rate=0.10;elseif(income<2000.0)rate=0.15;elseif(income<5000.0)rate=0.20;elserate=0.

25;tax=income*rate;printf("Thetaxof%.2fis%.2f",income,tax);}例:根据收入的不同计算所得税金额。复合语句⚫将多条语句用{}包含起来,可以出现在任何允许出现单个语句的地方。例:输入3个数,按由大到小排列。a<b?交换a,b

假真a<c?假真b<c?假真交换a,c交换b,cabt858t=a5a=b8b=t两个存储单元进行交换一定要引入一个中间变量if(a<b){t=a;a=b;b=t;}if(a<c){t=a;a=c;c=t;}if(b<c){t=b;b=c;c=t;}复合语句⚫将多条语句

用{}包含起来,可以出现在任何允许出现单个语句的地方。例:输入3个数,按由大到小排列。a<b?交换a,b假真a<c?假真b<c?假真交换a,c交换b,c作业:编写完整的程序,由键盘输入4个数,按由大到小的顺序排列并输出结果。if(表达式1)if(表

达式2)语句1else语句2elseif(表达式3)语句3else语句4else与最近的if匹配!!if语句的嵌套基本if语句:if(表达式)语句1else语句2例:设平面上一点M,其坐标为(x,y),若M落在圆心在坐标原点的半径为r的圆

上,则置key=1,落在圆外置key=2,落在圆内置key=0。分析:1)求点M到原点的距离d2)比较d和圆半径r的大小yM(x,y)x0r从键盘输入x,y计算dd≥r?开始结束key=0输出结果key=1真假d=r?真key=2假#includ

e<stdio.h>#include<math.h>voidmain(){floatx,y,d,r;intkey;printf("inputx,y,r:");scanf("%f,%f",&x,&y,&r);d=sqrt(x*x+y*y);i

f(d>=r)if(d==r)key=1;//在圆上elsekey=2;/*在圆外*/elsekey=0;//在圆内printf("(%.1f,%.1f):%d\n",x,y,key);}注意:1.el

se语句不能单独出现,必须与if配对出现,采用就近配对原则;2.第二个if语句是第一个if语句的"语句1",为明显区分,建议加括号。例:输入年份,判断是否是闰年⚫闰年的条件:1.年份能被400整除;2

.年份能被4整除但不能被100整除;条件一?从键盘输入year开始结束flag=1输出结果flag=1假真真flag=0假条件二?#include<stdio.h>voidmain(){intyear,flag;printf("Wh

ichyear?");scanf("%d",&year);if(year%400==0)flag=1;else{if(year%4==0&&year%100!=0)flag=1;elseflag=0;}if(flag==1)printf("%

d年是闰年\n",year);elseprintf("%d年不是闰年\n",year);}例:给一个不多于5位的正整数:①求出它是几位数;②分别输出每一位数字;③按逆序输出各位数字。真真真真真开始data≤99999并且data>0从键盘输入datalength--wan=0wan

=data/10000qian=data%10000/1000length=5length--qian=0且length=4bai=data%1000/100length--bai=0且length=3shi=da

ta%100/10length--shi=0且length=2ge=data%10输出lengthlength>4输出wanlength>3输出qianlength>2输出bailength>1输出shi输出ge错误提示结束真假真真输出ge真真真length>

1输出shilength>2输出bailength>3输出qianlength>4输出wan真逆序输出顺序输出假假假真假假假假假假假假#include<stdio.h>main(){intdata,length,wan,qian,bai,shi,ge;scanf

("%d",&data);if(data<0||data>99999)printf("错误!");else{length=5;wan=data/10000;if(wan==0)length--;qian=data%10000/1000;if(qian==0&&length==4)leng

th--;bai=(data%1000)/100;if(bai==0&&length==3)length--;shi=(data%100)/10;if(shi==0&&length==2)length--;ge=data%10;printf("数字长度为:%d位\n",length);

printf("顺序数字:");if(length>4)printf("%1d",wan);if(length>3)printf("%1d",qian);if(length>2)printf("%1d

",bai);if(length>1)printf("%1d",shi);printf("%1d\n",ge);printf("逆序数字:%1d",ge);if(length>1)printf("%1d",shi);if(length>2)printf("%1d",bai);if(l

ength>3)printf("%1d",qian);if(length>4)printf("%1d",wan);printf("\n",ge);}}90243↙数字长度为:5位顺序数字:90243逆序数字:34209运行结果:作业:

书后习题:5.55.65.95.10?条件运算符⚫语法:条件?表达式1:表达式2⚫含义:①先计算"条件";②若"条件"为真,计算并返回"表达式1"的值;否则,计算并返回"表达式2"的值。max=(a>b)?a:b;if(a>b

)max=a;elsemax=b;等价于a>b?printf("%d",a):printf("%d",b);a>b?a:c>d?c:d结合方向为“自右向左”!(非)算数运算符关系运算符&&、||条件运算符=(赋值)高低max=a>b?a:b+1;max=

(a>b?a:b)+1;max=a>b?a:(b+1);switch语句switch(表达式){case常量值1:语句1;break;case常量值2:语句2;break;……case常量值n:语句n;break;default

:语句n+1;}语法:1.计算表达式;2.若计算结果等于"常量值1",则执行"语句1",然后跳出switch结构;3.若计算结果等于"常量值2",则执行"语句2",然后跳出switch结构;4.……5.若计算结果不等于任何常量值,

则执行"语句n+1",结束switch结构。执行过程:表达式……语句2语句1语句n语句n+1常量值1常量值2常量值ndefault条件?语句1语句2两分支多分支例:用switch语句评价学生成绩60分以下为“E”;61~70分为“

D”;71~80分为“C”;81~89分为“B”;90分以上为“A”。#include<stdio.h>main(){intscore;printf("inputascore:");scanf("%d",&score);switch(score/10){case10:print

f("A\n");break;case9:printf("A\n");break;case8:printf("B\n");break;case7:printf("C\n");break;case6:printf("D\n"

);break;default:printf("E\n");}}关键:如何表示表达式和常量。注意事项:1.case语句只起标号作用,程序根据"表达式"的值,转向相应的case语句,顺序向下执行。2.语法上可以没有break语句,但一般逻辑上要求存在。3.表达式的结果可以是任意

类型,但一般为整型和字符型;4.常量表达式的值必须互不相同。#include<stdio.h>main(){chargrade;printf("inputagrade:");scanf("%c",&grade);switch(grade){case'A':printf

("优秀\n");break;case'B':printf("良好\n");break;case'C':printf("合格\n");break;case'D':printf("及格\n");break;case'E':printf("不及格\n");break;default:printf(

"输入错误!\n");}}例:将学生成绩的A~E级转换成中文习惯。A——优秀;B——良好;C——合格;D——及格;E——不及格。#include<stdio.h>main(){chargrade;printf("inputagr

ade:");scanf("%c",&grade);switch(grade){case'a':case'A':printf("优秀\n");break;case'b':case'B':printf("良好\n");break;case'c':case'C':printf("合格\n");brea

k;case'd':case'D':printf("及格\n");break;case'e':case'E':printf("不及格\n");break;default:printf("输入错误!\n");}}注意事项:1.多个case可以共用一组执行语句。2.case语句应考虑到全部可能的

情况;3.可以没有default语句;4.case后面可以有若干条语句;例:将阿拉伯数字的金额转换成中文大写。如:3254.76元写为:叁千贰佰伍拾肆圆柒角陆分例:从键盘不断输入数据,计算所有数据的平均值及均方根值,直至输入-9

999为止。naaaaSn2232221...+++=1212++=+nanSSn递推公式:均方根公式:naaaaAn...321+++=11++=+nanAAn递推公式:平均值公式:作业:1.输入小于5位的数字,要求统计位数,逐个输出各

位数字,逐个逆序输出各位数字。2.书P112,5.8题,要求用switch结构完成。3.解二元一次方程组(需要考虑到系数的各种可能)。111222aXbYcaXbYc+=+=

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?