函
/*阶乘*/
#include<stdio.h>
/*函数的构成,有返回值,参数*/
double fun(int x)// 针对x数值大的,int 65535
{
int i;
double f=1.0;//同理,double赋值1.0
for(i=1;i<=x;i++)
f*=i;
return(f);
}
int main()
{
int m;
double count;
printf("输入阶乘的值:");
scanf("%d\n",&m);
count= fun(m);
printf("%d阶乘的值:%.2f\n",m,count);//%.2f,double位%f 保留小数点后2位
return 0;
}
/*比较大小,数可多个*/
#include<stdio.h>
float fun(float x,float y)// 针对x,y数值位小数的
{
float i;
if(x>y)
i=x;
else
i=y;
//i=x>y?x:y;
return(i);
}
int main()
{
float x,y,count;
printf("输入比较的值:");
scanf("%f%f\n",&x,&y);
count= fun(x,y);
printf("值:%f\n",count);
//count= fun(9,fun(x,y));// 比较3个数大小,聪明
return 0;
}
/*求输入n个数的平均数*/
#include<stdio.h>
void fun(int x)// 无返回值
{
int i,x;
float sum,ave;
printf("计算n个整数:\n",x);// 具体值
for(i=1;i<=x;i++)
{
scanf("%d",&X);// 不需要数组,一个个读进去就加
sum+=x;
}
ave=sum/x;
printf("ave=\n",ave);
}
int main()
{
int n;
printf("计算n个整数的平均数,输入n:\n");// 个数
scanf("%d",&n);// 读进去
fun(n);
return 0;
}
数组元素作为函数参数
利用循环首先要一一读取元素
数组名作为函数参数
/*冒泡排序*/
#include<stdio.h>
#define N 4
void sort(int a[N])// 形参数组不能指定长度,可专门定义形参,比宏定义好sort(int a[],b)
{
int i,t,j;
int a[N];
for(i=0;i<=N;i++)
scanf("%d",&a[i]);// 存进数组a中
// a和下面的(n-1)个数比,则,
for(i=0;i<N-1;i++)// N-1重要
for(j=0;j<N-1-i;j++) // N-1重要 先内部比完,注意次数,第i趟比较N-i趟
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
int main()
{
int a[N],i;
printf("排序前的数组\n");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
sort(a);
printf("排序后的数组(小到大)\n");
for(i=0;i<N;i++) // 一定要注意i<N
printd\f("%d",a[i]);
return 0;
}
函数的嵌套调用
递归函数:
一个函数在他的函数体内直接或间接调用他本身
分治算法