第四章分支结构实验
实验项目:第四章实验设计
实验项目:4.3.1 if语句的应用 ,4.3.2 switch case的应用 ,4.3.3 switch case嵌套if语句的应用 ,4.3.4 switch case结构嵌套的运用 ,4.3.5 分析程序, 计算器。
姓名:蔡鹏 实验地点:家中 实验时间:2020.03.25
实验目的与要求:
1、掌握各种形式的if语句语法和使用方法
2、掌握使用算术运算符和运算规则,switch case语句的使用方法
3、掌握switch case结构的嵌套使用,break语句的用法
4、熟练掌握C语言的运算符,即运算符的优先级和结合性、运算规则、运算对象类型等。
实验内容:
1 ·实验练习:4.3.1 if语句的应用
(1)问题的简单描述:读入3个表示箱子长、宽、高的整数值,判断并输出是正方体还是长方体。
(2)实验代码:
#include<stdio.h> int main() { int l,w,h; printf("请输入箱子的长、宽、高:\n"); scanf("%d,%d,%d",&l,&w,&h); if(l==w&&w==h&&l==h) printf("该箱子是正方体。\n"); else printf("该箱子是长方体。\n"); return 0; }
(3)问题分析:比较长,宽,高用 l==w&&w==h&&l==h
2.实验练习:4.3.2 switch case的应用
(1)问题的简单描述:编写程序实现如下功能:商店有打印纸(18元/本)、墨盒(132元/个)、光盘(4.5元/片)出售,商店进行优惠酬宾活动。具体规则如下:顾客购买商品的总额超过100元,优惠5%;超过200元,优惠6%;超过300元,优惠7%;超过400元,优惠8%;超过500元,优惠10%。根据不同的购买量,计算应付货款
(2)实验代码:
#include<stdio.h> main() { float x,y,z,a; int sum; printf("请输入打印纸、墨盒、光盘的数量:\n"); scanf("%f,%f,%f",&x,&y,&z); sum=((x*18+y*132+z*4.5)/100); switch(sum) { case 0:a=(x*18+y*132+z*4.5);break; case 1:a=0.95*(x*18+y*132+z*4.5);break; case 2:a=0.94*(x*18+y*132+z*4.5);break; case 3:a=0.93*(x*18+y*132+z*4.5);break; case 4:a=0.92*(x*18+y*132+z*4.5);break; case 5:a=0.90*(x*18+y*132+z*4.5);break; default:a=0.90*(x*18+y*132+z*4.5);break; } printf("计算结果为:%.2f",a); }
(3) 问题分析:购买商品的总额=打印纸数x18(元) +墨盒數x 132 (元)+光盘数x4.5(元),当sum≥100.元时,给予相应的优惠,将sum/100,使用switch语句判定优惠率。
3.实验练习:4.3.3 switch case嵌套if语句的应用
(1)问题的简单描述:输入某一年、月的数值,输出该月的天数。
(2)实验代码:
#include<stdio.h> int main() { int year,month,days; printf("please enter year and month:\n"); scanf("%d%d",&year,&month); switch(month) { case 2:if((year%400==0)||((year%4==0)&&(year%100!=0))) days=29; else days=28; break; case 1:days=31;break; case 3:days=31;break; case 4:days=30;break; case 5:days=31;break; case 6:days=30;break; case 7:days=31;break; case 8:days=31;break; case 9:days=30;break; case 10:days=31;break; case 11:days=30;break; case 12:days=31;break; } printf("%d年%d月有%d天",year,month,days); return 0; }
(3)问题分析:无
4.实验练习:4.3.4 switch case结构嵌套的运用
(1)问题的简单描述:编写一个自动售货机的程序。该程序具有如下功能:有两级菜单,一级菜单是商品类型的选择;二级菜单是具体的商品的选择(商品价格和品种可以自拟)。顾客先选择商品的类型,然后选择具体商品,输入购买数量。自动售货机根据选择的商品和输入的数量,计算并显示所选商品的总金额。
(2) 实验代码:
#include<stdio.h> int main() { 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("数量?\n"); scanf("%d",&n); switch(y) { case 1:sum=3.5*n;break; case 2:sum=6.2*n;break; case 3:sum=2*n;break; case 4:sum=8.6*n;break; } break; case 2:printf("请选择: 1.笔( 3元/支) 2.笔记本(1.2元/个)\n"); printf(" 3.文件夹(12元/个) 4.文具盒(8.6元/个)\n"); scanf ("d",&y); printf ("数量?\n"); 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("&d",&y); printf("数量?\n"); scanf ("&d",&n); switch(y) { case 1:sum=3.6*n;break; case 2:sum=n;break; case 3:sum=2*n;break; case 4:sum=3.6;break; } break; } printf("总计:%.2f元",sum); }
(3) 问题分析:代码编写过程中中英文输入法切换容易出错
5.实验练习:4.3.5
问题的简单描述:找出代码错误的地方,并更改。
实验代码(1) :
#include <stdio.h>
int main()
{
int num=20;
if(5<num<10)
printf("%d in range (5,10)!\n",num);
else
printf("%d out of range (5,10)!\n",num);
}
实验代码(2):
#include <stdio.h> int main() { int num=20; if(5<num&&num<10) printf("%d in range (5,10)!\n",num); else printf("%d out of range (5,10)!\n",num); }
问题分析:确定值是否在区间的判断不能直接直接5<num<10,需要用到5<num&&num<10
6.实验练习:计算器
(1)问题描述:模拟一个简单计算器,进行两位数的加减乘除的计算
(2)具体分析:
( 1 )程序接收用户输人的算术表达式,表达式包含两个操作数、一个操作符,因此用float型声明两个变量,用于保存操作数的值,用char型声明- - 个变量,用于保存操作符( +.-.*./)。
(2)采用switch--case结构,根据操作符的种类不同,进行不同的运算。
(3)考虑除法的特殊情况,即当除数为零时,出现.异常。
(4)考虑用户输人非法操作符的情况。
流程图:
(3)实验代码:
#include<stdio.h> main() { float a,b; char c; printf("请输入两位数进行运算:"); scanf("%f%c%f",&a,&c,&b); switch(c) { case'+':printf("%.2f+%.2f=%.2f\n",a,b,a+b); break; case'-':printf("%.2f-%.2f=%.2f\n",a,b,a-b); break; case'*':printf("%.2f*%.2f=%.2f\n",a,b,a*b); break; case'/':printf("%.2f/%.2f=%.2f\n",a,b,a/b); break; default:printf("输入有误"); } }
实验小结:
在本次的实验过程中用到了if语句以及switch语句,通过实验过程去使用和掌握各种形式的if语句语法和使用方法,if语句中if和else的匹配关系和if语句的嵌套,switch语句的使用。if语句已经很熟练了,switch语句还是不怎么会用,尤其是break语句的用法及switch语句的嵌套。计算器没有进一步的扩展功能,只能进行简单的计算没有将循环运用到里面去,也不能进行差错的控制,没有解决0不能做被除数的问题,在以后学习过程中,多向那些代码写的好的人学习,从中找到新知识,得到进步,提高自己。
来源:https://www.cnblogs.com/c-p-666/p/12586548.html