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

    C程序设计实验报告

    实验项目:分支结构实验

    姓名:罗子健  实验地点:教学楼514  实验时间:2019年4月3日

    一、实验目的与要求

    (1)掌握C语言逻辑量的表示方法(0代表“假”,1代表“真”)。

    (2)学会正确的使用关系表达式和逻辑表达式。

    (3)掌握各种形式的if语句语法和使用方法。注意if语句和else的匹配关系,及if语句的嵌套。

    (4)掌握switch语句语法和使用方法。注意switch语句的控制流程,在switch语句中break语句的用法及switch语句的嵌套。

    (5)能独立编写分支结构程序并调试通过。

    (6)用if语句、switch语句解决简单的应用问题并上机实现。

    二、实验内容

    4.3.1实验练习:

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

    2、实验代码:

     1 #include<stdio.h>
     2 int main()
     3 {
     4     int l,w,h;
     5     printf("请输入箱子的长、宽、高:
    ");
     6     scanf("%d%d%d",&l,&w,&h);
     7     if(l==w&&w==h&&l==h)
     8         printf("该箱子是正方体。
    ");
     9     else
    10         printf("该箱子是长方体。
    ");
    11     return 0;
    12 }

    3、问题分析:这个题目要注意条件的优先级和结果成立的条件,“等于”的优先级高于“与”的优先级,所以不需要加括号,正方体的判定条件是长宽高3边相等。

    4.3.2、实验练习:

    1、问题的简单描述:编一程序实现如下功能:商店有打印纸(18元/本)、墨盒(132元/个)、光盘(4.5元/片)出售,商店进行优惠活动。具体做法如下:顾客购买商品的总额达到了100元,优惠5%;达到了200元以上,优惠6%;达到了300元以上,优惠7%;达到了400元以上,优惠8%;达到了500元以上,优惠10%。根据不同的购买量,打印应付贷款。

    2、实验代码:

     1 #include<stdio.h>
     2 main()
     3 {
     4     int dyz,mh,gp,Y;
     5     float yfk,sum,yhl;
     6     printf("请输入打印纸、墨盒、光盘的数量:
    ");
     7     scanf("%d,%d,%d",&dyz,&mh,&gp);
     8     sum=(dyz*18+mh*132+gp*4.5);
     9     Y=(sum/100);            
    10     switch(Y)
    11     {
    12         case 0:
    13             yfk=sum;
    14             printf("应付货款=%f",yfk);
    15             break;
    16         case 1:
    17             yfk=sum*0.95;
    18             printf("应付货款=%f",yfk);
    19             break;
    20         case 2:
    21             yfk=sum*0.94;
    22             printf("应付货款=%f",yfk);
    23             break;
    24         case 3:
    25             yfk=sum*0.93;
    26             printf("应付货款=%f",yfk);
    27             break;
    28         case 4:
    29             yfk=sum*0.92;
    30             printf("应付货款=%f",yfk);
    31             break;
    32         default:
    33             yfk=sum*0.90;
    34             printf("应付货款=%f",yfk);
    35             break;
    36     }
    37 }

     

    3、问题分析:这个题目在做的时候程序并没有报错,但是在按照书上的数据输入时,却发现没有显示输出,改了好久的程序代码,也没有发现问题,最后一个一个数据去试,发现是因为“default”打成了“dafault”所以导致金额大于500元就不显示输出。

    4.3.3、实验练习:

    1、问题的简单描述:输入某一年月,输出该月的天数。

    2、实验代码:

     1 #include<stdio.h>
     2 int main()
     3 {
     4     int year, month,days;
     5     printf("Please enter year and month:
    ");
     6     scanf("%d%d",&year,&month);
     7     switch(month)
     8     {
     9         case 2 :if(year%4==0&&year%100!=0)
    10                 days=29;
    11             else
    12                 days=28;
    13             break;
    14         case 1:days=31;
    15         case 3:days=31;
    16         case 5:days=31;
    17         case 7:days=31;
    18         case 8:days=31;
    19         case 10:days=31;
    20         case 12:days=31;
    21         case 4:days=30;
    22         case 6:days=30;
    23         case 9:days=30;
    24         case 11:days=30;break;                        
    25     }
    26     printf("%d年%d月有%d天",year,month,days);
    27 }

    3、问题分析:这个题目就是要注意闰年的判定条件,闰年是能被4整除且不被100整除,所以在用年份除以4的时候余数为0,除以100的时候余数不等于0,因为要同时满足,则用“&&(与)”语句来表示。

    4.3.4、实验练习:

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

    2、实验代码:

     1 #include<stdio.h>
     2 int main()
     3 {
     4     int x,n,y;
     5     float sum=0.0;
     6     printf("请输入:1.日用品    2.文具        3.食品
    ");
     7     scanf("%d",&x);
     8     switch(x)
     9         {
    10         case 1:printf("请输入:1.牙刷(3.5元/支) 2.牙膏(6.2元/支)
    ");
    11                 printf("    3.牙刷(2元/块)     4.毛巾(8.6元/条)
    ");
    12                 scanf("%d",&y);
    13                 printf("数量?");
    14                 scanf("%d",&n);
    15                 switch(y)
    16                     {
    17                     case 1:sum=3.5*n;break;
    18                     case 2:sum=6.2*n;break;
    19                     case 3:sum=2*n;break;
    20                     case 4:sum=8.6*n;break;
    21                     }
    22                 break;
    23         case 2:printf("请输入:1.笔(3元/支)     2.笔记本(1.2元/个)
    ");
    24                 printf("    3.文件夹(12元/个) 4.文具盒(8.6元/个)
    ");
    25                 scanf("%d",&y);
    26                 printf("数量?");
    27                 scanf("%d",&n);
    28                 switch(y)
    29                     {
    30                     case 1:sum=3*n;break;
    31                     case 2:sum=1.2*n;break;
    32                     case 3:sum=12*n;break;
    33                     case 4:sum=8.6*n;break;
    34                     }
    35                 break;
    36         case 3:printf("请输入:1.白糖(3.6元/包) 2.盐(1元/包)
    ");
    37                 printf("        3.饼(2元/个)     4.方便面(3.6元/包)
    ");
    38                 scanf("%d",&y);
    39                 printf("数量?");
    40                 scanf("%d",&n);
    41                 switch(y)
    42                     {
    43                     case 1:sum=3.6*n;break;
    44                     case 2:sum=1*n;break;
    45                     case 3:sum=2*n;break;
    46                     case 4:sum=3.6*n;break;
    47                     }
    48                 break;
    49         }
    50     printf("总计:%.2f元
    ",sum);
    51     return 0;
    52  } 

    3、问题分析:注意多级菜单的选择和结果的运算。

    4.3.5.1、实验练习:

    1、问题的简单描述:运行下列程序,分析输出的结果

    2、实验代码:

     1 #include<stdio.h>
     2 int main()
     3 {
     4     double x=1000/3.0;
     5     double y=x-333.0;
     6     double z=3*y-1.0;
     7     printf("x=%lf
    ",x);
     8     printf("y=%lf
    ",y);
     9     printf("z=%lf
    ",z);
    10     if(z==0) printf("z==0.
    ");
    11         else printf("z不等于0.
    ");
    12     return 0;
    13 }

    结果如下:

     

    3、问题分析:因为结果是按双精度输出浮点数,所以显示小数点后6位,又因为z是小于0的且无限接近与0,所以用-0.000000表示,但并不与0相等。

    6、实验练习:

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

    2、实验代码:

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

    3、问题分析:不能像数学里表示一个数的范围在另外两个数之间那样表示,而要用到“&&(与)”的逻辑语句表达。

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

    收获:掌握C语言逻辑量的表示方法,掌握各种形式的if语句语法和使用方法,掌握switch语句语法和使用方法。

    不足:对于程序的字符还是不太熟悉。

  • 相关阅读:
    CreateDatabase is not supported by the provider
    SQLServer 查看耗时较多的SQL语句(转)
    Unity下调试ToLua(基于IDEA和VSCode)
    《Javascript高级程序设计》读书笔记——函数与闭包
    《Javascript高级程序设计》读书笔记——继承与原型链
    《Javascript高级程序设计》读书笔记——构造函数与原型
    客户端地图内寻路总结与优化
    《程序员的自我修养》读书笔记 第二章 编译和链接
    客户端GUI结构学习总结
    关于浏览器的页面渲染
  • 原文地址:https://www.cnblogs.com/gnxyxlzj/p/10663306.html
Copyright © 2011-2022 走看看