版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第 4 章 分支结构的程序设计本章重点if 语句的三种形式if 语句的应用ifelse 语句的应用ifelse if 语句的应用switch 语句的程序流程4.1 if 语句的应用if 语句形式之一if(表达式 ) 语句块表达式语句块假( 0)真(非 0)图 4.1 if 语句流程图例 4.1:从键盘输入一批数,统计正数的和,当输入0 时程序结束。分析问题:通过循环输入整数,假设输入变量为x;然后要判断该数是否为0,如果不为 0,再判断值是否大于零,如果大于零,加入和。#include int main( ) int x,sum=0; scanf(%d,&x); for( ; x ;
2、scanf(%d,&x) if(x0) sum=sum+x; printf( 正数总和为 :%dn,sum); return 0; 4.2 ifelse语句的应用if 语句形式之二if(表达式)语句块 1 else 语句块 2 表达式语句块 2 语句块 1 假 (0) 真 (非 0) 图 4.4 if else语句流程图例 4.3:判断从键盘输入的数是正数还是负数,输入数0 结束程序运行。分析问题:数从键盘输入,输入的数如果大于0 则输出“输入的数是正数”,如果是小于 0 则输出“输入的数是负数”,如果是等于0,则程序运行结束。流程图如图4.5 所示。图 4.5 程序流程图#inclu
3、de int main() int x=1; printf(n 请输入一整数(输入 0 程序退出 ):); scanf(%d,&x); while(x) if(x 0) printf( 输入的数 %d 是正数 .n,x); else printf( 输入的数 %d 是负数 .n,x); printf(n 请输入一整数(输入 0 程序退出 ):); scanf(%d,&x); return 0; 例 4.4:从键盘输入10 个整数, 把所有的正数相加以及所有的负数相加,最后输出所有正数的和,以及所有负数的和。0 0 1 1 开始定义变量大于 0 输出 “是正数 .”键盘输入输出
4、“是负数 .”x=0 结束键盘输入分析问题: 要从键盘输入十个整数,所以采用循环结构,输入的数分正数和负数,各进行累加。流程图如图4.6 所示。图 4.6 流程图#include int main() int nsum=0,n=0,psum=0,p=0; /*nsum 负数累加值,n 负数个数, psum 正数累加值, p 正数个数 (0 作为正数 )*/ int i,x; /* i 用于控制循环次数,x 用户存储输入的数*/ for(i=1;i=0) 0 1 开始定义变量结束循环结束?输出和值输入数大于 0 正数累加正数计数负数累加负数计数 psum+=x; p+; else nsum+=x
5、; n+; printf(n 有%d 个正数,和为:%dn 有%d 个负数,和为:%dn,p,psum,n,nsum); return 0; 4.3 ifelse if 语句的应用if 语句形式之三if (表达式1)语句块 1 else if(表达式2)语句块 2 else if(表达式n-1)语句块 n-1 else 语句块 n 功能:从上到下依次判断表达式的值,当出现某个值为真(非0)时,执行与其相对应的语句,并跳过其余条件的判别;如果所有的表达式均为假(0) ,则执行语句n。程序流程图如图4.7 所示。,假(0)假(0),假(0)表达式 1表达式 2 表达式 n-1语句 1 语句 2 语
6、句 n-1语句 n 假(0)真(非 0)真(非 0)真(非 0)真(非 0)图 4.7 ifelse if 流程图例 4.5:从键盘输入一个数给x,然后判断该变量是否大于零,若大于零的话,则输出一行文字说明该变量是正数,否则的话再判断变量x 的值是否为零, 若为零的话, 则输出一行文字说明该变量是零,否则的话则x 的值是负数,输出一行文字说明该变量是负数。分析: 输入的数分三种情况:正数、负数、零。流程图如图4.8 所示。图 4.8 流程图编译程序及运行0 0 1 1 开始定义变量x x0 输出“ x 是正数 .”键盘输入x 结束关键语句:scanf(%d,&x); if(x 0) p
7、rintf(x是正数 .n); else if(x=0) printf(x是零 .n); else printf(x 是负数 .n); 输出“ x 是零”输出“ x 是负数”x=0 #include int main() int x; printf( 输入一数值:); scanf(%d,&x); if(x 0) printf(x是正数 .n); else if(x = 0) printf(x是零 .n); else printf(x 是负数 .n); return 0; 4.4 if 嵌套语句的应用if 语句的嵌套是指if 语句中又包含了一个或多个if 语句。上一节介绍的if-else
8、 if 结构也是 if 语句的嵌套结构。例 4.6:编写一个程序,由键盘输入三个整数作为三角形的三条边,判断是否能构成一个三角形,如能并判断是等边三角形、等腰三角形、直角三角形,还是其它一般的三角形。分析问题: 设三个整数分别为:a、 b、c,构成三角形的条件为:a+bc&a+cb&b+ca 构成等边三角形的条件为:a=b&b=c ;构成等腰三角形的条件为:a=b|b=c|a=c。构成直角三角形的条件为:a*a+c*c=b*b|a*a+b*b=c*c|c*c+b*b=a*a。编译程序及运行步骤 1: 在 visual c+ 环境下新建文件可用开始 程序 microsof
9、t visual c+6.0 microsoft visual c+6.0 文件 新建 文件 c+ sourse file,输入文件名 4-6.c步骤 2:在 4-6.c 文件中输入以下完整的源程序。#include int main() int a,b,c; printf( 请输入第1 条边 :); scanf(%d,&a); printf( 请输入第2 条边 :); scanf(%d,&b); printf( 请输入第3 条边 :); scanf(%d,&c); if( a+bc&a+cb&b+ca) printf( 能构成一个三角形n); if (
10、a=b&b=c) printf( 能构成一个等边三角形n); else if(a=b|b=c|a=c) printf( 能构成一个等腰三角形n); else if(a*a+c*c=b*b|a*a+b*b=c*c|c*c+b*b=a*a) printf( 能构成一个直角三角形n); else printf( 能构成一个一般的三角形n); else printf( 不能构成一个三角形n); return 0; 4.5 switch 的应用switch 语句格式:switch(表达式) case 常量表达式1:语句序列break; case 常量表达式2: 语句序列break; case 常
11、量表达式n;语句序列 n break; default:语句序列n+1 真(非 0)表达式 =常量表达式2表达式 =常量表达式n无 break 语句真(非 0)真(非 0)假(0)假(0)语句序列 1假(0)语句序列 2 语句序列 nbreakbreakbreak有 break 语句有 break 语句无 break 语句表达式 =常量表达式 1语句序列 n+1有 break语句无 break语句图 4.9 语句执行的流程图例 4. 求执行下列程序段后k 的值。char c=2;int k ; switch(c+1-0) case 2:k+=1; case 2+1:k+=2; case 4:k
12、+=3; 解析: switch 中表达式的值为3,从 case 2+1入口,执行语句k+=2;得 k=3,由于此语句后无 break;语句,继续执行case 4后语句 :k+=3 ;最后 k。例 4.输入一个字符,如果是y、n 或 y、n,则分别执行一输出语句;如果是其他字母则执行另一输出语句。程序如下所示:#include void main() char ch; printf( please input y/n(y/n) :); scanf(%c , &ch); switch (ch) case y: case y: printf(n this is y or y.n); brea
13、k; case n: case n: printf(n this is n or n.n); break; default: printf(n this is other char.n); 例 4. 编写程序,实现如下功能:输入一个实数后,屏幕上显示如下菜单:1 输出相反数2 输出平方数3 输出平方根4 退出输入 1,输出该数的相反数;输入2,输出该数的的平方数;输入3,输出该数的的平方根;输入 4 退出此程序。输入14 之外的数,显示“请输入14 之间的数字” 。分析: 此题涉及多个菜单的选择,因此用到多分支结构switch, switch 可以不同条件实现不同的程序块,如此题中输入数字1,则执行输出相反数的程序块。图 4.10 菜单选择流程图#include #include int main() int i; float m; int c=5; printf( 输入任意一个整型数:n ); scanf(%f,&m); printf(*n); printf(1. 输出相反数 n); printf(2. 输出平方数 n); printf(3. 输出平方根 n); printf(4. 退出 n); printf(*n); while(1) 输入一个实数m 选项 14 k= -m k= 2mk= m退出永真选择 4 真
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025钳工高级技师技能鉴定精练考试题库及答案浓缩题
- 2025陕西历史博物馆招聘双语讲解员20人笔试历年参考题库附带答案详解
- 高中地理必修二6.4.2 人与自然和谐共生教学设计
- 2025新安全生产法安全技能考核试题及答案
- 2026年鹤岗市烟草专卖局人员招聘考试备考题库及详细答案解析
- 初中九年级科学浙教版下册新教材解读与演化观念统领教学设计
- 2026年福建建工集团有限责任公司人员招聘笔试备考题库及详细答案解析
- 2025中国纪检监察试题及答案
- 2025注安法律法规真题及答案
- 小学三年级科学“风的观测”教学设计
- 2025国家药品监督管理局医疗器械技术审评中心合同制人员招聘2人笔试备考试题附答案解析
- 会计防范税务风险
- 智能装备课件
- 虚劳的中医护理课件
- 2022浙DT9 民用建筑常用水泵和风机控制电路图
- T/CECS 10035-2019绿色建材评价金属复合装饰材料
- 粉末涂料销售人员培训内容
- 连续油管侧钻工艺技术
- 外挂悬挑式花篮盘扣脚手架安全专项施工方案7.17
- 天津中考高频词汇英语300个
- 可溃式制动踏板
评论
0/150
提交评论