• 第五章:函数


    【例5-1】要求定义和调用函数cylinder(r,h)计算圆柱体的体积。

    /*计算圆柱体积*/
    #include<stdio.h>
    int main(void)
    {
        double height,radius,volume;
        double cylinde(double r,double h);
    
        printf("Enter radius and height:");
        scanf("%lf%lf",&radius,&height);
        volume=cylinde(radius,height);
        printf("Volume=%.3f
    ",volume);
    
        return 0;
    }
    
    double cylinde(double r,double h)
    {
        double result;
    
        result=3.1415926*r*r*h;
    
        return result;
    }

    【例5-2】定义一个判断奇偶数的函数even(n),当n为偶数时返回1,否则返回0.

    【例5-3】输入精度e,使用格雷戈里公式求π的近似值,精确到最后一项的绝对值小于e。

    /* 用格雷戈里公式计算π的近似值,精度为e */
    #include<stdio.h>
    #include<math.h>
    int main(void)
    {
        double e,pi;
        double funpi(double e);
    
        printf("Enter e:");
        scanf("%lf",&e);
        pi=funpi(e);
        printf("pi=%f
    ",pi);
    
        return 0;
    }
    
    double funpi(double e)
    {
        int denominator,flag;
        double item,sum;
    
        flag=1;
        denominator=1;
        item=1.0;
        sum=0;
    
        while(fabs(item)>=e){
            item=flag*1.0/denominator;
            sum=sum+item;
            flag=-flag;
            denominator=denominator+2;
        }
    
        return sum*4;
    }

    【例5-4】求100以内的全部素数,每行输出10个。

    /* 使用函数求100以内的全部素数 */
    #include<stdio.h>
    #include<math.h>
    int main(void)
    {
        int count,m;
        int prime(int m);
    
        count=0;
        for(m=2;m<=100;m++){
            if(prime(m)!=0){
                printf("%6d",m);
                count++;
                if(count%10==0) printf("
    ");
            }
        }
        printf("
    ");
    }
    int prime(int m)
    {
        int i,n;
    
        if(m==1)return 0;
        n=sqrt(m);
        for(i=2;i<=n;i++)
            if(m%i==0){
                return 0;
            }
        return 1;
    }                                                                                       

    【5-5】输出5行数字金字塔。

    /*输出数字金字塔*/
    #include<stdio.h>
    int main(void)
    {
        void pyramid(int n);
    
    
        pyramid(5);
    
    
        return 0;
    }
    void pyramid(int n)
    {
       int i,j;
    
       for(i=1;i<=n;i++){
           for(j=1;j<=n-i;j++)
               printf(" ");
           for(j=1;j<=i;j++)
               printf("%d",i);
           putchar('
    ');
       }
    }

    【例5-6】分别输入2个复数的实部与虚部,用函数实现计算2个复数之和与之积。

    #include<stdio.h>
    float result_real,result_imag;
    int main(void)
    {
        float imag1,imag2,real1,real2;
    
        void complex_prod(float real1,float imag1,float real2,float imag2);
        void complex_add(float real1,float imag1,float real2,float imag2);
    
        printf("Enter 1st complex number(real and imaginary):");
        scanf("%f%f",&real1,&imag1);
        printf("Enter 2nd complex number(real and imaginary):");
        scanf("%f%f",&real2,&imag2);
        complex_add(real1,imag1,real2,imag2);
        printf("addition of complex is %f+%fi
    ",result_real,result_imag);
        complex_prod(real1,imag1,real2,imag2);
        printf("product of complex is %f+%fi
    ",result_real,result_imag);
    
        return 0;
    }
    void complex_add(float real1,float imag1,float real2,float imag2)
    {
        result_real=real1+real2;
        result_imag=imag1+imag2;
    }
    void complex_prod(float real1,float imag1,float real2,float imag2)
    {
        result_real=real1*real2-imag1*imag2;
        result_imag=real1*imag2+real2*imag1;
    }

    【例5-7】全局变量定义。

    #include<stdio.h>
    int x;
    int f( );
    int main(void)
    {
        int a=1;
    
        x=a;
        a=f( );
        {
            int b=2;
            b=a+b;
            x=x+b;
        }
        printf("%d%d",a,x);
    
        return 0;
    }
    
    int f( )
    {
        int x=4;
    
        return x;
    }

    【例5-8】用函数实现财务现金记账。

    #include<stdio.h>
    float cash;
    int main(void)
    {
        int choice;
        float value;
        void income(float number),expend(float number);
    
        cash=0;
        printf("Enter operate choice(0--end,1--income,2--expend):");
        scanf("%d",&choice);
        while(choice!=0){
            if(choice==1||choice==2){
                printf("Enter cash value:");
                scanf("%f",&value);
                if(choice==1)
                    income(value);
                else
                    expend(value);
                printf("current cash:%.2f
    ",cash);
        }
        printf("Enter oprate choice(0--income,2--expend):");
        scanf("%d",&choice);
    }
    
    return 0;
    }
    
    void income(float number)
    {
        cash=cash+number;
    }
    
    void expend(float number)
    {
        cash=cash-number;
    }

    【例5-9】输入正整数n,输出1!~n!的值。要求定义并调用含静态变量的函数fact_s(n)计算n!。

    #include<stdio.h>
    double fact_s(int n);
    int main(void)
    {
        int i,n;
        printf("Input n:");
        scanf("%d",&n);
        for(i=1;i<=n;i++)
            printf("%3d!=%.0f
    ",i,fact_s(i));
    
        return 0;
    }
    double fact_s(int n)
    {
        static double f=1;
        f=f*n;
    
        return(f);
    }

    心得:这章是较为复杂的程序设计,需要细心去体会,去理解。

  • 相关阅读:
    JS判断对象中是否存在某参数
    JS通过url下载文件
    .NET CORE LinQ查询中计算时间差
    C# 判断某个时间是星期几
    C#数组去重
    python Tank
    kubeflannel.yml Tank
    片言只语 Tank
    other Tank
    ERROR大集合 Tank
  • 原文地址:https://www.cnblogs.com/zhangling213549/p/3356071.html
Copyright © 2020-2023  润新知