码迷,mamicode.com
首页 > 其他好文 > 详细

C程序设计实验报告(三)

时间:2020-03-28 21:45:18      阅读:379      评论:0      收藏:0      [点我收藏+]

标签:匹配   关系   问题   表达   section   title   闰年   class   code   

♦实验项目:4.3.1 if语句的应用;4.3.2 switch...case语句的应用;4.3.3 switch...case语句嵌套if语句;4.3.4 switch...case结构嵌套;4.3.5 分析程序;4.3.5(1)分析程序并改错

♦姓名:游山  

♦实验地点:家

♦实验时间:2020.03.28

一、实验目的与要求

1、掌握C语言逻辑值的表示方法(0代表“假” ,1代表“真”)。
2、学会正确使用关系表达式和逻辑表达式。
3、掌握各种形式的if语句语法和使用方法。注意if语句中if和else的匹配关系,以及if语句的嵌套。
4、掌握switch语句的语法和使用方法。注意在switch语句中break语句的用法及switch语句的嵌套。
5、能独立编写分支结构程序并调试通过。
6、用if语句、switch语句解决简单的应用问题并上机实现。

二、实验内容

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

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

2实验代码:

技术图片
#include<stdio.h>
main()
{
    int a,b,c;
    printf("请输入箱子的长、宽、高:\n");
    scanf("%d%d%d",&a,&b,&c);
    if((a==b)&&(b==c)&&(a==c)) //如果长、宽、高都相等,则为正方体
        printf("该箱子是正方体\n"); 
    else
        printf("该箱子是长方体\n"); 
}
技术图片

3问题分析: 注意 逻辑与 && 的表达。

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

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

2实验代码:

技术图片
#include<stdio.h>
main()
{
    int a,b,c,x,sum;
    //a、b、c分别代表打印纸、墨盒和光盘的数量,x用来判断优惠率 
    float y,d;
    //sum代表购买商品总额,y代表优惠后应付款额 ,d代表优惠率 
    printf("请输入打印纸、墨盒、光盘的数量:\n");
    scanf("%d%d%d",&a,&b,&c);
    sum=18*a+132*b+4.5*c;
    x=sum/100;//判断优惠率    
    switch(x)
    {
        case 0:d=0;break;
        case 1:d=0.05;break;
        case 2:d=0.06;break;
        case 3:d=0.07;break;
        case 4:d=0.08;break;        
        default:d=0.1;break; 
    } 
    y=sum*(1-d);//最终的应付款数 
    printf("应付款数:%.2f 元\n",y); 
}
技术图片

 3问题分析:d  代表优惠率,用 x=sum/100 来判断优惠率

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

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

2实验代码:

技术图片
#include<stdio.h>
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))//判断是否是闰年
        {
            days=29;
            printf("%d年%d月有%d天\n",year,month,days);break;
        }    
        else
            days=28;
            printf("%d年%d月有%d天\n",year,month,days);break;
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:days=31; //以上月份的天数
        printf("%d年%d月有%d天\n",year,month,days);break;
        case 4:
        case 6:
        case 9:
        case 11:days=30;
        printf("%d年%d月有%d天\n",year,month,days);break;     
    }
    
}
技术图片

3问题分析:不清楚闰年的规则 

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

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

2实验代码:

技术图片
#include<stdio.h>
main()
{
    int x,n,y;
    float sum;
    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.文件夹(12元/个) 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=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("数量?");
               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);
}
技术图片

3问题分析:代码比较长,中文也比较多,注意中英文的切换。

 

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

1问题的简单描述:分析程序。

2实验代码:

技术图片
#include<stdio.h>
main()
{
    double x=1000/3.0;
    double y=x-33.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==0.\n");
    else 
        printf("z不等于0.\n");
    return 0;       
}
技术图片

 

3问题分析:double定义的双精度实数型数据,字节长度为 8 。

 

6、实验练习:4.3.5(1)分析程序并改错

1问题的简单描述:条件表达式num大于等于5且小于等于10,表达错误。

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);
}
 
改错后的代码:
#include<stdio.h>
int main()
{
    int num=20;
    if(num>=5&&num<=10)
        printf("%d in range (5,10)!\n",num);
    else
        printf("%d out of range (5,10)!\n",num);
}
技术图片

 

3问题分析:5<num>10,这是数学中的表达方式;在C语言中我们可以用逻辑表达式(逻辑与 && )来表达

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

1、设计思路:设计一个能循环多次计算两个数的加、减、乘、除的简单计算器。(只能进行两个数的四则运算)

    首先,选择运算符号;其次,输入要计算的两个数;然后用switch...case结构判断、计算并输出相应的结果;最后,用while()语句实现多次循环计算,再用if语句结束循环。

    特别注意:计算除法时,除数不能为零,要如何正确表达。

2、代码:

技术图片

#include<stdio.h>
main()
{
int x,y,z;
char c;
printf("请输入算法:");
scanf("%d%c%d",&x,&c,&y);
switch(c)
{
case‘+‘:z=x+y;break;
case‘-‘:z=x-y;break;
case‘/‘:

if(y!=0)

z=x/y;break;

else

printf("输入错误”)

case‘*‘:z=x*y;break;

}

printf("计算结果为:%d",z);
}

技术图片

 

四、实验小结

这次实验主要是第四章分支结构的实验,主要涉及 if 结构和 switch 结构。我对于switch...case语句不熟练,有时候会忘记 break 。前面的几个实验都没有太大的问题,但是设计一个计算器遇到了很多问题。实现多次计算要用到循环结构。我们要学习别人好的地方,真真实实地把它弄明白,创造出属于自己的东西。

C程序设计实验报告(三)

标签:匹配   关系   问题   表达   section   title   闰年   class   code   

原文地址:https://www.cnblogs.com/1738565653q/p/12589384.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!