C程序设计
----教学过程篇数组作为函数参数可以将数组作为函数的参数,数组作为函数的参数有以下三种形式:
1.将数组的元素作为函数的参数
2.将数组名作为函数的参数
3.将多维数组作为函数的参数数组作为函数参数
将数组元素作为函数的参数数组元素一般是做函数的实际参数而非形式参数,它作为函数的实际参数来使用与普通变量作为函数的实际参数使用是一样的。
格式如下:
在主调函数中调用被调函数
c=max(a[i],b[i]);
注意,a[i],b[i]为 max()函数的两个实际参数数组作为函数参数
将数组名作为函数参数
----用数组名作为函数参数,则主调和被调函数中都要定义数组,主调函数定义的数组作为实参,被调函数中的数组作为形参
----实参数组与形参数组的类型应该一致
----形参如果为一维数组,则可以不定义数组的大小,因为系统实际上只是把实参数组的首地址传给了形参数组作为函数参数
将多维数组作为函数的参数多维数组也可以作为函数的形参和实参,但多维数组作为实参的时候,其下标不能够省略,否则系统会报错注意:对于数组作为形参的被调函数,
在主调函数中调用它时,只需添入数组的数组名作为实参即可数组作为函数参数 (程序一 )
T186 T8.4
#include <stdio.h>
#include <stdlib.h>
#define N 300
void exchange(int array1[N][N]);
void display(int array1[N][N]);
void exchange(int array1[N][N])
{
int i,j,array2[N][N];
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
数组作为函数参数 (程序一 )
{
array2[j][i]=array1[i][j];
}
}
display(array2);
}
void display(int array1[N][N])
{
int i,j;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
数组作为函数参数 (程序一 )
{
printf("%4d",array1[i][j]);
}
printf("\n");
}
printf("\n");
}
main()
{
int i,j,k=1,array1[N][N];
for(i=0;i<N;i++)
数组作为函数参数 (程序一 )
{
for(j=0;j<N;j++,k++)
{
array1[i][j]= k;
}
}
display(array1);
exchange(array1);
system("pause");
}
数组作为函数参数 (程序二 )
P186 T8.16
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
float exchange(char str1[20]);
float exchange(char str1[20])
{
int i=0,j=0,count=0,count1=-1,flag=1;
float sum=0;
char str2[20];
printf("请输入一个十六进制的数,\n");
gets(str1);
数组作为函数参数 (程序二 )
while(str1[i]!='\0')
{ if(str1[i]!=' ')
{
str2[j]=str1[i];
if(str2[i]=='.')
{
flag=0;
}
if(flag==1)
{
count++;
}
数组作为函数参数 (程序二 )
if(flag==0)
{
count1++;
}
i++;
j++;
}
else
{
i++;
}
}
数组作为函数参数 (程序二 )
str2[j]='\0';
for(i=0;i<count;i++)
{
if((str2[i]>=48)&&(str2[i]<=57))
{
sum=sum+(float)(str2[i]-48)*pow(10,count-1-i);
}
else if((str2[i]>=97)&&(str2[i]<=102))
{
sum=sum+(float)(str2[i]-97+10)*pow(10,count-1-i);
}
else if((str2[i]>=65)&&(str2[i]<=70))
数组作为函数参数 (程序二 )
{
sum=sum+(float)(str2[i]-65+10)*pow(10,count-1-i);
}
}
for(i=count+1,j=-1;i<count+1+count1;i++,j--)
{
if((str2[i]>=48)&&(str2[i]<=57))
{
sum=sum+(float)(str2[i]-48)*pow(10,j);
}
else if((str2[i]>=97)&&(str2[i]<=102))
数组作为函数参数 (程序二 )
{
sum=sum+(float)(str2[i]-97+10)*pow(10,j);
}
else if((str2[i]>=65)&&(str2[i]<=70))
{
sum=sum+(float)(str2[i]-65+10)*pow(10,j);
}
}
return(sum);
}
数组作为函数参数 (程序二 )
main()
{
float result;
char array1[20];
result = exchange(array1);
printf("该十六进制数转化为十进制数为:
%f\n",result);
system("pause");
}