C语言:数组名作为函数参数


任务代码:

数组多数字求最大公约数:

#include <stdio.h>

#define N 8

int gcd(int,int);

int main()
{
int a[N]={26,1007,956,705,574,371,416,517};
int b[N]={994,631,772,201,262,763,1000,781};
int c[N];
int i;

for(i=0;i<N;i++)
{
c[i]=gcd(a[i],b[i]);//数组元素作为函数参数
}
printf("最大公约数分别是:");
for(i=0;i<N;i++)
{
printf("%d,",c[i]);
}
printf("\n");
return 0;
}

int gcd(int m,int n)
{
int r;
while((r=m%n))
{
m=n;
n=r;
}
return n;
}

数组内存放10个学生的成绩并求平均值:

#include <stdio.h>

#define N 10

float averageMark(int array[],int n)
{
int i,sum=array[0];
float aver;
for(i=1;i<n;i++)
{
sum=sum+array[i];
}
aver=sum/n;
return aver;
}

int main()
{
int score[N]={12,23,34,56,43,32,12,34,56,98};
float aver;
aver=averageMark(score, 10);//一个是数组名作为实际参数,一个是数组元素个数
printf("平均成绩为:%.2f",aver);
return 0;
}


向量数乘和:

#include <stdio.h>

int p(int a,int x[],int b, int y[],int n);


int main()
{
int s1,s2;
int d[]={1,3,5,2,6,8,3};
int v[]={1,3,2,4,6,5,7,4,7,8};
int w[]={2,3,4,6,2,3,6,8,9,9};
s1=p(1,d,2,v,7);
s2=p(3,v,4,w,9);

printf("向量1的结果为:%d\n",s1);
printf("向量2的结果为:%d\n",s2);
return 0;
}

int p(int a,int x[],int b, int y[],int n)
{
int sum=0,i;
for(i=0;i<=n;i++)//注意这里必须是<=因为最后要算到第n项
{
sum+=a*x[i]+b*y[i];
}
return sum;
}

专门用于排序的函数:

#include <stdio.h>
//使用冒泡排序法和数组指针来是数组内的数据排序

#define N 10

void bubblesort(int array[])
{
int i,j;
int t;
for(i=0;i<N-1;i++)
{
for(j=0;j<N-i-1;j++)
{
if(array[j]>array[j+1])
{
t=array[j+1];
array[j+1]=array[j];
array[j]=t;
}
}
}
}

int main()
{
int a[N]={3,-9,2,5,7,98,-1,-5,100,32};//定义一个无序数组
bubblesort(a);//冒泡排序a数组
printf("整理后的数组为:");
int i;
for(i=0;i<N;i++)
{
printf("%d,",a[i]);
}
printf("\n");
return 0;
}



执行情况:

第一题:


第二题:


第三题:



第四题:



知识总结:




数组的名称就是代表指针!指针的改变可以是元数组的值改变!



智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
China Scenic Area
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告