精华内容
下载资源
问答
  • C语言_一维数组倒置

    2020-12-03 15:50:17
    #include<stdio.h> int main() { int arr[] = { 1,2,3,4,5,6,7,8,9 }; int sz = sizeof(arr) / sizeof(arr[0]); int left = 0; int right = sz - 1; int tmp = 0; int i = 0; while (left <...
    #include<stdio.h>
    int main()
    {
        int arr[] = { 1,2,3,4,5,6,7,8,9 };
        int sz = sizeof(arr) / sizeof(arr[0]);
        int left = 0;
        int right = sz - 1;
        int tmp = 0;
        int i = 0;
        while (left < right)
        {
            tmp = arr[left];
            arr[left] = arr[right];
            arr[right] = tmp;
            left++;
            right--;
        }
        for (i = 0; i < sz; i++)
        {
            printf("%d ", arr[i]);
        }
        return 0;
    }
    
    展开全文
  • 指针与数组C语言中很重要的两个概念,它们之间有着密切的关系,利用这种关系,可以增强处理数组的灵活性,加快运行速度,本文着重讨论指针与数组之间的联系及在编程中的应用。1.指针与数组的关系当个指针变量被...

    dfba1d31f720574bd57135d9e215f16b.png

    指针与数组是C语言中很重要的两个概念,它们之间有着密切的关系,利用这种关系,可以增强处理数组的灵活性,加快运行速度,本文着重讨论指针与数组之间的联系及在编程中的应用。

    1.指针与数组的关系

    当一个指针变量被初始化成数组名时,就说该指针变量指向了数组。如:

    char str[20], *ptr;

    ptr=str;

    ptr被置为数组str的第一个元素的地址,因为数组名就是该数组的首地址,也是数组第一个元素的地址。此时可以认为指针ptr就是数组str(反之不成立),这样原来对数组的处理都可以用指针来实现。如对数组元素的访问,既可以用下标变量访问,也可以用指针访问。

    2.指向数组元素的指针

    若有如下定义:

    int a[10], *pa;

    pa=a;

    则p=&a[0]是将数组第1个元素的地址赋给了指针变量p。

    实际上,C语言中数组名就是数组的首地址,所以第一个元素的地址可以用两种方法获得:p=&a[0]或p=a。

    这两种方法在形式上相像,其区别在于:pa是指针变量,a是数组名。值得注意的是:pa是一个可以变化的指针变量,而a是一个常数。因为数组一经被说明,数组的地址也就是固定的,因此a是不能变化的,不允许使用a++、++a或语句a+=10,而pa++、++pa、pa+=10则是正确的。由此可见,此时指针与数组融为一体。

    3.指针与一维数组

    理解指针与一维数组的关系,首先要了解在编译系统中,一维数组的存储组织形式和对数组元素的访问方法。

    一维数组是一个线形表,它被存放在一片连续的内存单元中。C语言对数组的访问是通过数组名(数组的起始地址)加上相对于起始地址的相对量(由下标变量给出),得到要访问的数组元素的单元地址,然后再对计算出的单元地址的内容进行访问。通常把数据类型所占单元的字节个数称为扩大因子。

    实际上编译系统将数组元素的形式a[i]转换成*(a+i),然后才进行运算。对于一般数组元素的形式:<数组名>[<下标表达式>],编译程序将其转换成:*(<数组名>+<下标表达式>),其中下标表达式为:下标表达式*扩大因子。整个式子计算结果是一个内存地址,最后的结果为:*<地址>=<地址所对应单元的地址的内容>。由此可见,C语言对数组的处理,实际上是转换成指针地址的运算。

    数组与指针暗中结合在一起。因此,任何能由下标完成的操作,都可以用指针来实现,一个不带下标的数组名就是一个指向该数组的指针。

    4.指针与多维数组

    用指针变量可以指向一维数组,也可以指向多维数组。但在概念上和使用上,多维数组的指针比一维数组的指针要复杂一些。

    例如,在一个三维数组中,引用元素c[i][j][k]的地址计算最终将换成:*(*(*(c+i)+j)+k)。了解了多维数组的存储形式和访问多维数组元素的内部转换公式后,再看当一个指针变量指向多维数组及其元素的情况。

    1 指向数组元素的指针变量

    若有如下说明:

    int a[3][4];

    int *p;

    p=a;

    p是指向整型变量的指针;p=a使p指向整型二维数组a的首地址。

    *(*(p+1)+2)表示取a[1][2]的内容;*p表示取a[0][1]的内容,因为p是指向整型变量的指针;p++表示p的内容加1,即p中存放的地址增加一个整型量的字节数2,从而使p指向下一个整型量a[0][1]。

    2 指向由j个整数组成的一维数组的指针变量

    当指针变量p不是指向整型变量,而是指向一个包含j个元素的一维数组。如果p=a[0],则p++不是指向a[0][1],而是指向a[1]。这时p的增值以一维数组的长度为单位。

    5.指针与字符数组

    C语言中许多字符串操作都是由指向字符数组的指针及指针的运算来实现的。因为对于字符串来说,一般都是严格的顺序存取方式,使用指针可以打破这种存取方式,更为灵活地处理字符串。

    另外由于字符串以′\0′作为结束符,而′\0′的ASCII码是0,它正好是C语言的逻辑假值,所以可以直接用它作为判断字符串结束的条件,而不需要用字符串的长度来判断。C语言中类似的字符串处理函数都是用指针来完成,使程序运行速度更快、效率更高,而且更易于理解。

    ◆◆

    评论读取中....

    请登录后再发表评论!

    ◆◆

    修改失败,请稍后尝试

    展开全文
  • C语言数组倒置

    千次阅读 2018-11-08 15:24:54
    C语言中的数组倒置的方法可以分为两种; 1.设以数组A[],另设数组B[],我们将A[]的元素倒序赋给B[],再将B[]顺序赋给A[],就完成了组交换,这种方法比较直观,但我们还要在内存中划定一片区域给B[],有一定缺陷...

    C语言中的数组倒置的方法可以分为两种;

    1.设以数组A[],另设一数组B[],我们将A[]的元素倒序赋给B[],再将B[]顺序赋给A[],就完成了一组交换,这种方法比较直观,但我们还要在内存中划定一片区域给B[],有一定缺陷。
    如下

    #include <stdio.h>
    int main()
    {
     int a[10],b[10];
     
     int i;
     
     for(i=0;i<10;i++)      //按0~9赋值一个数组//
     {
      a[i]=i;
     }
     for(i=0;i<10;i++)//将a[]倒序赋值给b[]
     {
      b[i]=a[9-i];
     }
     for(i=0;i<10;i++)//再换过来//
     {
      a[i]=b[i];
     }
     for(i=0;i<10;i++)
     {
     printf("%d",a[i]);//打印//
     }
     return 0;
     
    }
    
    

    2.第二种方法我们要观察互换该数组内的前后元素,如下图

    #include <stdio.h>
    int main()
    {
     int t, i;
     
     int a[10];
     
     for(i = 0;i < 10;i++)//我们定义一个数组并赋值为1~10//
     {
      a[i] = i;
      
     }
     for(i = 0;i <= 5;i++)//数组中下标和为9的两个元素互换,要换10/2=5次,若数组长度为奇数则为n/2-1次//
     {
      t = a[i];//进行互换//
      
      a[i] = a[9-i];
      
      a[9-i] = t;
      
      
     }
     for(i = 0;i < 10;i++)
     {
      printf("%-3d",a[i]);//打印结果//
     }
     printf("\n");
     
     return 0;
    }
    

    这是简单的一维数组的倒置,也可以衍生到二维数组中去,只不过要多一层的内循环,按行进行倒置。

    展开全文
  • C语言编写数组元素倒置字符串倒置算法函数 将数组数据“10,9,8,7,6,5,4,3,2,1”进行倒置,变成“1,2,3,4,5,6,7,8,9,10 ”。 程序如下 #include <stdio.h> #define LEN 10 void Data_Convert(int *t, int n); ...

    前言

    C语言编写数组元素倒置字符串倒置算法函数,将数组数据“10,9,8,7,6,5,4,3,2,1”进行倒置,变成“1,2,3,4,5,6,7,8,9,10 ”。

    程序源码

    #include <stdio.h>
    #define LEN 10
    void Data_Convert(int *t, int n);
    int main(void)
    {
        int buf[LEN]= {10,9,8,7,6,5,4,3,2,1};
        int i;
    	Data_Convert(buf, LEN);
        for(i = 0; i < LEN; i++)
            printf("%d,", buf[i]);
    	printf("\n");
    	return 0;
    }
    void Data_Convert(int *t, int n)
    {
        int i, j, k;
    	for(i = 0,j = n - 1; i < n / 2 ; i++,j--)
        {
            k = *( t + i );
            *( t + i ) = *( t + j );
            *( t + j ) = k;
        }
    }
    
    展开全文
  • 第1 篇 C 语言基础知识 第1 章 走入C 语言的世界实例12 数组中元素的倒置【实例描述】让一维数组中的元素转置,也就是让数组的元素本末倒置,即第一个元素变成最后一个元素,第二个元素变成倒数第二个元素,依次类推...
  • C语言一维数组的转置 这里是整型数组 void Reverse(int *nums,int i,int j){//i,j逆转数组下标 int k=(i+j)/2,ex; while(k>=i){ ex=nums[k]; nums[k]=nums[j-k+i]; nums[j-k+i]=ex; k--; } }
  • c语言==一维数组与二维数组(2)

    千次阅读 2016-07-07 17:34:06
    一维数组与二维数组 排序,输出三角形
  • Ⅰ、数组元素的倒置输出: ①、//代码摘下直接可以运行 //反向输出(我写的程序比较简单,易懂) #include<stdio.h> int main() { int m[]={10,20,30,40,50}; int i; printf(" the ordering of array:\n"); for...
  • c语言数组元素倒置

    千次阅读 2018-03-07 09:50:22
    #include&lt;stdio.h&gt;int main(void){ int a[5]={1,2,3,4,5}; int i,j,t; i=0;j=4; while(i&lt;j) { t=a[i]; a[i]=a[j]; a[j]=t; ++i; --j; } for(i=0;...
  • C语言——二维数组转置

    千次阅读 2020-04-07 16:01:28
    C语言——二维数组转置 问题描述: 输入个二行三列的数组,把它转置成三行二列的数组。 代码: # include <stdio.h> int main() { int a[2][3]; int b[3][2]; int i, j; for(i = 0;i < 2; ++i) {...
  • /*# include <stdio.h> int main(void) { int a[7] = { 1, 2, 3, 4, 5, 6, 7 }; int i, j; int t; i = 0; j = 6; while (i < j) { t = a[i]; a[i] = a[j]; a[j] = t;... re
  • C语言-05数组和字符串

    2020-03-21 19:08:49
    C语言-05数组和字符串
  • #define MAX_SIZE 20 /* 最大数组个数 */ void TransposeArray(int *arr,int size); int main() { int size = 0; int orien_arr[MAX_SIZE] = {0,}; printf("Input N: \n"); scanf("%d",&size); printf
  • C语言---一维数组

    2019-12-13 18:53:12
    一维数组 数组名 int arr[5]={1,3,5,7,9}; 数组名 arr 的值是一个指针常量,是数组第1个元素的地址。 int arr[5]={1,3,5,7,9}; printf("arr=%x\n", arr); printf("&arr[0]= %x\n", &arr[0]); /* 执行结果:...
  • C语言笔记(数组)

    2020-12-05 22:14:37
    C语言数组笔记 笔记内容为自学郝斌老师C语言课程时所作 如果对于基础知识点有遗忘可以借鉴下 作者: 辽宁工业大学 电子202 宋家盛 ... 数组: ...2.模拟现实世界(一维,二,N维) 数组不是学习重点的原
  • 为什么需要数组 为了解决大量同类数据的存储和使用问题 为了模拟现实世界 例子: int a[5] = {1, 2, 3, 4, 6}; a是数组的名字 5代表数组元素的个数,并且这5个元素分别用: ... - 怎样定义一维数组 ...
  • 1、一维数组的定义和多维数组元素的引用: 定义:当数组中的每个元素只带有一个下标时,这样的数组为一维数组;格式:类型名 数组名[整型常量表达式] ; int a[10]说明:基本的语法同java注:在内存中给数组中每个...
  • 5.1一维数组

    2020-06-22 16:29:49
    5.1一维数组 5.1一维数组 引言 一、一维数组的定义 二、一维数组的初始化 完全初始化 不完全初始化 不初始化 清零 初始化的几种错误写法 三、一维数组的引用 四、一维数组的特点 五、一维数组的操作 排序 ...
  • C语言写了一个输入一个一维数组的函数,但是在主函数中并不能调用该数组,能通过编译。求大佬解读问题所在!!! ![图片说明](https://img-ask.csdn.net/upload/201907/21/1563700824_777440.png)
  • 数组 1.数组的作用 ...a) 为了解决大量同类型数据的存储和使用,如要统计全校同学的成绩 ...b) 为了模拟现实问题(有点类似汇编的寻址...),如一个班级根据多少排多少列找到某一同学:a...一维数组 1.一
  • C语言--数组深入学习

    2017-10-25 21:33:18
    1.使用数组名遍历数组 int main(void) { int i=0; int arr[5]={1,2,3,4,5}; for(i=0;i<5;i++) { printf("arr[%d]=%d\n",i,*(arr+i)); } return 0; } 2.打印数组的首元素的首地址和数组的首地址 ...
  • Day05 郝斌C语言自学视频之C语言的数组数组概述为什么需要数组数组的不足数组的分类一维数组一维数组的定义数组定义的本质有关一维数组的操作二维数组二维数组的定义二维数组的初始化二维数组的操作多维数组后记 ...
  • 我们常用的数据叫做一维数组,是一串连续的内存空间,二维数组是在一维数组的基础上,相当于每一个元素又是一个一维数组 二维数组的定义也很简单 //定义一个十行十列的二维数组,也可以说是一个连续的拥有10个大小...
  • 个函数,使给定的个二维数组(3×3)转置,即行列互换。 题解: #include<stdio.h> int main(){ int a[3][3]; //正常输入,输出时互换一下i,j的位置即可 for(int i=0;i<3;i++){ for(int j=0;j&...
  • 数组每个位置的下标计算 临时temp的引入 #include <iostream> using namespace std; int main() { int arr[5] = { 3,5,1,2,9 }; cout << "元素逆置前" << endl; for (int i = 0; i < 5; i++...
  • 说明:这个C语言专题,是学习iOS开发的前奏。也为了让有面向对象语言开发经验的程序员,能够快速上手C语言。如果你还没有编程经验,或者对C语言、iOS开发不感兴趣,请忽略 ...一、用指针指向一维数组的元素 1 ...
  • // // main.c // c_test2 // // Created by vincent_guo on 13-3-26. // Copyright (c) 2013年 ...// #include #include ...//写一个函数,将一维数组中的元素逆序存放(用指针做这题) //逆序存放第一种写法 void re
  • 数组中n个整数按相反顺序存放。解:程序1:#includeint inv(int x[], int n){ int temp, i, j, m = (n - 1) / 2; for (i = 0; i { j = n - 1 - i; temp = x[i]; x[i] = x[j]; x[j] = temp; } return;}int ...
  • #include &lt;stdio.h&gt; void outarr(int * parr, int len) { int i; for (i = 0; i &lt; len; i++) { printf("%d\t", parr[i]); } printf("\n"... outarr...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 639
精华内容 255
关键字:

c语言一维数组倒置

c语言 订阅