• C语言实验报告


    C程序设计实验报告

    实验项目:基本的程序语句实验;程序的简单算法设计实验

    姓名:魏志远    实验地点:第一教学楼514教室    实验时间:3月19号

    一、实验目的与要求

    1、

    (1)掌握C语言几种基本数据类型,如整型(int)、字符型(char)、单精度(float)、双精度(double),以及由这些基本类型构成的常量和变量的使用方法。

    (2)掌握C语言的运算符和表达式的正确使用。

    (3)掌握自增(++)和自减(--)运算符的正确使用。

    (4)掌握基本的输入输出函数scanf()、getchar()、printf()、和putchar()函数的基本功能、调用方法、输入输出格式控制规定。

    (5)能独立编写顺序结构程序并调试通过。

    (6)用表达式语句、输入输出语句解决简单的应用问题并上机实现。

    2、

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

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

    (3)熟练掌握C语言的运算符,即运算符的优先级和结合性、运算规则、运算对象类型

    二、实验内容

    1、实验练习:

    (1)2.3.3 字符和ASCII码

    问题的简单描述:从键盘输入一个大写字母,要求转换成小写字母输出,并输出这个小写字母和相邻的二个字母,以及他们的ASCII码值。

    实验代码:

    #include<stdio.h>
    main()
    {
        printf("请输入一个大写字母;
    ");
        char ch;
        scanf("%c",&ch);
        printf("小写字母为%c %c %c
    ",ch+31,ch+32,ch+33);     
        printf("ASCII码为%d %d %d",ch+31,ch+32,ch+33);
    }

     问题分析:开始想使用自增自减的方式来运算3个相邻的数,然后发现得出的结果与同学间的不一样,得出错误的结果,因此去求教了同学,在得到同学的展示和提醒之后,发现可以在printf输出函数里面给我输出的结果赋值,就可以很容易的得出正确结果。

    (2)2.3.4 运算符与表达式的应用

    问题的简单描述:从键盘输入一个三位整数,将输出的该数的逆序数。例如,输入123,输出321.

    实验代码:

    #include<stdio.h>
    main()
    {
        int a,b,c,x,y;
        printf("请输入一个3位的正整数;
    ");
        scanf("%d",&x);
        a=x/100;
        b=(x%100)/10;
        c=x%10;
        y=c*100+b*10+a;
        printf("%d:%d
    ",x,y);
        return 0;
    }

     问题分析:编写这个程序时没出现什么问题,主要是自己没想到怎么将三位数的位数取出来,老师在我们实验之前给了我们提示,所以便成功了。

    (3)2.3.5 顺序结构应用程序  

    问题的简单描述:编写一个程序,用于医院收费处出纳算账。要求输入所在医院费用(西药房、检查费、材料费、床位费、观察费和护理费),打印出应付钱数,再输入病人所付钱数,打印出应找的钱数。

    实验代码:

    #include<stdio.h>
    int main()
    {
        float x,j,c,hj,fk,zh,cw,g,f;
        printf("输入西药费,检查费,材料费,床位费,观察费,护理费:
    ");
        scanf("%f%f%f%f%f%f",&x,&j,&c,&cw,&g,&f);
        hj=x+j+c+cw+g+f;
        printf("应付款(元):%.2f",hj);
        printf("病人付款(元):");
        scanf("%f",&fk);
        zh=fk-hj;
        printf("计算结果:
    ");
        printf("病人付款=%6.2f元
    应付款=%6.2f元应找回=%6.2f
    ",fk,hj,zh); 
        return 0;
    }

     问题分析:第一次编写的时候,没有在scanf的变量里加入&,导致自己无法编译成功,却自己没有发现问题,在同学帮助下找到问题并解决了。而后又发现在scanf里多加了一个%f,导致输入数据时多了一个字节,按回车没有得到任何东西,删掉之后便可以正常运行。

    2、实验练习:

    (1)3.3.1  制定数学函数的计算方法

    问题的简单描述:有一函数:y=

    实验代码:

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

     问题分析:编译代码时对于if else不熟悉,所以不知道如何下手,编译怎么样的代码才能判断变量的值与常量的大小。经过与同学间的探讨和书籍上的例题的提醒,我便理解了if  else的用法,问题也就成功解决了。

    (2)3.3.2   鸡兔同笼问题。

    问题的简单描述:用流程图描述求解鸡兔同笼问题的算法:已知鸡兔的总头数有h(head),总脚数有f(feet),求鸡兔各多少只?

    实验代码:

    #include<stdio.h>
    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
    ",x,y);
        }
        else
        printf("输入错误!
    ");
    }

     问题分析:编写代码时太依赖书籍,书上的程序模板是if (x>0&&y>0),而真实需要的是if  (h>0&&f>0),像书上模板的代码,编译时不会出现问题,但在运行时却没有结果,得到的一直显示输入错误,与同学商讨后才发现问题,成功解决了。

    (3)3.3.3   根据平面坐标,输出圆塔的高度。

    问题的简单描述:有4个圆塔,圆心分别为(2,2)、(-2,2)、(2,-2)、(-2,-2),圆半径为1。这4个塔的高度均为10m,塔以外无建筑物。先输入任一点的左边,若该点左边在任一圆塔内,则输出圆塔的高度;若该点不在塔外,则输出为0.

    2实验代码:

    #include<stdio.h>
    #include<math.h>
    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)");
        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) 
        h=0;
        printf("该点的高度=%d",h);
    }

     问题分析:在实验时,出现了一个问题,就是对于平方的表达,一般我们了解到的是^2,但是在C语言中却表达不出来,在邀请同学讲解的时候发现了都是(x1-x)*(x1-x)运算,而老师就在网上查找了,发现在C语言中编码要用pow,例如 double a = pow(3.14, 2);  // 计算3.14的平方。所以我发现遇到问题要去动手解决问题。

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

            在大学第一次C语言的实验中,共进行了6个实验。在实验中,也发现了不少的问题。对键盘的不熟练,特别是对于#%&*位置的不了解,每次编写代码的时候都要去慢慢摸索;对于代码的记忆不好,会忘记一些代码怎么输入,导致卡壳;对于细节的把握也不仔细,容易忘掉在语句后面添加分号,在编译时出现错误。但是,这次试验中,收获的还是更多,学到了很多代码和理解了一点优先级,通过自己编写代码,对于记忆也有很大的帮助。最主要的是,学到了去如何找到问题,并且有了解决的方向,可以寻求同学和老师的帮忙,也可以运用百度搜索,遇到问题要及时解决。

  • 相关阅读:
    CSS3 transform 属性(2D,3D旋转)
    django中视图函数中装饰器
    第55课 经典问题解析四
    第52课 C++中的抽象类和接口
    机器学习中的数学(5)-强大的矩阵奇异值分解(SVD)及其应用
    对称矩阵、Hermite矩阵、正交矩阵、酉矩阵、奇异矩阵、正规矩阵、幂等矩阵、合同矩阵、正定矩阵
    机器学习算法之决策树
    python读写csv时中文乱码问题解决办法
    shiro工作过程
    Nginx在windows上安装 及 Nginx的配置及优化
  • 原文地址:https://www.cnblogs.com/1820678379wzy/p/10586670.html
Copyright © 2020-2023  润新知