第五章:函数
【例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); }
心得:这章是较为复杂的程序设计,需要细心去体会,去理解。