• C程序设计实验报告


    实验项目:函数与宏定义

    姓名:涂宇昌  实验地点:家  实验时间:2020/4/26

    一、实验目的与要求

    1、熟练地掌握函数的定义方法和调用规则。
    2、掌握再 C语言程序种主调函数和被条用函数之间进行数据传递的规则。
    3、了解函数的返回值及其类型,并正确使用它
    4、了解局部变量和全局变量的作用城及它们与存储分类的关系,理解变量的存在性和可见性的概念
    5、练习递归函数的使用

    二、实验内容

    1、实验练习:6.3.1-1

    1问题的简单描述:编写程序,从键盘输入三角形的3条边,调用三角形函数求出其面积,并输出结果。

    2实验代码:

    #include<math.h>
    #include<stdio.h>
    float area(float a,float b,float c)
    {
        float s,p,area;
        s=(a+b+c)/2;
        p=s*(s-a)*(s-b)*(s-c);
        area=sqrt(p);
        return (area);
     } 
    void main()
    {
         float a,b,c,ts;
         printf("请输入三角形的三边;
    ");
         scanf("%f%f%f,&a,&b,&c");
         ts=area(a,b,c);
         if(a+b>c&&a+c>b&&b+c>a)
         printf("area=%f
    ",ts);
         else printf("Date error!");
    }

    3问题分析:要用math.h,海伦公式求面积方程:s=(a+b+c)/2

    2、实验练习:6.3.1-2

    1问题的简单描述:编写函数,求出从主调函数传来的数值i的阶乘值,然后将其传回主调函数并输出

    2实验代码:

    #include<stdio.h>
    #define N 5
    long function(int i)
    {
        static long f=1;
        f=f*i;
        return f;    
    }
    void main()
    {
        long product;
        int i;
        for(i=1;i<=N;i++)
        {
            product=function(i);
            printf("%d的阶乘是%d
    ",i,product);
        }
    }

    3问题分析:按照书上的来,再多看看同学的就好了

    3、实验练习:6.3.1-3

    1问题的简单描述:编写程序,从键盘输入两个整数,调用gdc()函数求他们的最大公约数,并输出结果。

    2实验代码:

    #include<stdio.h>
    int gcd(int a,int b)
    {
        int temp;
        int remainder;
        if(a<b)
        {
            temp=a;
            a=b;
            b=temp;
        }
        remainder=a%b;
        while(remainder!=0)
        {
            a=b;
            b=remainder;
            remainder=a%b;
        }
        return b;
    }
    void main()
    {
        int x,y;
        int fac;
        printf("请输入两个整数:");
        scanf("%d,%d",&x,&y);
        getchar();
        fac=gcd(x,y);
        printf("The great common divisor is%d",fac); 
    }

    3问题分析:temp可以用作a,b交换的中介。相除的最大公约数表示为:a=b;b=remainder;remainder=a%b

    4、实验练习:6.3.1-4

    1问题的简单描述:输入整数n,输出高度为n的等边三角形。

    2实验代码:

    #include<stdio.h>
    void trangle(int n)
    {
        int i,j;
        for(i=1;i<=n;i++)
        {
            for (j=0;j<n-i;j++)
            printf(" ");
            for (j=0;j<2*i-1;j++)
            printf("*");
            putchar ('
    ');    
        }
        
    }
    void main()
    {
        int n;
        printf("Please input int n:
    ");
        scanf("%d",&n);
        printf("
    ");
        trangle(n);
    }

    3问题分析:普通三角形,理清何时输出*即可

    5、实验练习:6.3.2-1

    1问题的简单描述:若正整数 A 的所有因子( 包括 1 但不包括自身,下同)之和为 B ,而 B 的因子之和为 A,则称 A 和 B 为一对亲密数。例如,6的因子之和为1+2+3=6,因此6与6为一对亲密数。求出500以内的所有亲密数对。

    2实验代码:

    #include<stdio.h>
    facsum(int m)
    {
        int sum=1,f=2;
        while (f<=m/2)
        {
            if (m%f==0)
            sum=sum+f;
            f=f+1;
        }
        return sum;
    }
    main()
    {
        int m=3,n,k;
        while (m<=500)
        {
            n=facsum(m);
            k=facsum(n);
            if (m==k&&m<=n)
            printf("%d %d
    ",m,n);
            m++;
        }
    }

    3问题分析:按照模板一样中间加上void,会得不出结果,记得去掉。要了解facsum是什么意思,for循环从m=3才开始调用facsum。

    6、实验练习:6.3.3-1

    1问题的简单描述:编写程序,分别从键盘输入数据x和y,计算x的y次幂并输出。

    2实验代码:

    #include"stdio.h"
    long getpower(int x,int y)
    {
        if(y==1)
        return x;
        else
        x=x*getpower(x,y-1);
    }
    main()
    {
        int num,power;
        long answer;
        printf("请输入一个数:");
        scanf("%d",&num);
        printf("输入幂次方:") ;
        scanf("%d",&power);
        answer=getpower(num,power);
        printf("%d^%d=%1d
    ",num,power,answer); 
    }

    3问题分析:这波我是真的裂开了,幸好看了同学的,调用的递归函数方程为:x=x*getpower(x,y-1);

    7、实验练习:6.3.3-2

    1问题的简单描述:用递归方法计算学生的年龄。已知第一位学生年龄最小为10岁,其余学生一个比另一个大2岁,求第5位学生的年龄。

    2实验代码:

    #include<stdio.h>
    int age(int n)
    {
        int c;
        if (n==1)
        c=10;
        else
        c=age(n-1)+2;
        return c;
     } 
     main()
     {
         int n=5,sage;
         sage=age(n);
         printf("第%d位学生的年龄为:%d
    ",n,sage);
     }

    3问题分析:递归公式sage=age(n)

    三、实验小结

           实验报告圆满结束。非常感谢此次会作业的同学,谢谢他们对我这次作业编程过程中的帮助。我们有讨论、有质疑、有对喷、有理解,却没有打架、我很庆幸,选择了优秀而又负责的同学。同学们编程思维都很好,办事有效率,很负责,对我的很多问题都能予以分析、理解与肯定,例如:输入数据的合理性、函数与宏定义的应用、界面的美观方便;我们一起讨论,大力帮助。
      在编码过程中,看别人实验报告可以让你很快发现错误,并且在发现问题后能够更快的提出解决方案,通过查看,我编写代码的质量以及速度都有着很大的提高。除此之外,C语言程序设计使我的思维方式也有所转变,在今后的编程中,我会增加对函数与宏定义的使用。

     

  • 相关阅读:
    枚举三部曲之一
    Java的版本历史与特性
    Oracle备份恢复之冷备份恢复与异机还原
    Oracle性能优化之普通用户使用dbms_xplan包需要有的权限
    一个简单的RMAN自动备份脚本
    Oracle体系结构之Oracle基本数据字典:v$database、v$instance、v$version、dba_objects
    转载:oracle null处理
    Oracle SQL之 序列使用限制
    Oracle的update语句优化研究
    oracle在impdp时报ORA-31655和ORA-39154
  • 原文地址:https://www.cnblogs.com/tuyuchang/p/12782985.html
Copyright © 2020-2023  润新知