第二次试验报告

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("请输入箱子的长、宽、高:\n");
   scanf("%d%d%d",&l,&w,&h);
   if (l==w&&w==h)
       printf("该箱子是正方形。\n");
   else
       printf("该箱子是长方形。\n");
}

 

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("请输入打印纸、墨盒、光盘的数量:\n");
     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:\n");
    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.食品\n");
    scanf("%d",&x);
    switch (x)
        {
            case 1:printf("请选择:1.牙刷(3.5元/支)  2.牙膏(6.2元/支)\n" );
                   printf( " 3.肥皂(2元/块)   4毛巾(8.6元/条)\n");
                   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/个)\n" );
                   printf( " 3.文件夹(2元/个)   4文具盒(8.6元/个)\n");
                   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元/包)\n" );
                   printf( " 3饼(2元/个)   4方便面(3.6元/条)\n");
                   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元\n",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\n",x);
     printf("y=%lf\n",y);
     printf("z=%lf\n",z);
     if (z==0) 
        printf("z==o.\n");
     else 
         printf("z不等于0.\n");
 }

 

          3、运行结果:

         

          4、程序分析:

 

 

       程序<二>

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

       2、实验代码:

 

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

 

 

 

       3、运行结果:

       4、程序纠正

         A、纠正代码:     

# include <stdio.h>
 int main ()
 {
  int num;
  printf("please enter int num  20\n");
  scanf("%d",&num);
  if (num>5&&num<10) 
      printf("%d in range  (5,10)!\n",num);
  else 
      printf("%d out of range (5,10)!\n",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、缺乏自己解决问题的能力,过于依赖书本、同学、老师,要培养自己动手解决问题的能力;

 

posted @ 2019-04-07 23:43  Avery墨念  阅读(309)  评论(0编辑  收藏  举报