MENU

用指针将数组逆序输出

April 11, 2020 • Read: 80 • c/c++基本算法

一般我们求一个数组倒着输出,经常会采用下列方法

#include<stdio.h>
#include<stdlib.h>
void  instead (int x[],int n)
{
    int i,j,t;
    for(i=0,j=n-1;i<=j;i++,j--)
    {
          t=x[i];
          x[i]=x[j];
          x[j]=t;
    }
}
int main()
{
    int i,a[10]={0,1,2,3,4,5,6,7,8,9};
    instead(a,10);
    printf("The array has been reverted:\n");
    for(int i=0;i<10;i++)
    {
        printf("%d ",a[i]);
    }
    printf("\n");
}

但是当你学了指针之后,你就自己动手将他弄一下,试试行不行,巩固一下。

一、介绍第一种,现在开始showtime

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 void  instead (int *x,int n)//将数组a的首地址付到这
 4 {
 5     int *i,*j,*p,t,m=(n-1)/2;//i、j表示将要访问数组a中元素的地址并进行改变(倒置数组a)
 6     i=x;j=x+n-1;p=x+m;//将数组a的首地址和末位置给了i,j
 7     for(;i<=p;i++,j--)
 8     {
 9         t=*i;
10         *i=*j;
11         *j=t;
12     }
13 }
14 int main()
15 {
16     int i,a[10]={0,1,2,3,4,5,6,7,8,9};
17     instead(a,10);
18     printf("The array has been reverted:\n");
19     for(int i=0;i<10;i++)
20     {
21         printf("%d ",a[i]);
22     }
23     printf("\n");
24 }

二、再提供第二种

#include<stdio.h>
#include<stdlib.h>
void  instead (int *x,int n)
{
    int *i,*j,*p,t,m=(n-1)/2;
    i=x;j=x+n-1;p=x+m;
    for(;i<=p;i++,j--)
    {
        t=*i;
        *i=*j;
        *j=t;
    }
}
int main()
{
    int i,a[10],*p=a;//将数组a的地址存放到指针里,单独一个字母a表示数组a的地址。
    for(i=0;i<10;i++,p++)//将指针移动分别给数组a赋值。
    {
        scanf("%d",p);
    }
    p=a;//将p调回到a数组的首地址。
    instead(p,10);
    printf("The array has been reverted:\n");
    for(int i=0;i<10;i++)
    {
        printf("%d ",a[i]);
    }
    printf("\n");
}

三、再来第三种表示方式

#include<stdio.h>

#include<stdlib.h>

void instead (int x[],int n)

{

  int i,j,m=(n-1)/2,t;

  for(i=0,j=n-1;i<=j;i++,j--)

  {

​    t=x[i];

​    x[i]=x[j];

​    x[j]=t;

  }

}

int main()

{

  int i,a[10],*p=a;

  for(i=0;i<10;i++,p++)

  {

​    scanf("%d",p);

  }

  p=a;//将p调回到a数组的首地址。

  instead(p,10);

  printf("The array has been reverted:\n");

  for(int i=0;i<10;i++)

  {

​    printf("%d ",a[i]);

  }

  printf("\n");

}

这几个只是栗子,随便看看就行啦。

Last Modified: September 21, 2020