第五章:函数

【例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\n",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\n",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("\n");
        }
    }
    printf("\n");
}
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('\n');
   }
}

 

【例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\n",result_real,result_imag);
    complex_prod(real1,imag1,real2,imag2);
    printf("product of complex is %f+%fi\n",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\n",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\n",i,fact_s(i));

    return 0;
}
double fact_s(int n)
{
    static double f=1;
    f=f*n;

    return(f);
}

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

 

 

 

posted @ 2013-10-07 21:19  在人间·在天堂  阅读(1755)  评论(0编辑  收藏  举报