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

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

    成功不是偶然的,失败也不是必然的。
  • 相关阅读:
    pymssql连接Azure SQL Database
    Python升级后ssl模块不可用问题解决和浅析
    CentOS 7升级Python到3.6.6后yum出错问题解决总结
    Python监控SQL Server数据库服务器磁盘使用情况
    fastjason常用方法
    类型擦除真的能完全擦除一切信息吗?java 泛型揭秘
    spring boot打包成war包的页面该放到哪里?
    为什么delete后磁盘空间没有释放而truncate会释放?
    leetcode 977. Squares of a Sorted Array
    leetcode 844. Backspace String Compare
  • 原文地址:https://www.cnblogs.com/zhuyukun/p/12520597.html
Copyright © 2011-2022 走看看