数组与函数的详解(C语言)

 2023-03-10 12:18:27  阅读 0

一、比较数组元素与数组名作函数参数 (数组元素作为参数)

值传递:当我们想要调用一个函数,并且将数组的某个传进去,那么我们推荐·1是使用值传递。

void swap( int x,int y )
{   int z;
    z=x;      x=y;      y=z;
}
main( )
{   int a[2]={1,2};
    swap(a[0],a[1]);
    printf("a[0]=%d\na[1]=%d\n",a[0],a[1]);
}

从代码很难去理解程序运行的真正过程,那么我们看一张原理图:

地址传递:当在函数中使用该数组,数组的改变也会影响到函数外的数组变量。

void swap( int x[] )
{   int z;
    z=x[0];     x[0]=x[1];     x[1]=z;
}
main( )
{   int a[2]={1,2};
    swap(a);
    printf("a[0]=%d\na[1]=%d\n",a[0],a[1]);
}

接下来我们看一道例题:有一维数组score,内放10个学生成绩,求平均成绩。

#include <stdio.h>
 float average(int stu[10], int n);
 void main()
 { int score[10], i;
    float   av;
    printf("Input  10  scores:\n");
    for( i=0; i<10; i++ )
        scanf("%d", &score[i]);
    av=average(score,10);
    printf("Average  is:%.2f", av);
 }
float   average(int stu[10], int n)
 { int i;
    float av,total=0;
    for( i=0; i<n; i++ )
        total += stu[i];
    av = total/n;
    return av;
 }

说到数组肯定少不了排序:数组排序。(选择排序)

所谓选择排序(以5个数为例)就是先将5个数中最小的数与a[0]对换;再将 a[1]到a[4]中最小的数与a[1]对换……每比较一轮,找出一个未经排序的数中最小的一个。共比较4轮。

那我们接下来看一遍代码是如何实现的吧:

#include<stdio.h>
int main()
{   int a[5],i;
     for(i=0;i<5;i++)
	scanf("%d",&a[i]);
    sort(a,5);
    for(i=0;i<10;i++)
         printf("%d ",a[i]);
    printf("\n");
    return 0;
}
void sort(int  array[],int  n)
{    int i,j,k,t,min;
     for(i=0;i<n-1;i++)
     {     min=array[i];
            k=i;
	 for(j=i+1;j<n;j++)
	    if(array[j]<min)   
   {k=j;min=array[j];}
	 t=array[i];
	 array[i]=array[k];
	 array[k]=t;
      }
}

使用sort自定义函数,对每两个数字进行比较,通过for循环遍历数组的每一个元素,这里的传递参数就是值传递。

标签:

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码