• 第二次实验报告


    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、实验练习:if语句的应用(4.3.1)

    1问题的简单描述:读入三个数分别表示箱子的长、宽、高的整数值,判断并输出该箱子是正方体还是长方体。
    2实验代码:(需要使用MARKDOWN插入代码。)

    #include <stdio.h>
    main()
    {
    	int l,w,h;
    	printf("请输入箱子的长、宽、高:
    ");
    	scanf("%d%d%d",&l,&w,&h);
    	if(l==w&&w==h)
    	   printf("该箱子是正方形。
    ");
        else
           printf("该箱子是长方形。
    ");
        return 0;
    }
    

    3问题分析:
    C语言跟数学表达式有差别的,我们都习惯了数学的表达式,而在C语言编程环境中要用到C语言的逻辑关系&& 在这个编程题中lwh,这是我们数学中的表达,而在C语言环境中,我们要用到逻辑与。

    2、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>
    main()
    {
    	int a,b,c,x;
    	float sum,money;
    	printf("请输入打印纸、墨盒、光盘的数量: 
    ");
    	scanf("%d,%d,%d",&a,&b,&c);
    	sum=a*18+b*132+c*4.5;
    	x=sum/100;
    	switch (x)
    	{
    		case 1:money=sum*0.95;break;
    		case 2:money=sum*0.94;break;
    		case 3:money=sum*0.93;break;
    		case 4:money=sum*0.92;break;
    	    default:money=sum*0.90;break;
    	}
    	printf("应付款数= %.2f",money);
    	return 0;
    }
    

    3问题分析:
    这个编程题我用到的是switch结构,刚开始我在case后面的常量表达式那卡住了,因为后面的那个范围,我不知道该怎么表示,一开始我用的是最浅显的表示方法100<=sum<200,就这样以此类推,可是程序一直报错,我想了很久没想出来其他表达方式,然后先写完的同学上去讲,我发现他们的解决办法很棒,可是我想了很久没想出别的有效的方式,最后还是用了那个x=sum/100.

    3、实验练习:switch/case语句嵌套if语句的应用(4.3.3)

    1问题的简单描述:输入某一年月,输出该月的天数。2实验代码:

    #include <stdio.h>
    main()
    {
    	int year,month,days;
    	printf("Pleas enter yaer 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年%d月有%d天",year,month,days);
    	return 0;
    }
    

    3问题分析:
    首先要知道怎么算润年(能被4整除但不能被100整除,或者能被400整除。)在C语言编程中表达出来的话我用了逻辑关系(year%40&&year%100!=0||year%4000) ,然后就是用到了switch结构因为答曰都是31天,小月都是30天,所以可以用到break来简洁代码。

    4、实验练习:switch/case结构的嵌套应用(4.3.4)

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

    #include <stdio.h>
    int main()
    {
    	int x,n,y;
    	float sum;
    	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问题分析:
    用switch结构更简单明了。

    5、实验练习:判断最后z等不等于0(4.3.5.1)

    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问题分析:
    这个编程题输出的z=0.000000,但是z并不是为0,这里是因为用了float z,所以z输出的是0.000000,但是实际上z并不是0,所以输出的是z不等于0.

    6、实验练习:原先的程序运行有误,请修改程序,使其输出正确地结果。(4.3.5.2)

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

    #include <stdio.h>
    main()
    {
    	int num=20;
    	if(5<num<10)
    	    printf("%d in range (5,10)!
    ",num);
    	else
    	    printf("%d out of range (5,10)!
    ",num);
    }
    

    改了的代码:

    #include <stdio.h>
    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问题分析:
    这个题就是说C语言环境中跟数学表达方式不一样,加上逻辑与就能对了。

    改了以后:

    三、实验小结

        第二次写实验报告,这回做实验的我明显比以前的我会更好一点,这是肯定的嘛,人都是在不足中慢慢变强的,我还是很垃圾,很多时候不能想到那些不好表达的语言(用C语言语言来表达),第四章分支结构更多的是逻辑关系,还有一个字重点就是数学的表达跟C语言的表达有差别,不能直接的等同,所以我们编程的时候可能程序并没有报错,可是结果就是不太对,这个时候就要想想是不是表达上出错了。还有就是switch结构,好用又不太好用,它比较细,我们用的时候也要细心的看着点。
  • 相关阅读:
    数据库01
    并发编程6
    并发编程5
    并发编程4
    并发编程3
    并发编程2
    并发编程1
    kali 下文件操作
    kali driftnet
    2017.1.1
  • 原文地址:https://www.cnblogs.com/wangyuqing1126/p/10667723.html
Copyright © 2020-2023  润新知