第二次实验报告

C实验语言程序设计报告

实验项目:分支结构实验

姓名:杨婷 实验地点:教学楼514教室 实验时间:2019年4月3日

一.实验目的与要求

1.掌握C语言逻辑表示方法(0代表“假”,1代表“真”)。
2.学会正确使用地使用关系表达式和逻辑表达式。
3.掌握各种形式的if语句语法和使用方法。注意if语句中if和else匹配关系,及if语句中的嵌套。
4.掌握switch语句语法和使用方法。注意switch语句的控制流程,在switch语句中break语句的用法及switch语句的嵌套。
5.能独立编写分支结构程序并调试通过。
6.用if语句、switch语句解决简单的应用问题并上机实现。

二.实验内容

1.实验练习:4.3.3 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)&&(h==l))
	     printf("该箱子是正方体。\n");
    else
         printf("该箱子是长方体。\n");
	return 0; 
}

3问题描述:
做这道题的时候,没有出现什么问题,要注意的就是逻辑关系要用"&&"(与)。
4运行结果:

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

int main()
{
	float sum,n;
	int a,b,c;
	/*其中,a代表购买打印纸的数量:b代表购买墨盘的数量;c代表购买光盘的数量;sum代表应付款数;*/ 
	printf("输入购买打印纸的数量,购买墨盘的数量,购买光盘的数量:\n");
	scanf("%d,%d,%d",&a,&b,&c);
	sum=(a*18+b*132+c*4.5);
	n=sum/100;
	 if (n>5)
	   sum=0.90*sum;
	   else if(4<n&&n<=5)
	        sum=0.92*sum;                                        
	       else if(3<n&&n<=4)
			    sum=0.93*sum;
	            else if(2<n&&n<=3)
	                sum=0.94*sum;
	                    else if(1<n&&n<=2)
		                    sum=0.95*sum;
    printf("应付款数= %.2f 元\n",sum);
    return 0;
}

3问题分析:
做这个实验的时候,我用的是if/else语句,在写条件的时候,写的是“4<n<=5”,结果就运行不出来,后面发现原来是要用到“&&”,而不能像我最开始那样去写。
4运行结果:

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%4==0&&year%100!=0)||(year%400==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\n",days);
	return 0;
}

3问题分析:这个实验里要注意的就是判断闰年的条件:能被4整除但不能被100整除,或能被400整除。条件都要满足时,要用到“&&”,条件并列时要用“||”,还有就是年份的整除可以用“year%a==0”表示。
4运行结果:

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("数量?");
	             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问题分析:
这道题比较简单,按照后面给出的内容就可以写出来,就是写代码的时候要小心,不要打错了。
4运行结果:

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;
}

3实验分析:
这个程序是根据代码进行计算与判断,输出符合条件的内容。
4运行结果:

第二题
1问题的简单描述:
运行下列程序,分析错误的原因,请修改程序,使其输出正确的结果,并写入实验报告,掌握C语言表达式与数学表达式的区别。
2实验代码:
原来的代码

#include<stdo.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);
}

修改之后的代码

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);
}

3问题分析:
这个程序的问题就在于“5<num<10”这个条件,条件都满足时要用“&&”(逻辑与)来连接,应该为“5<num&&num<10”。
4运行结果:

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

这次一共做了五个实验,有的实验比较简单,有的实验还是要去仔细地思考。在实验的过程中,我发现我对于if与else的嵌套还是不够明白,总是会分不清。还有,我这次做实验还是有点粗心。我有一道程序引号放错位置了,运行不出正确结果,还是旁边同学发现的。经过这次实验,我知道了满足多个条件时,不能直接去写那些条件,而要用“&&”去连接,这次实验出现了很多次这个问题。在之后的实验中,我要提升写代码的速度,不能
写得这么慢了。

posted @ 2019-04-07 23:02  欢夏  阅读(176)  评论(0编辑  收藏  举报