• C语言第三次实验报告


    C程序设计实验报告

    姓名:熊毅

    实验地点:家

    实验时间:2020.3.25

    实验项目:

    1、4.3.1if语句的应用
    2、4.3.2switch-case的应用
    3、4.3.3switch-case嵌套if语句的应用
    4、4.3.4switch-case结构嵌套的运用
    5、4.3.5分析程序
    6、项目课外练习:计算器的实现

    一、实验目的与要求

    1.掌握C语言逻辑值的表示方法(0代表“假”,1代表“真”)。
    2.学会正确使用关系表达式和逻辑表达式。
    3.掌握各种形式的if语句用法和使用方法。if语句中if和else的匹配关系,以及if语句的嵌套。
    4.熟练掌握switch语句的语法和使用方法,注意在switch语句中break语句的用法及switch语句的嵌套。

    二、实验内容

    1、实验练习:实验3.4.1if语句的应用
    1问题的简单描述:读入3个表示箱子的长、宽、高的整数值,判断并输出该箱子是正方体还是长方体。
    2实验代码:

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

    3问题分析:逻辑运算符&&的使用,之前直接用iwh,导致无法得出正确结果。

    2、实验练习:实验4.3.2 switch.....case语句的应用

    1问题的简单描述:编写程序实现以下功能:商店有打印纸(18元/本)、墨盒(132元/个)、光盘(4.5元/张)出售,商店进行优惠酬宾 活动。具体规则如下:顾客购买商品的总额超过100元,优惠5%;超过200元,优惠6%;超过300元,优惠7%;超过400元优惠8%;超过500元,优惠10%。根据不同的购买量,计算应付贷款。
    2实验代码:

    #include<stdio.h>
    main()
    {
        float x,y,z,w;
        int sum;
        printf("请输入打印机、墨盒、光盘的数量:
    ");
        scanf("%f %f %f",&x,&y,&z);
        sum=((x*18+y*132+z*4.5)/100);
        switch(sum)
        {
    	    case 0:w=(x*18+y*132+z*4.5);
    	    break;
    	    case 1:w=0.95*(x*18+y*132+z*4.5);
    	    break;
    	    case 2:w=0.94*(x*18+y*132+z*4.5);
    	    break;
    	    case 3:w=0.93*(x*18+y*132+z*4.5);
    	    break;
    	    case 4:w=0.92*(x*18+y*132+z*4.5);
    	    break;
    	    case 5:w=0.90*(x*18+y*132+z*4.5);
    	    break;
    	    default:w=0.90*(x*18+y*132+z*4.5);
    	    break;
        }
        printf("计算结果为: %.2f",w);
     } 
    

    3问题分析:对折扣的理解不够到位,导致计算折扣的公式错误。

    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)
    		           printf("day=29");
    		        else
    		           printf("day=28");
    		        break;
    	    case 1:
    	    case 3:
    	    case 5:
    	    case 7:
    	    case 8:
    	    case 10:
    	    case 12:printf("day=31");break;
    	    case 4:
    	    case 6:
    	    case 9:
    	    case 11:printf("day=30");
    	            break;
    	return 0;
    	}
    }
    

    3问题分析:无

    4、实验练习:实验4.3.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问题分析:英文半角和中文输入的转换,以及嵌套规则。

    5、实验练习: 实验4.3.5 分析程序

    实验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运行结果:

    实验4.3.5.2

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

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

    4问题分析:逻辑运算符&&的使用

    三、项目实训:计算器的实现

    1、设计思路:用代码进行简单的四则运算,同时具有循环使用功能,和对除数进行判断的情况。
    2、流程图:

    3、设计过程中遇到的问题及改进的方法:
    ①开始时代码:

    #include<stdio.h>
    void main()
    {
    	int x,y,z;char c;
    	scanf("%f%c%f",&x,&c,&y);
    	switch ( c )
     {
        case '+': z=x+y; break;
        case '-': z=x-y; break;
        case '*': z=x*y; break;
        case '/': z=( y==0 )?(0):(x/y); break;
        default: z=0; break;
      }
    	printf("%f%c%f=%f
    ",x,c,y,z);
    }
    

    ②问题分析:代码不为0的处理不对。
    ③解决问题:考虑代码不为零的情况,对被除数进行分类讨论是否为0.以及将int改为float,因为除法可能涉及到小数,因此定义为浮点型。
    4、代码:

    #include<stdio.h>
    void main()
    {
    	float x,y,z;char c;
    	printf("简单计算器");
    	printf("例如“1+2,2-1,2*3,3/4”"); 
    	scanf("%f%c%f",&x,&c,&y);
    	switch ( c )
     {
        case '+': z=x+y; break;  //加法运算// 
        case '-': z=x-y; break;  //减法运算// 
        case '*': z=x*y; break;  //乘法运算// 
        case '/': 
        	if(y==0) 
        		printf("输入错误!!!");
    		else
    			z=x/y;break;     //除法运算// 
        default: z=0; break;
      }
    	printf("%f%c%f=%f
    ",x,c,y,z);
    }
    

    四、实验小结(剖析个人得失)

    ①得:对于本次实验,巩固了对if分支语句的理解,以及学会了正确使用C语言的逻辑运算符、关系表达式和逻辑表达式,还学会了if...else语句的使用。
    ②失:就拿制作计算器而言,在现实做计算题时,尤其是在做除法运算时,我们首先会考虑被除数不为0的情况,而在用C语言制作程序时而忘了这一点,这是不应该的。其次对与循环功能使用的不够流畅,所以在制作计算器时想用循环功能也无能为力,所以希望今后能对该部分进行加强训练。

  • 相关阅读:
    在ChemDraw中输入千分号的方法
    将几何画板x轴坐标值换成弧度制的方法
    几何画板怎么会出现符号乱码
    几何画板绘制正方形网格的技巧
    怎么用ChemDraw 15.1 Pro绘制彩色结构
    深入理解:单一入口、MVC、ORM、CURD、ActiveRecord概念
    IIS下PHP的ISAPI和FastCGI比较
    非常好用的两个PHP函数 serialize()和unserialize()
    为什么要让我们的“领域模型”裸奔?
    依赖注入
  • 原文地址:https://www.cnblogs.com/Xiongyi1218/p/12589189.html
Copyright © 2020-2023  润新知