热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

第四章分支结构实验

实验项目:第四章实验设计4.3.1、4.3.2、4.3.3、4.3.4、4.3.5-1、4.3.5-2姓名:刘裕汕实验地点:家里实验时间:2020年3月25日一、实验目的与要求1、

实验项目:第四章实验设计4.3.1、4.3.2、4.3.3、4.3.4、4.3.5-1、4.3.5-2

姓名:刘裕汕 

实验地点:家里

实验时间:2020年3月25日

一、实验目的与要求

1、掌握C语言逻辑值的表示方法。
2、学会正确的使用关系表达式和逻辑表达式。
3、掌握各种形式的if语句语法和使用方法。
4、掌握switch语句的语法和使用方法。
5、能独立编写分支结构程序并调试通过。
6用if语句、switch语句解决简单的应用问题并上机实现。

 二、实验内容

14.3.1   if语句的运用
24.3.2   switch...case语句的运用
34.3.3   switch...case语句嵌套if语句的应用
44.3.4 switch...case结构嵌套的应用 54.3.5-1 程序分析一 64.3.5-2 程序分析二

 

1、实验练习:4.3.1 if语句的运用

             1.问题的简单描述:熟悉if语句中的条件使用

             2.实验代码:

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

             3.问题分析:"l==w==h"与"l==w&&w==h"的输出结果是不一样的

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

             1.问题的简单描述:

             2.实验代码

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

             3.问题分析:switch后的括号内不能用浮点型数据来表示

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

             1.问题的简单描述:条件不能连续,应间断填写

             2.实验代码

#include
int main()
{
    int year,month,days;
    printf("please enter year and month:\n");
    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:days=31;break;
    case 3:days=31;break;
    case 4:days=30;break;
    case 5:days=31;break;
    case 6:days=30;break;
    case 7:days=31;break; 
    case 8:days=31;break;   
    case 9:days=30;break;
    case 10:days=31;break;
    case 11:days=30;break;
    case 12:days=31;break;
    }
    printf("%d年%d月有%d天",year,month,days);
    return 0; 
}

             3.问题分析:if语句的条件语句应逐条填写,括号要一一对应

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

             1.问题的简单描述:在switch结构嵌套的情况下,容易将语句内容搞混乱

             2.实验代码

#include
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("数量?\n");
           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.文件夹(12元/个)    4.文具盒(8.6元/个)\n");
           scanf ("d",&y);
           printf ("数量?\n");
           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 元/包) \n");
           printf("        3. 饼(2元/个)       4.方便面(3.6 元/条)\n");
           scanf("&d",&y);
           printf("数量?\n");
           scanf ("&d",&n);
           switch(y)
           {
           case 1:sum=3.6*n;break;
           case 2:sum=n;break;
           case 3:sum=2*n;break;
           case 4:sum=3.6;break;
           }
    break;
    }
    printf("总计:%.2f元",sum);
}

             3.问题分析:将同类语句放在一起并排好序列,有助于分辨主次语句

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

             1.问题的简单描述:代码运算过程

             2.实验代码:

#include
int main()
{
    double x=1000/3.0;
    double y=x-333.0;
    double z=3*y-1.0;
    printf("x=%1f\n",x);
    printf("y=%1f\n",y);
    printf("z=%1f\n",z);
    if(z==0)
    printf("z==0.\n");
    else
    printf("z不等于0.\n");
    return 0;
 } 

             3.问题分析:这个程序的整体运算为1-(1/3)*3!=0,在运算中,1000/3得到的是一无限循环小数333.3333......,再减去333得到0.3333.....,在乘以3得                                         0.9999.......,最后是1-0.9999......>0。所以最终结果输出第二个语句。

6、实验练习: 4.3.4-2 程序分析二

             1.问题的简单描述:修正代码错误

             2.实验代码

               原代码:

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

               现代码:

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

              3.问题分析:原代码:在if语句中,5

                          现代码:在if语句中,先分别执行语句5

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

1、设计思路:先将公式中的数字与运算符号分开,在通过switch语句将各种情况的运算分开,经过计算过后输出结果。最后再使用do......while循环将计算器实现循环。

2、流程图:

技术图片

3、设计过程中遇到的问题及改进方法:

在赋值过程中应将数值与符号分开

4、代码:

#include
main()
{
    int x;
    float a,b,c;
    char q;
    do{
    printf("---简易计算器---\n");
    printf("    加号:+   \n");
    printf("    减号:-   \n");
    printf("    乘号:*   \n");
    printf("    除号:/   \n");
    printf("    平方:^2  \n");
    printf("请输入计算公式:\n");
    scanf("%f",&a);scanf("%c",&q);scanf("%f",&b); 
    switch(q)
    {
    case 43:c=a+b;
    printf("%.2f%c%.2f=%.2f\n",a,q,b,c);break;
    case 45:c=a-b;
    printf("%.2f%c%.2f=%.2f\n",a,q,b,c);break;
    case 42:c=a*b;
    printf("%.2f%c%.2f=%.2f\n",a,q,b,c);break;
    case 47:
    if(b!=0)
    {
    c=a/b;
    printf("%.2f%c%.2f=%.2f\n",a,q,b,c);
    } 
    else
    printf("除数不能为零,请重新输入!\n");break; 
    case 94:c=a*a;
    printf("%.2f%.2c%.2f=%f",a,q,b,c);break;
    default:printf("运算符号输入错误!\n");
    }
    printf("继续计算请按1\n结束计算请按2\n");
    scanf("%d",&x);
    }while(x==1);
    printf("----感谢使用----\n");
}

 四、实验小结:

 通过计算器项目的实验,我掌握了第四章的大部分内容,这大概就是所谓的百闻不如一“践“吧!

第四章分支结构实验


推荐阅读
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
author-avatar
陈苏女士
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有