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

    C程序设计实验报告

     

     

     

    实验项目:
       1、if语句的应用
       2、switch/case语句的应用
       3、switch/case语句嵌套if语句的应用
       4、switch/case语句的嵌套应用
       5、分析程序
       

    姓名:许鑫琪         实验地点:第一教学楼514教室          实验时间:4月3日  

    、实验目的与要求

          1、if语句的应用

    •  掌握C语言逻辑运算和关系运算的规则;
    • 学会正确地使用关系表达式和逻辑表达式;
    • 掌握if-else语句的使用方法。

     

          2、switch/case语句的应用

    • 掌握算术运算符和运算规则 ;
    • 掌握switch/case语句的使用方法


         3、switch/case语句嵌套if语句的应用
      

    • 学会正确的使用关系表达式和逻辑表达式;
    • 掌握switch/case  语句语法和使用方法。注意switch语句的控制流程,在switch语句中的break语句的用法;
    • switch/case结构与if/else嵌套结构之间的转换。


         4、switch/case语句的嵌套应用

    • switch/case结构的嵌套使用。
    • break语句与continue语句的用法。

           

    二、实验内容

        1、实验4.3.1:if语句的应用。

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

        3、实验代码如下:

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

    4、运行结果:

    5、问题分析:

              这个实验比较简单,但是一些细节问题还是得注意,像中英文输入法的转换,符号要特别注意;

                 对于简单的程序,要理解每句代码的含义,也可以尝试用不同的方法去实现。

       1、实验4.3.2:switch/case语句的应用

        2、 问题描述

        编一程序实现如下功能:商店有打印纸(18元/本)、墨盒(132元/盒)、光盘(4.5元/片)出售,商店进行优惠酬宾活动。

       具体做法如下:顾客购买商品的总额达到100元,优惠5%;达到200元     以上,优惠6%;达到300元以上,优惠7%;达到

       了400元以上,优惠8%;达到1000元以上,优惠10%。根据不同的购买量,打印应付款。

       3、实验代码如下:

        

    # include <stdio.h>
      int  main ()
     {
         int a,b,c,d;
         float sum;
         printf("请输入打印纸、墨盒、光盘的数量:
    ");
         scanf("%d,%d,%d",&a,&b,&c);
        sum=(18*a+132*b+4.5*c);
        d=sum;
        switch(d)
       { 
        case 0:sum*=1.0; break;
        case 1:sum*=0.95;break;
        case 2:sum*=0.94;break;
        case 3:sum*=0.93;break;
        case 4:sum*=0.92;break;
        default:sum*=0.9;
         }
            printf("应付款数=%.2f",sum);
     } 

       4、运行结果:

     

       5、问题分析:

            实验时这题我卡了很久,但是又找不出错误,系统没有报错,但是也没有按照理想的结果运行;

            后面老师讲了,发现自己的格式不正确,虽然算法,思路没有错,但是基本的 switch/case,printf()的结构错了;

      1、实验4.3.3:switch/case语句的嵌套if语句的应用

      2、问题描述:输入年月,输出该月的天数。

      3、实验代码如下:

    #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年%d月有%d天",year,month,days);
     }

      4、运行结果:

     

      5、问题分析:

                  该题的算法开始写错了,系统没有正确运行;输出格式也有问题;

               后面自己在课本上找到了计算闰年的算法,修改了一下格式,就运行成功了;

      1、实验4.3.4:switch/case语句的嵌套应用

       2、问题描述:

            编写一个自动售货机的程序。该程序应具有以下功能:二级菜单,一级菜单是商品类型的选择;

            二级菜单是具体商品的选择(商品价格和品种可以自拟)。顾客选择商品类型,输入购买数量。

           自动售货机根据选择的商品类型与数量,计算并显示所选商品总金额。

      3、实验代码如下:

    # 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.文件夹(2元/个)   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=2*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) ;
     } 

      

      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==o.
    ");
         else 
             printf("z不等于0.
    ");
     }

              3、运行结果:

             

              4、程序分析:

           程序<二>

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

           2、实验代码:

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

           3、运行结果:

           4、程序纠正

             A、纠正代码:     

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

              B、运行结果:

          

           5、问题分析:

           原程序想当然的把数学中的表达式直接搬过来了,然而却不符合C语言的表达;

           num为变量,应提示输入int  num  20 ,而非简单的num=20;

           表达5<num<10,这样子的表达简洁但不符合C语言的语法,应表示成num>5&&num<10;

          三、实验总结

         收获:

                   1、对switch/case语句的结构有了熟悉的认识及掌握;

                   2、对细节要十分的重视,决定一个程序能否运行的有时候 往往是我们容易忽视的一些细节;

                   3、注意C语言的输入法的规则,不能想当然的用固有或原有思维去看待问题;

                   4、写程序时要有自己的思路,当有问题时也可以换一种方法去解决;

                   5、我们写程序时要通观全局,不能顾此失彼,重点我们要抓牢,但是基本的规则还是不能错;

                   6、书写程序若较长或者难以理解的语句可以备注一些注释,以便自己修改,他人看懂,我们应该要用一个专业的程序员的标准来要求我们自己;

         不足:

                       1、对于一个新程序的编写,出现了一些很基本的错误,对基本内容掌握不牢靠,课后应多学习该章节的内容;

                  2、实验的速度过慢了,几乎每次都是最后面交作业的人,对键盘还是不够熟悉,C语言基本的规则不熟练;

                  3、书写时,要形成一个良好的书写风格,要自己看懂更要让他人看懂,会有利于自己回头看程序;

                  4、面对一个程序不能急于求成,在写之前应该想好用什么语句,什么方法,写有一定的思路才能达到事半功倍的效果;

                  5、善于发现他人书写代码的优点(同一个程序,自己写了一大堆,别人轻松的及行就搞定了),去学习他人一些好的方面;

                  6、缺乏自己解决问题的能力,过于依赖书本、同学、老师,要培养自己动手解决问题的能力;

  • 相关阅读:
    nginx配置
    线程与进程的区别:
    java面试题1
    递归的定义和优缺点
    使用jedis连接redis可能会出现的问题及解决方案
    Linux上安装Redis
    Linux 权限管理
    Maven
    网址备份
    反射
  • 原文地址:https://www.cnblogs.com/Paranoid-For/p/10658331.html
Copyright © 2011-2022 走看看