第二次实验报告

C程序设计实验报告

实验项目:

4.3.1 if语句的应用

4.3.2 switch/case语句的应用

4.3.3 switch/case语句嵌套结构if语句的应用

4.3.4 switch/case结构的嵌套应用

4.3.5 分析程序


姓名:欧阳思健        实验地点:514实验教室         实验时间:2019.04.03


 

一、实验目的与要求

4.3.1 if语句的应用

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

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

3.学会正确地使用关系表达式和逻辑表达式;

4.掌握if_else语句的使用方法。

4.3.2 switch/case语句的应用

1.掌握算术运算符和运算规则;

2.掌握switch/case语句的使用方法。

4.3.3 switch/case语句嵌套结构if语句的应用

1.学会正确使用关系表达式和逻辑表达式。

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

switch/case结构与if/else嵌套结构之间的转换。

4.3.4 switch/case结构的嵌套应用

1.switch/case结构的嵌套使用。

2.break语句与continue语句的用法。

4.3.5 分析程序

1.运行下列程序,分析输出的结果,并写入实验报告中。

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


二、实验内容


4.3.1 if语句的应用

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

此题无问题

4.3.2 switch/case语句的应用

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

这个题目方法有多种,应选择变量较少的方法解答,方便自己理解

4.3.3 switch/case语句嵌套结构if语句的应用

#include <stdio.h>
#include <math.h>
main()
{
    int y,m,days;
    printf("plz enter year and month:\n");
    scanf("%d%d",&y,&m);
    switch(m)
    {
        case 2:if(y%4==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天",y,m,days);
}

case和数字之间需要用空格隔开否则得不到结果

4.3.4 switch/case结构的嵌套应用

#include <stdio.h>
main()
{
    int x,y,n;
    float sum=0.0;
    printf("请选择:  1.日用品   2.文具    3.食品\n");
    scanf("%d",&x);
    switch(x)
        {
            case 1: printf("请选择:1.牙刷(3.5元/支) 2.牙膏(6.2元/支)\n        3.肥皂(2元/块)   4.毛巾(8.6元/条)");
                    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        3.文件夹(12元/个)   4.文具盒(8.6元/个)");
                    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        3.饼(2元/个)   4.方便面(3.6元/条)");
                    scanf("%d",&y);
                    printf("数量?");
                    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*n;break;
                        }
                    break;    
        }
        printf("总计:%.2f元\n",sum);
        return 0;
}

此题无问题

4.3.5 分析程序

1.

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

因为double定义双精度小数,完全保的有效数字是十五位,z-1.0为一个无限接近于0的一个负值

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);
}

如果num需要同时满足大于5小于10,应该这样表达num>5&&num<10

 

posted @ 2019-04-07 22:49  欧阳思健  阅读(128)  评论(0编辑  收藏  举报