c语言实验一的错误,C语言实验(三)

第四章分支结构实验

实验项目:第四章实验设计

实验项目: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

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

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

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

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

int main()

{

int num=20;

if(5

printf("%d in range (5,10)!\n",num);

else

printf("%d out of range (5,10)!\n",num);

}

实验代码(2):

#include

int main()

{

int num=20;

if(5

printf("%d in range (5,10)!\n",num);

else

printf("%d out of range (5,10)!\n",num);

}

问题分析:确定值是否在区间的判断不能直接直接5

6.实验练习:计算器

(1)问题描述:模拟一个简单计算器,进行两位数的加减乘除的计算

(2)具体分析:

( 1 )程序接收用户输人的算术表达式,表达式包含两个操作数、一个操作符,因此用float型声明两个变量,用于保存操作数的值,用char型声明- - 个变量,用于保存操作符( +.-.*./)。

(2)采用switch--case结构,根据操作符的种类不同,进行不同的运算。

(3)考虑除法的特殊情况,即当除数为零时,出现.异常。

(4)考虑用户输人非法操作符的情况。

流程图:

10a07d8510fe583010d19c8aa36ace7a.png

(3)实验代码:

#include

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

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值