例1;用函数求整型一维数组中的最大值和最小值。
#include<stdio.h>
#define N 10
void maxmin(int a[],int *p1,int *p2)
{
int i;
*p1 = *p2 = a[0];
for(i = 1;i<N;i++)
{
if(a[i]>*p1)*p1 = a[i];
if(a[i]<*p1)*p1 = a[i];
}
}
int main()
{
int a[N],max,min,i;
printf("please input %d integers:\n",N);
for(i = 0;i<N;i++)scanf("%d",&a[i]);
maxmin(a,&max,&min);
printf("max = %d,min = %d",max,min);
printf("\n");
return 0;
}
例二:写一个函数,删除N元一维数组中小于0的元素。要求函数返回数组中剩余元素的数目。
#include<stdio.h>
#define N 10
int cnp(int *a)
{
int *p,*q;
for(p = q =a;p<a+N;p++)if(*p>0)*q++=*p;
return q-a;
}
int main()
{
int a[N],i,m;
printf("please input %d integers:\n",N);
for(i = 0;i<N;i++)scanf("%d",&a[i]);
m = cnp(a);
for(i = 0;i<m;i++)printf("%4d",a[i]);
printf("\n");
}
例三:插入排序
假设double型数组a[]已经按从小到大的顺序排好。在其中插入一个元素e使得其保持升序。假定shuzu存储容量至少为n+1;
void insert(double a[],int n,double e)
{
int i;
for(i = n-1;i>=0&&a[i]>e;i--)a[i+1]=a[i];
a[i+1] = e;
}