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

    C程序设计实验报告

    实验项目:___分支结构实验__

    姓名:___ 杨珺茹____实验地点:___514______实验时间____2019·4·3_______

    一、实验目的与要求

    1.掌握c语言逻辑运算和关系运算的规则;

    2、学会正确的使用关系表达式和逻辑表达式;

    3、掌握if else语句的使用方法;

    4、掌握算术运算符和运算规则。

    5、掌握switch/case语句的使用方法。

    6、掌握switch/case语句语法和使用方法。注意switch语句的控制流程,在switch语句中break语句的用法。

    7.、break语句与continue语句的用法

    8、switch/case结构的嵌套使用

    二、实验内容

    1、实验练习:

    if语句的应用(4.3.1)

    1、问题的简单描述:

    读入3个分别表示箱子长、宽、高的整数值,判断并输出该箱子是正方体还是长方体。

    2,实验代码:

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

    3,问题分析:

    我在该实验的遇到的主要问题是if中的条件语句不能直接写(a==b==c),而应该是(a==b)&&(b==c)

    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>
    int main()
    {   
        int x,y,z;
        float a,b;
    printf("请输入打印纸、墨盒、关盘数量:
    ");
    scanf("%d%d%d",&x,&y,&z);
    a=x*18+y*132+z*4.5;
    if(a<100)
    b=a; 
        else if(a>=100&&a<200)
    b=a*0.95; 
        else if(a>=200&&a<300)
    b=a*0.94; 
        else if(a>=300&&a<400)
    b=a*0.93; 
        else if(a>=400&&a<500)
    b=a*0.92; 
        else if(a>=500)
    b=a*0.9;  
        printf("应付款数=%.2f
    ",b);
    }

    3问题分析:一开始我完全忘记怎么去计算这个if  else怎么用,于是就去请教同学,就弄明白了,果然还是要数学好一点才能学好C语言啊~嘿嘿,然后我就也能教同学这个结构了,真好。

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

    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%400==0||(year%4==0&&year%100!=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,问题分析:一开始写的时候并没有什么问题,后来遇到如何判断闰年就懵了,然后上网查找发现闰年的判断语句是这样的:year%400==0||(year%4==0&&year%100!=0)

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

    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,问题分析:因为书上有流程图也有提示,所以编写也就比较顺利,然后发现运行不出来,经过和同学的对比,发现程序模板是switch中应该是用(y),而我之前是用的(x)

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

    1,问题的简单描述:

    运行下列程序,分析错误原因,请修改程序,使其输出正确的结果,并写入实验报告,掌握c语言表达式与数学表达式的区别。

    2,实验代码:

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

    3,问题分析:还是if条件语句的问题,c语言不能识别出5<a<10这样的语句,而应该是5<a&&a<10

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

           这节实验课总共有5个实验,其中我认为最难的就是第二个实验,关于switch/case来编写这个程序,在实验课上我是用的if  else的语句进行,因为当时并不是很熟悉switch/case,所以下课后看书本,对照书将switch/case又重新做了一遍,现在大概了解了这个结构。这也算是我在这次实验课上的一个收获吧。

           其此就是我对键盘的熟练程度还不够,这次实验课完成的比较慢,所以我会重视这个不足,之后加以改正。

  • 相关阅读:
    洛谷P1219 八皇后 我。。。。。。
    c++ STL map
    洛谷P1765 手机_NOI导刊2010普及(10) 关于cin和getline的一些区别 以及一些STL
    Restore the Permutation by Sorted Segments CodeForces
    Alternating Subsequence CodeForces
    cerr与cout
    (转)女生应该找一个玩ACM的男生
    (转)搞ACM的你伤不起
    c++多组数据输入
    不要62 HDU
  • 原文地址:https://www.cnblogs.com/YANG1116/p/10674389.html
Copyright © 2011-2022 走看看