將數組元素倒序輸出——指針


一般我們求一個數組倒着輸出,經常會采用下列方法

#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");
}

這幾個只是栗子,隨便看看就行啦。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM