C程序设计实验报告

实验项目:___分支结构实验__

姓名:___ 杨珺茹____实验地点:___514______实验时间____2019·4·3_______

一、实验目的与要求

1.掌握c语言逻辑运算和关系运算的规则;

2、学会正确的使用关系表达式和逻辑表达式;

3、掌握if else语句的使用方法;

4、掌握算术运算符和运算规则。

5、掌握switch/case语句的使用方法。

6、掌握switch/case语句语法和使用方法。注意switch语句的控制流程,在switch语句中break语句的用法。

7.、break语句与continue语句的用法

8、switch/case结构的嵌套使用

二、实验内容

1、实验练习:

if语句的应用(4.3.1)

1、问题的简单描述:

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

2,实验代码:

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

 

3,问题分析:

我在该实验的遇到的主要问题是if中的条件语句不能直接写(a==b==c),而应该是(a==b)&&(b==c)

2、实验练习:switch/case语句的应用(4.3.2)

1问题的简单描述:

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

2实验代码:

#include<stdio.h>
int main()
{   
    int x,y,z;
    float a,b;
printf("请输入打印纸、墨盒、关盘数量:\n");
scanf("%d%d%d",&x,&y,&z);
a=x*18+y*132+z*4.5;
if(a<100)
b=a; 
    else if(a>=100&&a<200)
b=a*0.95; 
    else if(a>=200&&a<300)
b=a*0.94; 
    else if(a>=300&&a<400)
b=a*0.93; 
    else if(a>=400&&a<500)
b=a*0.92; 
    else if(a>=500)
b=a*0.9;  
    printf("应付款数=%.2f\n",b);
}

3问题分析:一开始我完全忘记怎么去计算这个if  else怎么用,于是就去请教同学,就弄明白了,果然还是要数学好一点才能学好C语言啊~嘿嘿,然后我就也能教同学这个结构了,真好。

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

1问题的简单描述:

输入某一年月,输出该月的天数。
2实验代码:

#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%400==0||(year%4==0&&year%100!=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);
    return 0;
}

 

3,问题分析:一开始写的时候并没有什么问题,后来遇到如何判断闰年就懵了,然后上网查找发现闰年的判断语句是这样的:year%400==0||(year%4==0&&year%100!=0)

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

1,问题的简单描述:

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

2,实验代码:

#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.文件夹(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);
    return 0;
}

 

3,问题分析:因为书上有流程图也有提示,所以编写也就比较顺利,然后发现运行不出来,经过和同学的对比,发现程序模板是switch中应该是用(y),而我之前是用的(x)

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

 

1,问题的简单描述:

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

2,实验代码:

#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,问题分析:还是if条件语句的问题,c语言不能识别出5<a<10这样的语句,而应该是5<a&&a<10

 

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

       这节实验课总共有5个实验,其中我认为最难的就是第二个实验,关于switch/case来编写这个程序,在实验课上我是用的if  else的语句进行,因为当时并不是很熟悉switch/case,所以下课后看书本,对照书将switch/case又重新做了一遍,现在大概了解了这个结构。这也算是我在这次实验课上的一个收获吧。

       其此就是我对键盘的熟练程度还不够,这次实验课完成的比较慢,所以我会重视这个不足,之后加以改正。