实验内容4.doc_第1页
实验内容4.doc_第2页
实验内容4.doc_第3页
实验内容4.doc_第4页
实验内容4.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

第4章C语言的分支语句4.1 目的和要求1、掌握C语言逻辑量的表示方法(以0代表“假”,1代表“真”)。2、学会正确地使用关系表达式和逻辑表达式。3、掌握各种形式的条件语句语法和使用方法。注意if语句中if 和else的匹配关系,及各种条件语句的嵌套。4、掌握switch语句语法和使用方法。注意switch语句的控制流程,在switch语句中break语句的用法及switch语句的嵌套。4.2 相关知识1、if 语句if语句根据给定的条件表达式值(为非0或为0)进行判断来决定执行两条分支中的哪一条。if语句的一般形式: if ( 表达式 ) 语句1 else 语句22、switch语句switch语句的一般形式为: switch(表达式) case常量表达式1: 语句序列1 case常量表达式2: 语句序列2 . case常量表达式n: 语句序列n default : 语句序列n+1 3、编程中应注意if else语句中,if后面的单个语句有分号,但复合语句(花括号)后没分号,当if else语句有嵌套时,注意其搭配关系,else总是与它前面最接近的if对应。switch语句后的表达式应是整数或字符型表达式,case语句后的表达式应是整型或字符型常量;和if 语句中的条件判断不同,switch语句只测试相等条件;一般在使用switch语句实现“多选一”功能时,每个case子句后都使用break语句。由于switch语句的表达式不允许是实型的,当应用于实型值选择情况时,通常将实数表达式乘上一个适当的比例因子,将实数表达式的值映射到一个较小的范围上,然后再将它转换到整型。 4.3 实验练习:实验练习1:判断整数是否出界。本练习要求在封闭式实验课中在助教或者讲师的指导下完成。本练习分成6个部分:1 实验目的2 问题描述3 示例输出4 程序模板5 问题解答提示6 后续问题和任务程序模板是完整的、可实际运行的C程序,其中关键的一行或者多行代码已经替换为注释。请先阅读问题描述,分析示例输出;然后研究模板的代码。参考问题解答提示,用C代码替换/*/注释。编译并执行程序,并将输出结果与提供的示例输出进行比较。然后回答强化练习。实验目的: 本实验旨在巩固学生对于编程概念的理解。在这个实验中,学生将练习: 掌握C语言逻辑量的表示方法(以0代表“假”,1代表“真”) 学会正确的使用关系表达式和逻辑表达式 掌握if/else语句的使用方法在强化练习中,学生将练习: if/else结构与do/while结构之间的变换 问题描述:从键盘输入一个整数(1整数100),如果输入整数出界,输出“outside!”,如果输入正确,输出“right!” 示例输出:Please enter x:58(回车)Right!Please enter x:130(回车)Outside!Please enter x:-55(回车)Outside! 程序模板:#includemain() int x; printf(Please enter x:n); scanf(%d,&x); /*判断输入的整数范围*/ printf(outside!n); else printf(right!n);问题解答提示:1 程序接收从键盘输入的一个整数,因此用int型定义该变量;2 判断变量x的范围是否在1至100之间;3 如果是,则输出“right!”;否则,输出“outside!”强化练习:1 将上述程序修改为do/while结构实验练习2:判定三角形。本练习要求在封闭式实验课中在助教或者讲师的指导下完成。本练习分成6个部分:1实验目的2问题描述3示例输出4程序模板5问题解答提示6后续问题和任务程序模板是完整的、可实际运行的C程序,其中关键的一行或者多行代码已经替换为注释。请先阅读问题描述,分析示例输出;然后研究模板的代码。参考问题解答提示,用C代码替换/*/注释。编译并执行程序,并将输出结果与提供的示例输出进行比较。然后回答强化练习。实验目的: 本实验旨在巩固学生对于编程概念的理解。在这个实验中,学生将练习: 学会正确的使用关系表达式和逻辑表达式 掌握if/else的嵌套结构的使用在强化练习中,学生将练习: if/else嵌套结构与switch/case结构之间的转换问题描述: 编写程序。实现根据用户输入的三角形的三条边长判定是何种三角形示例输出:输入三角形的三条边a,b,c:3,4,5直角三角形程序模板:#include #includemain() float a,b,c; printf(输入三角形的三条边a,b,c:); scanf(%f,%f,%f,&a,&b,&c); /*判断三边是否构成三角形*/ /*如果三条边均相等,则为等边三角形*/printf(等边三角形n);else /*如果只有两条边相等,则只为等腰三角形*/printf(等腰三角形n); else /*如果两边的平方和等于第三边平方,则为直角三角形*/ printf(直角三角形n); else printf(一般三角形n); else printf(不能组成三角形n);问题解答提示:1 程序接收三角形的三条边长,故用float进行声明;2 考虑三角形的类型:一般三角形、正三角形、等腰三角形、直角三角形;3 考虑输入数据的有效性:构成三角形的条件为任意两边之和要大于第三边,否则无法构成三角形;4 在满足3的前提下,考虑各种三角形的检测方式:正三角形,要求三边相等;等腰三角形,要求三边中有两边相等;直角三角形:要求两边的平方和等于第三边平方和;强化练习:1 上述程序是否能改为switch/case结构?实验练习3:显示当前月份的最后一天本练习要求在封闭式实验课中在助教或者讲师的指导下完成。本练习分成6个部分:1 实验目的2问题描述3示例输出4程序模板5问题解答提示6后续问题和任务程序模板是完整的、可实际运行的C程序,其中关键的一行或者多行代码已经替换为注释。请先阅读问题描述,分析示例输出;然后研究模板的代码。参考问题解答提示,用C代码替换/*/注释。编译并执行程序,并将输出结果与提供的示例输出进行比较。然后回答强化练习。实验目的: 本实验旨在巩固学生对于编程概念的理解。在这个实验中,学生将练习: 学会正确的使用关系表达式和逻辑表达式 掌握switch/case语句语法和使用方法。注意switch语句的控制流程,在switch语句中break语句的用法在强化练习中,学生将练习: switch/case结构与if/else嵌套结构之间的转换问题描述:编写一个程序输入年月,输出该月的最后一天。示例输出:Please enter year and month:2002 2(回车)2002 2 28程序模板:#include main ( )int year,month,lastday;printf(Please enter year and month:);scanf(%d%d, &year, &month);switch (month)case 2 :/*判断是否是闰年*/lastday=29;else lastday=28;break;case 1:case 3:case 5:case 7:case 8:case 10:case 12: lastday=31; break;case 4:case 6:case 9:case 11: lastday=30; break;printf(%dt%dt%d, year, month, lastday); 问题解答提示:1 程序接收年月,因此用int型定义两个变量;2 一年中各月份的天数为:1,3,5,7,8,10,12月均为31天;4,6,9,11月均为30天;2月份的天数根据年份是否为闰年判断,是则为29天,不是则为28天;3 程序采用switch/case结构;4 闰年的条件是:能被4整除但不能被100整除;或能被100整除且能被400整除。强化练习:试将上述switch/case结构转化为if/else嵌套结构实验练习4:模拟简单计算器本练习要求在封闭式实验课中在助教或者讲师的指导下完成。本练习分成6个部分:1实验目的2问题描述3示例输出4程序模板5问题解答提示6后续问题和任务程序模板是完整的、可实际运行的C程序,其中关键的一行或者多行代码已经替换为注释。请先阅读问题描述,分析示例输出;然后研究模板的代码。参考问题解答提示,用C代码替换/*/注释。编译并执行程序,并将输出结果与提供的示例输出进行比较。然后回答强化练习。实验目的:本实验旨在巩固学生对于编程概念的理解。在这个实验中,学生将练习: switch/case结构的使用在强化练习中,学生将练习: switch/case结构转换为if/else结构 问题描述:编写一个程序模拟简单计算器,进行两个数的加、减、乘、除四则运算功能。 示例输出:输入表达式:2+32+3=5输入表达式:2*32*3=6输入表达式:2-32-3=-1输入表达式:6/36/3=2输入表达式:6/0除数为零!输入表达式:6#8输入表达式有错! 程序模板:#includemain() float x,y; char op; printf(输入表达式:); scanf(%f%c%f,&x,&op,&y); switch(op) case : /*匹配加法*/printf(%.2f%c%.2f=%.2fn,x,op,y,x+y);break; case : /匹配减法*/printf(%.2f%c%.2f=%.2fn,x,op,y,x-y);break; case : /*匹配乘法*/printf(%.2f%c%.2f=%.2fn,x,op,y,x*y);break; case :/*匹配除法*/ if (y!=0) printf(%.2f%c%.2f=%.2fn,x,op,y,x/y);break; else printf(除数为零!n);break; default : printf(输入表达式有错!n); 问题解答提示:1程序接收用户输入的算术表达式,表达式构成为两个操作数,一个操作符,因此用float型声明两个变量,用于保存操作数的值,用char型声明一个变量,用于保存操作符(+、-、*、/)2 采用switch/case结构,根据操作符的种类不同,进行不同的运算;3 考虑除法的特殊情况,即当除数为零时,出现异常;4 考虑用户输入非法操作符的情况;强化练习:1 将上述程序用if/else嵌套结构实现实验练习5:自动售货机本练习要求在封闭式实验课中在助教或者讲师的指导下完成。本练习分成6个部分:1实验目的2问题描述3示例输出4程序模板5问题解答提示6后续问题和任务程序模板是完整的、可实际运行的C程序,其中关键的一行或者多行代码已经替换为注释。请先阅读问题描述,分析示例输出;然后研究模板的代码。参考问题解答提示,用C代码替换/*/注释。编译并执行程序,并将输出结果与提供的示例输出进行比较。然后回答强化练习。实验目的:本实验旨在巩固学生对于编程概念的理解。在这个实验中,学生将练习: switch/case结构的嵌套使用在强化练习中,学生将练习: break语句与continue语句的用法 问题描述:编写一个自动售货机的程序。该程序应具如下功能:有二级菜单,一级菜单商品类的选择,二级是具体商品的选择,顾客先选择商品类,然后选择具体商品,输入购买数量,自动售货机根据选择的商品和输入的数量,计算并显示所选商品总金额。示例输出:请选择:1.日用品 2.文具.食品1(回车)请选择:1.牙刷(3.5元/支)2.牙膏(6.2元/支) 3.肥皂(2元/块) 4.毛巾(8.6元/条)3(回车)数量?5(回车)总计:10.00元 程序模板:#includemain() int x,n,y;float sum=0.0; printf(请选择: 1.日用品2.文具 3. 食品n); scanf(%d,&x); switch(x) case 1: printf(请选择:1.牙刷(3.5元/支)2.牙膏(6.2元支)n); printf( 3.肥皂(2元/块) 4.毛巾(8.6元/条)n); scanf(%d,&y); printf(数量?); scanf(%d,&n); switch( )/*匹配顾客选择的具体商品*/ case 1: sum=3.5* ; break; case 2: sum=6.2* ; break; case 3: sum=2* ; break; case 4: sum=8.6* ; break; break; case 2: printf(请选择:1.笔( 3元/支)2.笔记本(1.2元/个)n); printf( 3.文件夹(12元/个) 4.文具盒(8.6元/个)n); scanf(%c,&y); printf(数量?); scanf(%d,&n); switch(y) case 1: sum=3*n; break; case 2: sum=1.2*n; break; case 3: sum=12*n; break; case 4: sum=8.6*n; break; break; case 3: printf(请选择:1.白糖(3.6元/包)2.盐(1元/包)n); printf( 3.饼(2元/个) 4.方便面(3.6元/条)n); scanf(%c,&y); printf(数量?); scanf(%d,&n); switch(y) case 1: sum=3.6*n; break; case 2: sum=1*n; break; case 3: sum=2*n; break; case 4: sum=3.6*n; break; break; printf(总计:%.2f 元n,sum);问题解答提示:1、 程序功能具有二级菜单,因此需要使用swith/case的嵌套结构实现;2、 第一层嵌套实现对商品类型的选择,根据用户选择的序号进行匹配;3、 在进入所属商品类型后,顾客选择该类型下的具体商品,并提示输入购买数量;4、 第二层嵌套实现对具体商品的选择,根据用户选择的序号进行匹配,同时根据购买数量计算总额;5、 最后输出顾客本次购买的总金额;强化练习:1考虑上述程序中的break语句是否能够改为continue语句?分析原因?4.4 综合练习1编一程序实现如下功能:商店有打印纸(18元/本)、墨盒(132元/个)、软盘(4.5元/片)出售,商店进行优惠酬宾活动。具体做法如下:顾客购买商品的总额达到了100元,优惠5%,达到了200元以上,优惠6%;达到了300元以上,优惠7%;达到了400元以上,优惠8%;达到了500元以上,优惠10%。根据不同的购买量,打印应付货款。分析:sum=打印纸数18(元)墨盒数132(元)软盘数4.5(元)当sum100元,给予相应的优惠,将sum/100,使用switch语句进行判定优惠率。依题意,编写程序如下:#includemain() int n,dyz,fh,rb; float: sum,yf; printf(请输入打印纸、墨盒、软盘的数量:); scanf(%d,%d,%d ,&dyz,&fh,&rb); sum=dyz*18+fh*132+rb*4.5; n=sum/100; switch (n) case 0: p=0; break;case 1: p=0.05; break; case 2: p=0.06; break; case 3: p=0.07 break; case 4: p=0.08; break; default: p=0.10; yf=sum-sum*p; printf(应付款数=%8.2fn,yf);2.编写程序。给出一个不多于4位的正整数,要求:(1) 求出它是几位数;(2) 分别打印出每下位数字;(3) 按逆序打印出各位数字。分析:(1)因为不多4位的数,如果大于999,就可判断输入的数为4位,以此类推,可判断3、2和1位数;(2)确定输入数的位数后,用switch语句分别打印每一位数字;(3)完成每一位数字打印后接着逆序输出。依题意编写程序如下:#includemain() int num,indiv,ten,hundred,thousand,digit; printf(Input a integer number(0-9999):); scanf(%d,&num); if (num999) digit=4; else if (num99) digit=3; else if (num

温馨提示

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

评论

0/150

提交评论