孤山落叶

第二次实验报告

C程序设计实验报告

姓名:苏紫阳 实验地点:一教522 实验时间:2021.4.15

 

一、实验目的与要求

1)掌握结构化程序的算法描述方法。

2)了解c语言的基本语法要素,能熟练地将算法转化为c语言程序。

3)熟练掌握c语言运算符的优先级、结合性、运算规则、运算对象类型等。

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

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

6)掌握各种形式的if语句发和使用方法。主义if语句中的if和else的匹配关系,以及if语句的嵌套。

7)掌握switch语句的语法和使方法。注意在switch语句break语句的用法及switch语句的嵌套。

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

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

二、实验内容

1.实验练习:3.3.1

1)问题的简单描述:试用算法流程图表示该函数的算法。输入x值,输出满足函数关系的y值,并用c语言编写程序检验。

2)实验代码:

#include <stdio.h>
int main()
{
    float x,y;
    printf("请输入x的值:");
    scanf("%f",&x);
    if(x<1)
    {    
    y=x;
    printf("y的值为 %.2f",y); 
    }
    else if(x<10)
    {
    y=3*x-1    ;
    printf("y的值为 %.2f",y); 
    }
    else 
    {
    y=2*x-1;
    printf("y的值为 %.2f",y); 
    }
}

3) 问题分析:if与else的配对问题。

2.实验练习:3.3.2

1)问题的简单描述:用算法流程图描述求解鸡兔同笼问题的算法。

2)实验代码:

#include<stdio.h>
int main()
{
    int h,f,x,y;
    printf("鸡兔总数,鸡脚总数:");
    scanf("%d,%d",&h,&f);
    if(h>0&&f>0)
    {
        x=(4*h-f)/2;
        y=(f-2*h)/2;
        printf("鸡有%d 兔有%d\n",x,y);
    }
    else 
    printf("输入错误!\n");
}

3) 问题分析:if后条件的不清晰而导致达不到目的。

3.实验练习:3.33

1)问题的简单描述:有4个圆塔,圆心分别为(2,2)、(-2,2)、(-2,-2)、(2,-2),圆半径为1。这4个塔的高度均为10m,塔外无其他建筑。

2)实验代码:

#include<stdio.h>
int main()
{
    int h=10;
    float x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2,x,y,d1,d2,d3,d4;
    printf("请输入一个点(x,y):\n");
    scanf("%f,%f",&x,&y);
    d1=(x-x1)*(x-x1)+(y-y1)*(y-y1);
    d2=(x-x2)*(x-x2)+(y-y2)*(y-y2);
    d3=(x-x3)*(x-x3)+(y-y3)*(y-y3);
    d4=(x-x4)*(x-x4)+(y-y4)*(y-y4);
    if(d1>1&&d2>1&&d3>1&&d4>1)
    {
    h=0;
    printf("塔的高度为%d",h);
    }
    else
    printf("塔的高度为%d",h);
}

3) 问题分析:对于计算机运算符优先级的混淆。

4.实验练习: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)
    printf("该箱子为正方体。\n");
    else
    printf("该箱子为长方体。\n");
}

3) 问题分析:对于逻辑运算符的用法。

5.实验练习:4.3.2

1)问题的简单描述:编写程序实现如下功能,根据不同购买量,计算应付贷款。

2)实验代码:

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

3) 问题分析:switch用法的不熟练。

6.实验练习: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)
    {
        case2 : if((year%4==0&&year&100!=0)||year%400==0)
                days=29;
             else
                days=28;break;
        case1 :        
        case3 :        
        case5 :        
        case7 :        
        case8 :        
        case10 :        
        case12 : days=31;break;   
        case4 :        
        case6 :        
        case9 :        
        case11 : days=30;break;       
        default : break;
    }
    printf("%d年%d月有%d天",year,month,days);
}

3) 问题分析:代码数量太多导致对整体问题的混乱。

三、实验小结

1)通过本次实验学习,对if语句和switch语句有了更深入的了解。

2)规则嵌套的形式是每一层的else分支嵌套着另一个if...else语句。else与离他最近的上一个if配对。

3)对于switch语句,必须设置default标号,用于处理switch语句中表达式的值不在case标号集范围内的情况。

四、预习第四章

 

 

posted on 2021-04-20 21:43  孤山落叶  阅读(47)  评论(0编辑  收藏  举报