zoukankan      html  css  js  c++  java
  • 第二次实验报告

    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 ("请输入箱子的长、宽、高:
    ");/
    	scanf ("%d%d%d",&l,&w,&h);
    	if ((l==w)&&(w==h)&&(h==l))
    	     printf("该箱子是正方体。
    ");
        else
             printf("该箱子是长方体。
    ");
    	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("输入购买打印纸的数量,购买墨盘的数量,购买光盘的数量:
    ");
    	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 元
    ",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:
    ");
    	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
    ",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.食品
    ") ;
    	scanf("%d",&x);
    	switch(x)
    	      {
    	      case 1:printf ("请选择: 1.牙刷(3.5元/支)  2.牙膏(6.2元/支)
    ") ;
    	             printf ("         3.肥皂(2元/块)  4.毛巾(8.6元/条) 
    ") ;
                     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元/个)
    ") ;
    	             printf ("         3.文件夹(12元/个)  4.文具盒(8.6元/个) 
    ") ;
                     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元/包)
    ") ;
    	             printf ("         3.饼(2元/个)  4.方便面(3.6元/条) 
    ") ;
                     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元
    ",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
    ",x);
    	printf ("y=%lf
    ",y);
    	printf ("z=%lf
    ",z);
    	if(z==0) printf("z==0.
    ");
    	      else printf("z不等于0.
    ");
    	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) !
    ",num);
    	else
    	      printf("%d out of range (5,10) !
    ",num);
    }
    

    修改之后的代码

    int main()
    {
    	int num=20;
    	if(5<num&&num<10)
    	      printf("%d in range (5,10) !
    ",num);
    	else
    	      printf("%d out of range (5,10) !
    ",num);
    }
    
    

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

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

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

  • 相关阅读:
    js-AOP
    jQueryUI之autocomplete
    nginx安装配置
    oracle结构语法
    ajax/表单提交 多个相同name的处理方法
    ES6模块化
    docker运维
    帆软报表
    oracle锁表
    香港到大陆IPLC节点故障
  • 原文地址:https://www.cnblogs.com/youthyee/p/10657024.html
Copyright © 2011-2022 走看看