zoukankan      html  css  js  c++  java
  • 第六章 函数与宏定义

    第四次实验报告

    实验项目:

    1.函数的定义和调用
    2.模块化程序设计

    姓名:魏志远      实验地点: 教学楼514教室       实验时间:4月30日

    一、实验目的与要求

    1.函数的定义和调用

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

    2.模块化程序设计

    ·掌握C语言中定义函数的方法。
    ·掌握通过“值传递”调用函数的方法。

    二丶实验内容

    6.4.1实验练习

    1.问题描述

    一:编写程序,从键盘输出三角形的3条边,调用三角形面积函数求出其面积,并输出结果。
    二:编写函数,求出从主调函数传来的数值i的阶乘值,然后将其传回主调函数并输出。
    三:编写程序,从键盘输入两个整数,调用gcd()函数求它们的最大公约数,并输出结果。
    四:输入函数n,输出高度为n的等边三角形。

    2.实验代码


     
    #include <stdio.h>
    #include <math.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;
        printf("请输入三角形的三条边:");
        scanf("%f%f%f",&x,&y,&z);
        if(x+y>z||x-y<z)
        {
            ts=area(x,y,z);
            printf("area=%f",ts);
        }
        else
        {
            printf("输入数据有误!");
        }
    }
     

    #include <stdio.h>
    long function(int i)
    {
        static int f=1;
        f=f*i;
        return (f);
    }
    main()
    {
        int i,n,p;
        printf("请输入需要计算阶乘的数:");
        scanf("%d",&n); 
        for(i=1;i<=n;i++)
        {
            p=function(i);
            printf("%d的阶乘是:%d
    ",i,p);
        }
        
    } 

    #include<stdio.h>
    int gcd(int a,int b)
    {
        int t,r;
        if(a<b)
        {
            t=b;
            b=a;
            a=t;
        }
        r=a%b;
        while(r!=0)
        {
            a=b;
            b=r;
            r=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);
    }

    #include <stdio.h>
    void trangle(int n)
    {
        int i,j,k;
        for(i=1;i<=n;i++)
        {
            for(j=1;j<n+1-i;j++)
            {
                printf(" ");
            }
            for(k=1;k<=i*2-1;k++)
            {
                printf("*");
            }
            printf("
    ");
        }
    }
    main()
    {
        int n;
        printf("请输入一个整数:");
        scanf("%d",&n);
        trangle(n); 
    }
    3.问题分析

    对于函数的调用时,静态常量和动态常量理解不清,导致不知道上面时候是静态常量,会保留下去不理解,所以不能编写正确代码。

    6.4.2实验练习

    1.问题描述

    一:若正整数A的所有因子(包括1但不包括自身,下同)之和为B,而B的因子之和为A,则称A和B为一对亲密数。求500以内的所以亲密数

    2.实验代码


    #include <stdio.h>
    int facsum(int m)
    {
        int sum=1,f=2;
        while(f<=m/2)
        {
            if(m%f==0)
            {
                sum=sum+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.问题分析:编写代码时忘记进行二次定义,所以导致结果出不来。

    三、实验小结

    收获:对于函数的定义和函数的调用有了一定的了解,知道函数的定义可以使代码变得清晰易懂。并且,对于细节的把控有了一定的掌握和注意。

    不足:不明白函数定义时常量是何种常量,静态常量和动态常量有细微而又宏大的差距,导致结果完全不同。

    要去加深对于基本概念和理论的理解,在理解后去亲手尝试,才能更加深刻。

  • 相关阅读:
    java 显示当前的时间
    java RandomAccessFile 向文件中写入数据,怎么样不覆盖原来的数据
    NCARG 6.2.0 安装方法
    【转】在Fedora 9下用IFC安装MM5
    Linux下GrADS的安装
    我的博客园
    nyist 2 括号配对问题
    nyist 100 1的个数
    进制(堆栈)
    进制
  • 原文地址:https://www.cnblogs.com/1820678379wzy/p/10817608.html
Copyright © 2011-2022 走看看