zoukankan      html  css  js  c++  java
  • 将数组元素倒序输出——指针

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

    #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:
    ");
        for(int i=0;i<10;i++)
        {
            printf("%d ",a[i]);
        }
        printf("
    ");
    }

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

    一、介绍第一种,现在开始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:
    ");
    19     for(int i=0;i<10;i++)
    20     {
    21         printf("%d ",a[i]);
    22     }
    23     printf("
    ");
    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:
    ");
        for(int i=0;i<10;i++)
        {
            printf("%d ",a[i]);
        }
        printf("
    ");
    }

    三、再来第三种表示方式

    #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: ");
        for(int i=0;i<10;i++)
        {
            printf("%d ",a[i]);
        }
        printf(" ");
    }

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

    成功不是偶然的,失败也不是必然的。
  • 相关阅读:
    进制转换
    01背包基础
    6-14 Inspector s Dilemma uva12118(欧拉道路)
    9-4 Unidirectional TSP uva116 (DP)
    8-4 奖品的价值 uva11491(贪心)
    9-1 A Spy in the Metro uva1025 城市里的间谍 (DP)
    8-3 Bits Equalizer uva12545
    8-2 Party Games uva1610 (贪心)
    自动发邮件功能
    窗口截图.py
  • 原文地址:https://www.cnblogs.com/zhuyukun/p/12520597.html
Copyright © 2011-2022 走看看