zoukankan      html  css  js  c++  java
  • 第四次试验报告

    第六章实验报告

     

    C程序设计实验报告

    实验项目:函数的定义和调用

    1、编写由三角形三边求面积的函数
    2、编写求N阶乘的函数
    3、求两个整数的最大公约数
    4、打印输出指定图形

    姓名:林胜臣       实验地点: 514实验室       实验时间:2019年4月30日

    一、实验目的与要求

    1.编写由三角形三边求面积的函数

    • 调用area()函数求三角形的面积
    • 在求面积函数运用海伦公式

    2、编写求N阶乘的函数

    • 定义符号常量
    • 使用长整型变量存放累乘积
    • 使用全局变量存放累乘积

    3、求两个整数的最大公约数

    • 调用bcd()函数求两个整数的最大公约数
    • 掌握辗转相除法求两个整数的最大公约数

    4、打印输出指定图形

    • 调用trangle()函数输出三角形
    • trangle()函数中用for循环的嵌套输出指定的结果

    5.模块化程序设计

    • 编制一个函数facsum(m),返回给定正整数m的所有因子(包括1但不包括自身)之和
    • 编制一个主函数,调用(1)中的函数facsum(),寻找并输出500以内的所有亲密数对
    • 输出要有文字说明。在输出每对亲密数时,要求从小到大排列并去掉重复的亲密数对
    • 所有函数中的循环均为for循环

    二、实验内容

    6.4.1.1.编写由三角形三边求面积的函数

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

    2.流程图:

    (1)

    (2)

    3.实验代码:

    复制代码
    #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);
     } 
     main()
     {
         float x,y,z,ts;
         scanf("%f,%f,%f",&x,&y,&z);
         ts=area(x,y,z);
         if(x+y>z&&x+z>y&&z+y>x)
         printf("area=%f
    ",ts);
         else printf("data error!");
     }
    复制代码

    4.问题分析: 其实这个题目不难,关键在于我们需要解决“三条边可以构成三角形”需要满足的调件,然后就是要能看懂书上流程图的条件,最后就是我们要会用数学公式来解决问题。

    5.运行效果:

    6.4.1.2、编写求N阶乘的函数

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

    2.流程图:

    3.实验代码:

    复制代码
    #include<stdio.h>
    #define N 5
    long function(int i)
    {
        static long f=1;
        if(i>1) f=i*function(i-1);
        else return 1;
        return f;
    }
    main()
    {
        long product;
        int i;
        for(i=1; i<=N;i++)
        {
            product=function(i);
            printf("%d的阶乘是:%ld
    ",i,product);
        }
    }
    复制代码

    4.问题分析:此处运用了函数的调用,与课堂上的例题相似,帮助更好的运用函数的调用。

    5.运行效果:

    6.4.1.3、求两个整数的最大公约数

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

    2.流程图:

    3.实验代码:

    复制代码
    #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;
    }
    main()
    {
        int x,y;
        int fac;
        printf("please input two integers:");
        scanf("%d,%d",&x,&y);
        fac=gcd(x,y);
        printf("The great common divisor is:%d",fac);
        
    }
    复制代码

    4.问题分析:最大的问题就是怎么求最大公约数,用流程图做辅助,此题没有问题。

    5.运行效果:

    6.4.1.4、打印输出指定图形

    1.问题的描述:输入整数n,输出高度为n的等边三角形,当n的值为5,等边三角形为:

         *

        ***

       *****

      *******

     **********

    2.流程图:

    3.实验代码:

    复制代码
    #include<stdio.h>
    trangle(int n)
    {
        int i,j;
        for (i=0;i<n;i++)
        {
            
            for (j=0;j<n-i;j++)
            {
                printf(" ");
            }
            
            for (j=0;j<=2*i;j++)
            {
                printf("*");
            }
            printf("
    ");
            
        }
    }
    main()
    {
        int n;
        printf("请输入一个整数:");
        scanf("%d",&n);
        printf("
    ");
        trangle(n); 
    }
    复制代码

    4.问题分析:这个三角形的*的个数有规律可寻,总是下排是上排的2n-1倍

    5.运行效果:

    6.4.2.1模块化程序设计

    1,问题描述:若正整数A的所有因子(包括1但不包括自身,下同)之和为B,而B的因子之和为A,则称A和B为一对亲密数。例如,6的因子之和为1+2+3=6,因此6与6为一对亲密数(即6自身构成一对亲密数);又如,220的因子之和为1+2+4+5+10+11+20+22+44+55+110=284,而284的因子之和为1+2+4+71+142=220,因此,220与284为一对亲密数。
    求500以内的所有的亲密数对。

    2,流程图:

    3.实验代码:

    复制代码
    #include<stdio.h>
    int facsum(int m)
    {
        int sum=1,f=2;
        while(f<=m/2)
        {
            if(m%f==0)
            sum=sum+f;
            f++;
        }
        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++;
        }
    }
    复制代码

    4.问题分析:在facsum(m)函数中,求出m的所有因子,并将它们的和作为返回值,看返回后得出的第二个因子之和是否与本式的因子之和相等,如果相等则输出两个数。

    5.运行效果:

    三、实验小结:

      重点还是函数的调用。函数的调用也是在实践中得到一定的学习与理解,课前预习也确实起到了很大的作用。

  • 相关阅读:
    Core Animation 文档翻译—附录C(KVC扩展)
    Core Animation 文档翻译—附录B(可动画的属性)
    Core Animation 文档翻译—附录A(Layer样貌相关属性动画)
    Core Animation 文档翻译 (第八篇)—提高动画的性能
    Core Animation 文档翻译 (第七篇)—改变Layer的默认动画
    Core Animation 文档翻译 (第六篇)—高级动画技巧
    Core Animation 文档翻译 (第五篇)—构建Layer的层次结构
    用Markdown快速排版一片文章
    Core Animation 文档翻译 (第四篇)—让Layer的content动画起来
    Core Animation 文档翻译(第三篇)—设置Layer对象
  • 原文地址:https://www.cnblogs.com/ganyilinshengchen/p/10817568.html
Copyright © 2011-2022 走看看