C程序设计实验报告
实验项目:___分支结构实验__
姓名:___ 杨珺茹____实验地点:___514______实验时间____2019·4·3_______
一、实验目的与要求
1.掌握c语言逻辑运算和关系运算的规则;
2、学会正确的使用关系表达式和逻辑表达式;
3、掌握if else语句的使用方法;
4、掌握算术运算符和运算规则。
5、掌握switch/case语句的使用方法。
6、掌握switch/case语句语法和使用方法。注意switch语句的控制流程,在switch语句中break语句的用法。
7.、break语句与continue语句的用法
8、switch/case结构的嵌套使用
二、实验内容
1、实验练习:
if语句的应用(4.3.1)
1、问题的简单描述:
读入3个分别表示箱子长、宽、高的整数值,判断并输出该箱子是正方体还是长方体。
2,实验代码:
#include<stdio.h>
int main()
{
int l,w,h;
printf("请输入箱子的长、宽、高:\n");
scanf("%d%d%d,&l,&w,&h");
if( l==w&&l==h&&l==w)
printf("该箱子是正方形。\n");
else
printf("该箱子是长方形。\n");
return 0;
}
3,问题分析:
我在该实验的遇到的主要问题是if中的条件语句不能直接写(a==b==c),而应该是(a==b)&&(b==c)
2、实验练习:switch/case语句的应用(4.3.2)
1问题的简单描述:
编一程序实现如下功能:商店有打印纸(18元/本),墨盒(132元/个),光盘(4.5元/片)出售,商店进行优惠酬宾活动。具体做法如下:顾客购买商品的总额达到了100元,优惠5%;达到了200元以上,优惠6%;达到了300元以上,优惠7%;达到了400元以上,优惠8%;达到了500元以上,优惠10%。根据不同的购买量,打印应付货款。
2实验代码:
#include<stdio.h>
int main()
{
int x,y,z;
float a,b;
printf("请输入打印纸、墨盒、关盘数量:\n");
scanf("%d%d%d",&x,&y,&z);
a=x*18+y*132+z*4.5;
if(a<100)
b=a;
else if(a>=100&&a<200)
b=a*0.95;
else if(a>=200&&a<300)
b=a*0.94;
else if(a>=300&&a<400)
b=a*0.93;
else if(a>=400&&a<500)
b=a*0.92;
else if(a>=500)
b=a*0.9;
printf("应付款数=%.2f\n",b);
}
3问题分析:一开始我完全忘记怎么去计算这个if else怎么用,于是就去请教同学,就弄明白了,果然还是要数学好一点才能学好C语言啊~嘿嘿,然后我就也能教同学这个结构了,真好。
3、实验练习:switch/case语句嵌套if语句的应用(4.3.3)
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:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:days=31;break;
case 4:
case 6:
case 9:
case 11:days=30;break;
}
printf("%d年%d月有%d天",year,month,days);
return 0;
}
3,问题分析:一开始写的时候并没有什么问题,后来遇到如何判断闰年就懵了,然后上网查找发现闰年的判断语句是这样的:year%400==0||(year%4==0&&year%100!=0)
4、实验练习:switch/case结构的嵌套应用(4.3.4)
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("数量?");
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("数量?");
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("数量?");
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);
return 0;
}
3,问题分析:因为书上有流程图也有提示,所以编写也就比较顺利,然后发现运行不出来,经过和同学的对比,发现程序模板是switch中应该是用(y),而我之前是用的(x)
5、实验练习:分析程序(4.3.5)
1,问题的简单描述:运行下列程序,分析输出的结果,并写入实验报告
2,实验代码:
#include<stdio.h>
int main()
{
double x=1000/3.0;
double y=x-333.0;
double z=3*y-1.0;
printf("x=%lf\n",x);
printf("y=%lf\n",y);
printf("z=%lf\n",z);
if(z==0) printf("z==0.\n");
else printf("z不等于0.\n");
return 0;
}
1,问题的简单描述:
运行下列程序,分析错误原因,请修改程序,使其输出正确的结果,并写入实验报告,掌握c语言表达式与数学表达式的区别。
2,实验代码:
#include<stdio.h>
int main()
{
int num=20;
if(num>5&&num<10)
printf("%d in range(5,10)!\n",num);
else
printf("%d out of range (5,10)!\n",num);
}
3,问题分析:还是if条件语句的问题,c语言不能识别出5<a<10这样的语句,而应该是5<a&&a<10
三、实验小结(在本次实验中收获与不足)
这节实验课总共有5个实验,其中我认为最难的就是第二个实验,关于switch/case来编写这个程序,在实验课上我是用的if else的语句进行,因为当时并不是很熟悉switch/case,所以下课后看书本,对照书将switch/case又重新做了一遍,现在大概了解了这个结构。这也算是我在这次实验课上的一个收获吧。
其此就是我对键盘的熟练程度还不够,这次实验课完成的比较慢,所以我会重视这个不足,之后加以改正。