C语言第三章-分支结构_第1页
C语言第三章-分支结构_第2页
C语言第三章-分支结构_第3页
C语言第三章-分支结构_第4页
C语言第三章-分支结构_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

重点讨论问题:C程序控制结构有哪几种?分支结构的种类?两路分支结构,if…else语句实现单路分支结构,if语句实现多路分支结构,if…elseif语句实现,switch语句实现If语句的嵌套第三章分支程序设计C语言控制结构的种类C语言是一中面向过程的结构化程序设计语言,它的控制结构可以分为:顺序结构:按语句在程序中出现的先后顺序依次执行的每一条语句.(C程序最主要的程序结构)语句1语句2选择结构(分支结构):根据变量或表达式满足的条件决定所要执行的语句.成立(非0)

不成立0条件语句1语句2循环结构:依据一定条件的频率反复地执行一组语句.0非0条件语句3.2两路分支分支又叫选择,它是一种程序结构它是根据某一条件的“真”或“假”,有选择地执行程序中某一局部代码图3-4两路分支的逻辑结构

3.2.1if…else…语句如何在C语言中实现选择结构(1)语句块1和语句块2可以是一条语句,也可以是多条语句,如果是多条,需要用括号括起来条件语句块1语句块2if〔x>0〕y=1;elsey=-1;if〔表达式〕语句块1;else语句块2;if〔x>0〕{y=1;y++;}else{y=-1;y--;}(2)由于表达式存在互补关系,使用不同的表达式就有不同的程序格式

图3-7if…else两种不同的编码格式if〔x>0〕y=1;elsey=-1;if〔!(x>0)〕y=-1;elsey=1;例求出a,b中最大数,将最大数放到max中,并输出它。#inlcude<stdio.h>

int

main(){inta,b,max;printf(“inputnumbera,b\n”);scanf(“%d%d”,&a,&b);if(a>b)max=a;elsemax=b;

printf(“themaxis%d\n”,max);return0;}3.2.2if语句if(表达式)语句块1;——单路分支结构

真假表达式语句块1if语句是if...else语句的一个特例,可以把它理解为是else后面跟一条空语句,即条件为“假”时什么也不做if(表达式)语句块1;[else;]例设x与y有如下函数关系,当x>0时,y=x-7;当x=0时,y=2;当x<0时,y=3*x*x;试输入x的值,求出y的值。#include<stdio.h>intmain(){floatx,y;printf(“inputnumberx:\n”);scanf(“%f”,&x);if(x>0)y=x-7;if(x=0)y=2;if(x<0)y=3*x*x;printf(“%.2f\n”,y);return0;}3.2.3if语句的嵌套If语句的嵌套——在if语句中包含一个或多个if语句。if()if()语句1内嵌else语句2局部elseif〔〕语句3内嵌else语句4局部注意:if与else的配对关系,else总是与它上面最近的未配对的if配对if()if()语句1elseif〔〕语句2else语句3{if()语句1}例有一个函数:-1〔x<0〕y=0(x=0)编写一个程序,输入1(x>0)x值,输出y值。voidmain(){intx,y;scanf(“%d”,&x);if(x<0)y=-1;elseif(x==0)y=0;elsey=1;printf(“%d,%d”,x,y);if(x>=0)if(x>0)y=1;elsey=0;elsey=-1;

y=-1;if(x!=0)if(x>0)y=1;elsey=0;

y=0if(x>=0)if(x>0)y=1;elsey=-1;

3.2.4条件表达式条件表达式是由两个运算符(?和:)把三个操作数连接而成的式子它是C中唯一一个三元表达式条件表达式的一般形式为:表达式1?表达式2:表达式3如:x>=5?y=x*x:y=x+x

表达式的处理过程是:先计算表达式1,假设非0(真),那么求表达式2的值;否那么求表达式3的值,并把求得的值作为整个表达式的值。3.3多路分支结构3.3.1if…elseif语句if〔表达式1〕语句1elseif〔表达式2〕语句2elseif〔表达式3〕语句3……elseif〔表达式n-1〕语句n-1else语句n假真假真假真表达式2表达式3表达式1语句1语句2语句3语句4例3运输公司对用户计算运费,路程〔s〕越远,每千米运费越低.折扣标准为:

s<250km0

250<=s<500km2%

500<=s<1000km5%

1000<=s<2000km8%

2000<=s<3000km10%

3000<=s15%

设每千米每吨货物的根本运费为p,货物重量为w,距离为s,折扣为d,总运费为f

f=p*w*s*(1-d)

#include<stdio.h>intmain(){ints;floatp,w,d,f;printf(“inputnumberp,w,s\n”);scanf(“%f,%f,%d”,&p,&w,&s);if(s<250)d=0;elseif(s<500)d=0.02;elseif(s<1000)d=0.05;elseif(s<2000)d=0.08;elseif(s<3000)d=0.1;elsed=0.15;f=p*w*s*(1-d);printf(“f=%f”,f);return0;}说明:在三中形式的if语句中,if后面的表达式一般为逻辑表达式或关系表达式。在执行if语句时先会对表达式求解,假设表达式值为0,按假处理,表达式值为非0,那么按真处理。if(3)printf(“happy”);所以,表达式可以是任意数值类型包括整型、实型、字符型、指针型数据。if〔’a’〕printf(“%d”,’A’);if(x>0)printf(“%f”,x);elseprintf(“%f”,-x);else子句不能作为一个语句单独使用,它必须是if语句的一局部,与if配对使用。

在if和else后面可以含一个内嵌操作语句,也可以有多个操作语句,要用{}将几个语句括成一个复合语句。

if(a>b)

{max=a;printf(“maxis%d”,max);}else

{max=b;printf(“maxis%d”,max);}3.3.1switch语句——是多分支选择语句。形式如下:switch〔表达式〕{case常量表达式1:语句1;case常量表达式2:语句2;……case常量表达式n:语句n;default:语句n+1;}例如:按照考试成绩的等级打印出百分制分数段,用switch语句实现switch(grade){case’A’:printf(“90~100\n”);case‘B’:printf(“80~89\n”);case‘C’:printf(“70~79\n”);case‘D’:printf(“60~69\n”);case‘E’:printf(“<60\n”);default:printf(“error\n”);}1.switch后面表达式可以是任何类型。2.每个case常量表达式的值必须不同。3执行完一个case语句后,流程控制会转移到下一个Case继续执行switch(grade){case’A’:printf(“90~100\n”);break;case‘B’:printf(“80~89\n”);break;case‘C’:printf(“70~79\n”);break;case‘D’:printf(“60~69\n”);break;case‘E’:printf(“<60\n”);break;default:printf(“error\n”);}退出switch语句例4将例3用switch语句来编程#include<stdio.h>intmain(){ints;floatp,w,d,f;printf(“inputnumberp,w,s\n”);scanf(“%f%f%d”,&p,&w,&s);if(s>=3000)c=12;elsec=s/250;switch(c){case0:d=0;break;case1:d=0.02;break;case2:case3:d=0.05;break;

case4:case5:case6:case7:d=0.08;break;case8:case9:case10case11:d=0.1;break;case12:d=0.15;break;}f=p*w*s*(1-d);printf(“f=%.2f\n”,f);}练习6

main(){intx,y,t;scanf(“%d,%d”,&x,&y);if(x<y){t=x;x=y;y=t;}if(x<z){t=x;x=z;z=t;}if(y<z){t=z;z=y;y=t;}printf(“%d>%d>%d\n”,x,y,z);}程序举例例1写一个程序,判断某一年是否为闰年分析:判别某一年year是否为闰年的算法符合下面条件之一是:1.能被4整除,但不能被100整除2.能被4整除,又能被400整除程序中以变量leap代表是否为闰年,假设闰年,那么leap=1;非闰年,那么leap=0假假假输入yearleap=0;leap=1;leap=1;leap=0;真真真真假year%4==0year%100==0year%400==0if(year%4==0)if(year%100==0)

温馨提示

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

评论

0/150

提交评论