函数定义
#include<stdio.h>
double cylinder(double r,double h){
double result;
result=3.1415926*r*r*h;
return result;
}
int main()
{
double r,h;
double volume;
scanf("%lf%lf",&r,&h);
volume=cylinder(r,h);
printf("volume=%f",volume);
}
函数包括库函数和自定义函数,例如scanf()printf()为库函数而cylinder()是自定义函数,需要用户自己定义。函数定义一般形式为
函数类型 函数名(形式参数表) //函数首部
{
函数实现过程 //函数体
}
函数首部由函数类型,函数名和形式参数表(形参表)位于函数定义第一行,函数名是函数体的成为,需要一个合法的标识符表示。形参表中各个形参之间用逗号分开,每个形参前面类型必须写明。形参数量不限。
格雷格利公式求近似值
#include<stdio.h>
#include<math.h>
double funpi(double e)
{
int denominator,flag;
double sum,item;
denominator=flag=1;
sum=0;
item=1;
while(fabs(item)>=e){
item=1.0/denominator*flag;
sum=sum+item;
denominator=denominator+2;
flag=-flag;
}
return sum*4;
}
int main()
{
double e,pi;
scanf("%lf",&e);
pi=funpi(e);
printf("pi=%f\n",pi);
}
#include<stdio.h>
#include<math.h>
int prime(int m)
{
int i;
if(m==1)
return 0;
for(i=2;i<=sqrt(m);i++){
if(m%i==0)
return 0;
}
return 1;
}
int main()
{
int m,count;
count=0;
for(m=2;m<=100;m++){
if(prime(m)!=0){
printf("%6d",m);
count++;
if(count%10==0)
printf("\n");}
}
}
数字金字塔(不返回结果的函数)
#include<stdio.h>//输出数字金字塔
void pyramid(int n);//函数声明
int main(void)
{
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');
}
}
之前计算的函数都是起计算或者判断作用,最终有一个函数结果返回。在很多程序设计中,调用函数不是为了某个结果,只是产生某些作用,具有类似的函数在有些语言中称为过程。在不返回结果的函数定义中void不能省略,否则函数类型默认为int。