C语言编译 将一个数组中值按逆序重新存放 例 8 6 5 4 1

如题所述

第1个回答  2013-11-06
#include<stdio.h>
int main()
{
int inv(int *x,int n);
int a[5]={8,6,5,4,1};
int *p;
printf("原先数组为:\n");
for(p=a;p<a+5;p++)
printf("%3d",*p);
printf("\n");
p=a;//经过一个for的循环后,p已不指向最先的&a[0]了,指向&a[5],而[5](出界)值不明,为此让它继续指向&a[0]
inv(p,5);//调用反序函数,共5个元素
printf("反序数组为:\n");
for(;p<a+5;p++)
printf("%3d",*p);
printf("\n");
}int inv(int *x,int n)//反序函数
{
int *i,*j,m=(n-1)/2,*p,temp;
i=x;j=x+n-1;p=x+m;
for(;i<=p;i++,j--)//i和j的指针同步相向移动,实现数组元素的对换
{
temp=*i;
*i=*j;
*j=temp;
}
return(0);
}运行如下:
第2个回答  2013-11-06
#include (stdio.h)main(){int i,t;int a[5]={8,5,5,4,1};for(i=0;i<2;i++){t=a[i];a[i]=a[4-i];a[4-i]=t;}for(i=0;i<5;i++){printf("a[%d]=%d",i,a[i]);}}
相似回答