/*
*
* Copyright (c) 2009-~ Niu Tao
*
* This source code is released for free distribution under the terms of the
* GNU General Public License
*
* Author: Zhao Gejuan<[email protected]>
* Created Time: 2010年08月10日 星期二 17时06分12秒
* File Name: func.c
*
* Description:
*/
#include <stdio.h>
#include <stdlib.h>
typedef struct{
int max, min;
}Data;
int MIN; /*全局变量*/
int fun1(int a[],int n)
/*通过return返回最大值,通过全局变量MIN带回最小值*/
{
int i,max;
max=MIN=a[0];
for(i=0;i<n;i++)
{
if(a[i]>max) max=a[i];
if(a[i]<MIN) MIN=a[i];
}
return max;
}
int *fun2(int a[],int n)
/*最大最小值放到数组b中通过return 返回*/
{
static int b[2]; /*此时该数组用static 关键子申明,则其生存其和全局变量相同,变量的值在两次调用之间一直被保持着"*/
b[0]=b[1]=a[0];
int i;
for(i=1;i<n;i++)
{
if(a[i]>b[0]) b[0]=a[i];
if(a[i]<b[1]) b[1]=a[i];
}
return b;
}
Data *fun3(int a[],int n)
/*将大小值放在结构体指针p中,通过return 返回*/
{
Data *p;
int i;
p=(Data *)malloc(sizeof(Data)); //指针初始化
p->max=p->min=a[0];
for(i=1;i<n;i++)
{
if(a[i]>p->max) p->max = a[i];
if(a[i]<p->min) p->min = a[i];
}
return p;
}
Data fun4(int a[],int n)
/*将大小值放在结构体p中,通过结构体p带回返回*/
{
Data p;
int i;
p.max=p.min=a[0];
for(i=1;i<n;i++)
{
if(a[i]>p.max) p.max = a[i];
if(a[i]<p.min) p.min = a[i];
}
return p;
}
void fun5(int a[],int n,int *p, int *q)
/*用指针带回返回值,指针p指向最大值,指针q指向最小值*/
{
int i;
*p=*q=a[0];
for(i=1;i<n;i++)
{
if(*p<a[i])
*p=a[i];
if(*q>a[i])
*q=a[i];
}
}
int main(int args, char *argv[])
{
int a[10] ={1,3,9,8,4,2,5,0,7,6},max,*p;
Data *q;
Data z;
int *x,*y;
x=(int *)malloc(sizeof(int *));
y=(int *)malloc(sizeof(int *));
max = fun1(a,10);
printf("max = %d min=%d\n",max,MIN);
p=fun2(a,10);
printf("max = %d min=%d\n",p[0],p[1]);
q=fun3(a,10);
printf("max=%d min =%d\n",q->max,q->min);
z=fun4(a,10);
printf("max =%d min=%d \n",z.max,z.min);
fun5(a,10,x,y);
printf("max = %d min=%d\n",*x,*y);
free(q); q=NULL;
free(x); x=NULL;
free(y); y=NULL;
return 0;
}
|