• C语言实验报告(二)


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

    姓名:赖玮

    实验地点:家

    实验时间:2020.03.12

    实验项目:2-3-3字符与ASCII码2-3-4运算符与表达式的应用2-3-5顺序结构应用程序3-3-1数学函数的算法描述

    3-3-2鸡兔同笼的算法描述3-3-3确定坐标的算法描述

    一、实验目的与要求

    1、掌握自增++、自减--运算符的正确使用。
    2、掌握基本的输入/输出函数的基本功能、调用方法、输入/输出格式控制规定等。
    3、掌握结构化程序的算法描述方法。
    4、熟练掌握C语言的运算符,即运算符的优先级和结核性、运算规则、运算对象类型等。

    二、实验内容

    1、2-3-3字符与ASCII码

    ①、问题的简单描述:输出得不到正确结果
    ②、实验代码:
    #include<stdio.h>
    void main()
    {
        char a;
        printf("请输入一个大写字母:");
        scanf("%c",&a);
        printf("小写字母为%c,%c,%c
    ",a+31,a+32,a+33);
        printf("ASCII值为%d,%d,%d
    ",a+31,a+32,a+33);
    	
     } 
    
    
    ③、问题分析:ASCII码是一个整型的,需要用上%d。
    

    2、2-3-4运算符与表达式的应用

    ①、问题的简单描述:能够正确输入且编译运行,时间过长
    ②、实验代码:
    #include<stdio.h>
    main()
    {
        int a,b,c,d,e;
        printf("请输入一个三位正整数:
    ");
        scanf("%d",&a);
        b=(int)(a/100);
        c=((int)(a/10)%10);
        d=a%10;
        e=d*100+c*10+b;
        printf("%d:%d
    ",a,e);
    
    }
    ③、问题分析:对运算符得使用不熟悉,应多使用编译器进行编译。
    

    3、2-3-5顺序结构应用程序

    ①、问题的简单描述:需要输入的中文太多,十分容易出错
    ②、实验代码:
    
    #include<stdio.h>
    void main()
    {
        float a,b,c,d,e,f,x,y,z;/*其中a代表西药费,b代表检查费,c代表
        材料费,d代表床位费,e代表观察费,f代表护理费,x表示病人应付款,y
        表示病人付款,z表示找回金额*/ 
        printf("请输入西药费,检查费,材料费,床位费,观察费,护理费:
    ");
        scanf("%f,%f,%f,%f,%f,%f,%f",&a,&b,&c,&d,&e,&f,&y);
        x=a+b+c+d+e+f;
        z=y-x;
        printf("病人付款=%.2f
    ",y);
        printf("应付款=%.2f,",x);
        printf("应找回=%.2f
    ",z);
    
    }
    ③、问题分析:可以输入中文之后使用ctrl+空格键进行转换。
    

    4、3-3-1数学函数的算法描述

    ①、问题的简单描述:对判断程序比较陌生,不会使用if函数。
    ②、实验代码Ⅰ:
    
    #include<stdio.h>
    main()
    {
        float x,y;
        printf("请输入x的值:
    ");
        scanf("%f",&x);
        if(x<1)
        {
    	    y=x;
        }
        if(x>=1&&x<10)
        {
    	    y=2*x-1;
        }
        if(x>=10)
        {
    	    y=3*x-1;
        }
        printf("y的值为:%.2f",y);
     
    }
    实验代码Ⅱ:
    #include<stdio.h>
    main()
    {
        float a,b,c,x,y;
     printf("请输入x的值:
    ");
        scanf("%f",&x);
        a=(x<1)&&(y=x);
        b=(x>=1&&x<10)&&(y=2*x-1);
        c=(x>=10)&&(y=3*x-1);
        printf("y的值为:%.2f",y);
    
    }
    

    ③流程图:

    ④、问题分析:实验目的明确,语句使用生疏,多多练习,熟能生巧。
    

    5、3-3-2鸡兔同笼的算法描述

    ①、问题的简单描述:该题是一种基本的算法,在操作上不存在问题
    ②、实验代码:
    
    #include<stdio.h>
    void main()
    {
        int a,b,c,d;/*a表示头的总数,b表示脚的总数目,c表示鸡的数量,
        d表示兔子的数目*/
        printf("鸡的总数,兔的总数:");
        scanf("%d,%d",&a,&b);
        if(a>0,b>0)
        {
    	    c=(4*a-b)/2;
    	    d=(b-2*a)/2;
    	    printf("鸡有%d  兔有%d
    ",c,d);
        }
        else
        printf("输入错误
    ");
     
    }
    

    ③流程图:

    ④、问题分析:需要注意鸡兔的个数是整数,定义时需要使用整型.
    

    6、3-3-3确定坐标的算法描述

    ①、问题的简单描述:输出的时候没有得到与给出结果完全相符的答案
    ②实验代码Ⅰ:
    
    #include<stdio.h>
    #include<math.h>
    #define min(a,b) ( ((a)>(b)) ? (b):(a) )
    void main()
    {
    
        float h,x1,y1,x2,y2,x3,y3,x4,y4,x,y,d1,d2,d3,d4,d5,d6,d7,h1,h2;
        h=10,x1=2,x2=2,x3=-2,x4=-2,y1=2,y2=-2,y3=2,y4=-2;
        printf("请输入一个点(x,y):");
        scanf("%f,%f",&x,&y);
        d1=sqrt((x-x1)*(x-x1)+(y-y1)*(y-y1));
        d2=sqrt((x-x2)*(x-x2)+(y-y2)*(y-y2));
        d3=sqrt((x-x3)*(x-x3)+(y-y3)*(y-y3));
        d4=sqrt((x-x4)*(x-x4)+(y-y4)*(y-y4)); 
        if(d1>1&&d2>1&&d3>1&&d4>1)
        {
    	    h1=0;
    	    printf("该塔的高度为%f",h1);
        }
        else
        {
    
        d5=min(d1,d2);
        d6=min(d3,d4);
        d7=min(d5,d6);
        h2=10;
        printf("该塔的高度为%f",h2);
    }
        }
    实验代码Ⅱ:
    #include<stdio.h>
    #include<math.h>
    main()
    {
    
        float h,x1,y1,x2,y2,x3,y3,x4,y4,x,y,d1,d2,d3,d4,d5,d6,d7,h1;
        x1=2,x2=2,x3=-2,x4=-2,y1=2,y2=-2,y3=2,y4=-2;
        printf("请输入一个点(x,y)和塔的高度h:
    ");
        scanf("%f,%f,%f",&x,&y,&h);
        d1=sqrt((x-x1)*(x-x1)+(y-y1)*(y-y1));
        d2=sqrt((x-x2)*(x-x2)+(y-y2)*(y-y2));
        d3=sqrt((x-x3)*(x-x3)+(y-y3)*(y-y3));
        d4=sqrt((x-x4)*(x-x4)+(y-y4)*(y-y4)); 
        if(d1>1&&d2>1&&d3>1&&d4>1)
        {
    	    h1=0;
    	    printf("该塔的高度为%f",h1);
        }
        else
    	    printf("该塔的高度为%f",h);
    
        }
    ③问题分析:审题不仔细,在使用类似于根号这类函数时一定要输入头文件#include<math.h>,对于没有头文件的一些函数,类似于min,max函数,需要在使用之前进行定义。
    

    三、实验小结

    收获与不足:失败是成功之母,经过几天对博客园的使用,相比于上次使用博客园书写实验报告,这次比较顺手。在实验过程中,学会使用if,else语句、min,max函数的定义方法以及三目运算符的使用方法,又一次刷新了自己对C语言的看法。在实验操作过程还是一些小细节不能完全掌握到位。

  • 相关阅读:
    java泛型
    枚举类与可变参数
    JAVA反射实现JdbcTemplate中查询方法 返回的结果集自动封装成对应的JAVABean对象
    JAVA反射之内省
    JAVA反射基础
    java反射实现将HashMap中的键值对封装为一个JavaBean对象
    hexo配置发布至ssh非22端口服务器
    Exception -LoggerFactory is not a Logback LoggerContext but Logback is on the classpath
    去重优化
    两个域名指向同一服务器的非80端口
  • 原文地址:https://www.cnblogs.com/l-w-8-5-7/p/12483244.html
Copyright © 2020-2023  润新知