九曲红梅分辨好的:函数的行参定义为数组,但怎么把一个数组当实参传进去以便调用函数?(要使我的程序能够运行!!)

来源:百度文库 编辑:高考问答 时间:2024/05/06 09:10:59
#include <iostream.h>

double X(int K[10])
{
int a;
int b;
int e;
int f;
for(b=1;b<=8;b++)
{
for(a=1;a<=9;a++)
{
if(K[e]>K[e+1])
{f=K[e];
K[e]=K[e+1];
K[e+1]=f;
e++;
}
}
}

b=1;
e=10;
for(a=1;a<=5;a++)
{
f=K[b];
K[b]=K[e];
K[e]=f;
b++;
e--;
}
cout<<"反向输出数字:"<<endl;
f=1;
for(a=1;a<=10;a++)
{
cout<<K[f];
f++;
}
}

void main()
{ int i;
int c;
int S[10];
cout<<"输入10个整数:";
for(i=1;i<=10;i++)
{
cin>>S[c];
c++;
}
X(S);
}

关键是最后那步传进去参数!!!

你的数组下标都不是从0开始,而是从1开始,错了。
还有其他一些错误,改正后如下:

#include <iostream.h>

void X(int K[10])
{
int a;
int b;
int e;
int f;
for(b=1;b<=9;b++)
{
e = 0;
for(a=1;a<=9;a++)
{
if(K[e]>K[e+1])
{f=K[e];
K[e]=K[e+1];
K[e+1]=f;
}
e++;
}
}

b=0;
e=9;
for(a=1;a<=5;a++)
{
f=K[b];
K[b]=K[e];
K[e]=f;
b++;
e--;
}
cout<<"反向输出数字:"<<endl;
f=0;
for(a=1;a<=10;a++)
{
cout<<K[f]<<' ';
f++;
}
cout << endl;
}

void main()
{ int i;
int c = 0;
int S[10];
cout<<"输入10个整数:";
for(i=1;i<=10;i++)
{
cin>>S[c];
c++;
}
X(S);
}





追问









请用指针

double X(int* K) {
...
}

//哥们在试试我的,数组下标从0开始,这是C!!

#include <stdio.h>
#include <iostream.h>

void X(int K[10])
{
int a;
int b;
int e = 0;
int f = 0;
for(b=0;b<9;b++)
{
for(a=b;a<10;a++)
{
if(K[b]>K[a+1])
{f=K[b];
K[b]=K[a+1];
K[a+1]=f;
}
}
}

b=0;
e=9;
for(a=1;a<=5;a++)
{
f=K[b];
K[b]=K[e];
K[e]=f;
b++;
e--;
}
cout<<"·´ÏòÊä³öÊý×Ö£º"<<endl;
f=0;
for(a=0;a<=9;a++)
{
cout<<K[f]<<'\t';
f++;
}

}

void main()
{ int i;
int c;
int S[10];
c= 0;
cout<<"ÊäÈë10¸öÕûÊý£º"<<endl;
for(i=0;i<10;i++)
{
scanf("%d,",&S[c]);
c++;
}
X(S);
}

用数组当形参时,不管int X(int a[10])还是int X(int a[200])都是一样的,那个10或者200根本没有作用,都等价于int X(int *a),建议将数组当形参时,加多一个形参表示数组长度,即int X(int *a,int len)
设有数组int a[10],调用的时候
int X(a,int 10)即可。