编写函数void invert(int a[ ],int n)将数组a中的数按颠倒的顺序重新存放。在操作

2025-02-24 18:14:05
推荐回答(3个)
回答1:

void invert(int a[ ],int n){
int temp;// 临时存储单元
// 以n/2为对称点,进行对称位置交换。
for(int i=0;i // a[i]存放在临时存储单元
temp=a[i];
// 将i的对称的数据存到a[i]
a[i]=a[n-1-i];
// 将原a[i]中的数据(即temp),存放到i的对称点a[n-1-i]
a[n-1-i]=temp;
}
}

上面就是你要的函数,希望你能看懂。

回答2:

#include
void invert(int a[ ],int n){
int temp;//临时存储单元,没有开辟新的数组,(*^__^*) 嘻嘻……
for(int i=0;i temp=a[i];
a[i]=a[n-1-i];
a[n-1-i]=temp;
}
}
int main(){
int a[10]={1,2,3,4,5,6,7,8,9,10};
for(int i=0;i<10;i++){
printf("%d\t",a[i]);
}
printf("\n");
invert(a,10);
for(int j=0;j<10;j++){
printf("%d\t",a[j]);
}

回答3:

//我来提供个指针的解法吧^_^
#include
#define MAX 100 //定义数组的最大长度
void invert(int a[],int n)
{
int *p=a,*q=a+n-1,t;
while(p {
t=*p;
*p=*q;
*q=t;
p++;
q--;
}
}
int main ()
{
int a[MAX],i,n;

scanf("%d",&n);

for(i=0;i scanf("%d",a+i);

invert(a,n);

for(i=0;i printf("%d\t",a[i]);
return 0;
}