第二次实验报告

C程序设计实验报告

实验项目:分支结构实验

姓名:罗子健  实验地点:教学楼514  实验时间:2019年4月3日

一、实验目的与要求

(1)掌握C语言逻辑量的表示方法(0代表“假”,1代表“真”)。

(2)学会正确的使用关系表达式和逻辑表达式。

(3)掌握各种形式的if语句语法和使用方法。注意if语句和else的匹配关系,及if语句的嵌套。

(4)掌握switch语句语法和使用方法。注意switch语句的控制流程,在switch语句中break语句的用法及switch语句的嵌套。

(5)能独立编写分支结构程序并调试通过。

(6)用if语句、switch语句解决简单的应用问题并上机实现。

二、实验内容

4.3.1实验练习:

1、问题的简单描述:读入三个数分别表示箱子的长、宽、高的整数值,判断并输出该箱子是正方体还是长方体。

2、实验代码:

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int l,w,h;
 5     printf("请输入箱子的长、宽、高:\n");
 6     scanf("%d%d%d",&l,&w,&h);
 7     if(l==w&&w==h&&l==h)
 8         printf("该箱子是正方体。\n");
 9     else
10         printf("该箱子是长方体。\n");
11     return 0;
12 }

 

3、问题分析:这个题目要注意条件的优先级和结果成立的条件,“等于”的优先级高于“与”的优先级,所以不需要加括号,正方体的判定条件是长宽高3边相等。

4.3.2、实验练习:

1、问题的简单描述:编一程序实现如下功能:商店有打印纸(18元/本)、墨盒(132元/个)、光盘(4.5元/片)出售,商店进行优惠活动。具体做法如下:顾客购买商品的总额达到了100元,优惠5%;达到了200元以上,优惠6%;达到了300元以上,优惠7%;达到了400元以上,优惠8%;达到了500元以上,优惠10%。根据不同的购买量,打印应付贷款。

2、实验代码:

 1 #include<stdio.h>
 2 main()
 3 {
 4     int dyz,mh,gp,Y;
 5     float yfk,sum,yhl;
 6     printf("请输入打印纸、墨盒、光盘的数量:\n");
 7     scanf("%d,%d,%d",&dyz,&mh,&gp);
 8     sum=(dyz*18+mh*132+gp*4.5);
 9     Y=(sum/100);            
10     switch(Y)
11     {
12         case 0:
13             yfk=sum;
14             printf("应付货款=%f",yfk);
15             break;
16         case 1:
17             yfk=sum*0.95;
18             printf("应付货款=%f",yfk);
19             break;
20         case 2:
21             yfk=sum*0.94;
22             printf("应付货款=%f",yfk);
23             break;
24         case 3:
25             yfk=sum*0.93;
26             printf("应付货款=%f",yfk);
27             break;
28         case 4:
29             yfk=sum*0.92;
30             printf("应付货款=%f",yfk);
31             break;
32         default:
33             yfk=sum*0.90;
34             printf("应付货款=%f",yfk);
35             break;
36     }
37 }

 

3、问题分析:这个题目在做的时候程序并没有报错,但是在按照书上的数据输入时,却发现没有显示输出,改了好久的程序代码,也没有发现问题,最后一个一个数据去试,发现是因为“default”打成了“dafault”所以导致金额大于500元就不显示输出。

4.3.3、实验练习:

1、问题的简单描述:输入某一年月,输出该月的天数。

2、实验代码:

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int year, month,days;
 5     printf("Please enter year and month:\n");
 6     scanf("%d%d",&year,&month);
 7     switch(month)
 8     {
 9         case 2 :if(year%4==0&&year%100!=0)
10                 days=29;
11             else
12                 days=28;
13             break;
14         case 1:days=31;
15         case 3:days=31;
16         case 5:days=31;
17         case 7:days=31;
18         case 8:days=31;
19         case 10:days=31;
20         case 12:days=31;
21         case 4:days=30;
22         case 6:days=30;
23         case 9:days=30;
24         case 11:days=30;break;                        
25     }
26     printf("%d年%d月有%d天",year,month,days);
27 }

 

3、问题分析:这个题目就是要注意闰年的判定条件,闰年是能被4整除且不被100整除,所以在用年份除以4的时候余数为0,除以100的时候余数不等于0,因为要同时满足,则用“&&(与)”语句来表示。

4.3.4、实验练习:

1、问题的简单描述:编写一个自动售货机的程序。该程序应具如下功能:有二级菜单,一级菜单是商品类型的选择,二级菜单是具体商品的选择(商品价格和品种可以自拟)。顾客先选择商品类型,然后选择具体商品,输入购买数量。自动售货机根据选择的商品和输入的数量,计算出所选商品总金额。

2、实验代码:

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int x,n,y;
 5     float sum=0.0;
 6     printf("请输入:1.日用品    2.文具        3.食品\n");
 7     scanf("%d",&x);
 8     switch(x)
 9         {
10         case 1:printf("请输入:1.牙刷(3.5元/支) 2.牙膏(6.2元/支)\n");
11                 printf("    3.牙刷(2元/块)     4.毛巾(8.6元/条)\n");
12                 scanf("%d",&y);
13                 printf("数量?");
14                 scanf("%d",&n);
15                 switch(y)
16                     {
17                     case 1:sum=3.5*n;break;
18                     case 2:sum=6.2*n;break;
19                     case 3:sum=2*n;break;
20                     case 4:sum=8.6*n;break;
21                     }
22                 break;
23         case 2:printf("请输入:1.笔(3元/支)     2.笔记本(1.2元/个)\n");
24                 printf("    3.文件夹(12元/个) 4.文具盒(8.6元/个)\n");
25                 scanf("%d",&y);
26                 printf("数量?");
27                 scanf("%d",&n);
28                 switch(y)
29                     {
30                     case 1:sum=3*n;break;
31                     case 2:sum=1.2*n;break;
32                     case 3:sum=12*n;break;
33                     case 4:sum=8.6*n;break;
34                     }
35                 break;
36         case 3:printf("请输入:1.白糖(3.6元/包) 2.盐(1元/包)\n");
37                 printf("        3.饼(2元/个)     4.方便面(3.6元/包)\n");
38                 scanf("%d",&y);
39                 printf("数量?");
40                 scanf("%d",&n);
41                 switch(y)
42                     {
43                     case 1:sum=3.6*n;break;
44                     case 2:sum=1*n;break;
45                     case 3:sum=2*n;break;
46                     case 4:sum=3.6*n;break;
47                     }
48                 break;
49         }
50     printf("总计:%.2f元\n",sum);
51     return 0;
52  } 

 

3、问题分析:注意多级菜单的选择和结果的运算。

4.3.5.1、实验练习:

1、问题的简单描述:运行下列程序,分析输出的结果

2、实验代码:

 1 #include<stdio.h>
 2 int main()
 3 {
 4     double x=1000/3.0;
 5     double y=x-333.0;
 6     double z=3*y-1.0;
 7     printf("x=%lf\n",x);
 8     printf("y=%lf\n",y);
 9     printf("z=%lf\n",z);
10     if(z==0) printf("z==0.\n");
11         else printf("z不等于0.\n");
12     return 0;
13 }

结果如下:

 

 

3、问题分析:因为结果是按双精度输出浮点数,所以显示小数点后6位,又因为z是小于0的且无限接近与0,所以用-0.000000表示,但并不与0相等。

6、实验练习:

1、问题的简单描述:运行下列程序,分析错误的原因,并修改程序,使其输出正确地结果。

2、实验代码:

1 #include<stdio.h>
2 int main()
3 {
4     int num=20;
5     if(5<num&&num<10) 
6         printf("%d in range (5,10)!\n",num);
7     else 
8         printf("%d out of range (5,10)!\n",num);
9 }

 

3、问题分析:不能像数学里表示一个数的范围在另外两个数之间那样表示,而要用到“&&(与)”的逻辑语句表达。

三、实验小结(在本次实验中收获与不足)

收获:掌握C语言逻辑量的表示方法,掌握各种形式的if语句语法和使用方法,掌握switch语句语法和使用方法。

不足:对于程序的字符还是不太熟悉。

 

posted @ 2019-04-07 23:20  微风未起  阅读(421)  评论(0编辑  收藏  举报