用数组作为函数参数,并通过函数调用还回最大值,最小值和平均值,c++。。指针真的有点弄不懂……
2。用数组作为函数参数,并通过函数调用还回最大值,最小值和平均值。函数原型维:
voidfun(inta[10],int*max,int*min,float*avg)。。。。。
……………………………………………………………………………………………………
#include<iostream>
using namespace std;
void fun(int a[10],int *max,int *min,float *avg)
{
int i,j,t,flag;
for(j=0;j<9;j++)
{
flag=0;
for(i=0;i<9-j;i++)
if(a[i]>a[i+1])
{
t=a[i];a[i]=a[i+1];a[i+1]=t;
flag=1;
}
if(flag==0) break;
}
a[0]=*min,a[9]=*max;
*avg=&(a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[7]+a[8]+a[9])/10;
}
int main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int *max,*min;
float *avg;
fun(a,*max,*min,*avg);
cout<<max<<endl;cout<<min<<endl;cout<<avg<<endl;
}
3.编写一个函数void fun(inta[],intn),将a[]中的n个元素按反序存放,在main函数中调用该函数,分别用数组和指针作为实参。
我理解为你想知道指针在函数形参时的使用方法
首先void fun(int a[10],int *max,int *min,float *avg)
这个函数中的几个形参都是指针类型,它实际接收到的都是变量的地址
如 如果 我们定义几个变量
main()
{
int a[] ={11,12,13,14,15,16,17,18} //a数组包含8个元素并且被依次赋值;
int iMax = 0;
int iMin = 0; //定义用于保存最大值和最小值的变量iMax ,iMin;
float avg = 0; //定义一个保存平均值的变量avg;
以上定义的变量用于保存你计算后得到的最大值 最小值 平均值的数据;
fun(a,&iMax,&iMin,&avg);
把变量的地址传递给函数,数组不需要用&号传递;
变量地址相当于保存变量数据的盒子,只有把盒子递给过去才能把东西放进去,如果是腊乎神按照以下形式声明轮亏变量就会发现不同
void fun(int max,int min,float avg) 这样声明数据只是把 数值传递进来,并重新声明了新的变量
和你外部没有任何交集,计算得到结果后,如果不通过返回值传递数据,就不会和外部有任何联系
编写逆序的那个程序只是简单的颠倒顺序并通过指针形式返回到被调用的函数中,就不做处理了用一个FOR循环就可以解决,无任何编程技顷激巧
}
#include "stdio.h"
void main ()
{
void inv (int x[],int n);
int i, a[10]={5,9,8,3,42,15,78,1,3,71};
printf ("闷轮明宽The original array:\n");
for (i=0;i<10;i++)
{
printf ("%3d ",a[i]);
} printf ("\n\n\n");
inv(a,10);
printf ("The array has been inverd :\n\n");
for (i=0;i<10;i++)
{
printf ("蚂槐信%3d ",a[i]);
} printf ("\n\n\n");
}
void inv (int x[],int n) // inv 将n个元素反序存放
{
int temp,i,m=n/2-1;
for (i=0;i<=m;i++)
{
temp=x[i];
x[i]=x[n-1-i];
x[n-1-i]=temp;
}
return ;
}