精华内容
下载资源
问答
  • C语言 数组表示方法与区分 #include <stdio.h> int main() { int a[5] = {1,2,3,4,5}; int *p = &a[0]; int (*pa)[5] = &a; 定义数组指针,指向数组a int i; for(i = 0; i < 5; i++){ //...

    C语言 数组表示方法与区分

    #include <stdio.h>
    
    int main()
    {
        int a[5] = {1,2,3,4,5};
        int *p = &a[0];
        int (*pa)[5] = &a;  定义数组指针,指向数组a
        int i;
    
        for(i = 0; i < 5; i++){  //数组下标法
            printf("%d ",a[i]);
        }
        printf("\n");
    
        for(i = 0; i < 5; i++){  //指针法
            printf("%d ",*(p + i));
        }
        printf("\n");
    
    
        for(i = 0; i < 5; i++){  //数组指针法
    		printf("%d ",(*pa)[i]);
        }
        printf("\n");
        return 0;
    }
    
    展开全文
  • C语言数组的初始化表示方法

    万次阅读 2019-07-25 10:51:22
    C语言数组的初始化表示方法 一、C语言一维数组初始化: (1)在定义数组时对数组元素赋以初值。如: static int a[10]={0,1,2,3,4,5,6,7,8,9}; 经过上面的定义和初始化后,a[0]=0,a[1]=1,… ,a[9...

    C语言数组的初始化表示方法

    一、C语言一维数组初始化:

    (1)在定义数组时对数组元素赋以初值。如:

    static int a[10]={0,1,2,3,4,5,6,7,8,9};

    经过上面的定义和初始化后,a[0]=0,a[1]=1,… ,a[9]=9。

    (2)初始化时可以只对一部分元素赋初值。例如:

    static int a[10]={0,1,2,3,4};

    定义的数组有10个元素,但只对其中前5个元素赋了初值,后5个元素初值为0。

    (3)将数组的元素值全部为0,可以用下面的方法:(方法一)

    int a[5] = {0}; // 将整型数组a的每个元素都初始化为0

    或者也可以用如下方法进行初始化:(方法二)

    int a[5] = {0, 0, 0, 0, 0}; // 初始化效果同上

    不能用: static int a[10]={0*10};

    如果对static型数组不赋初值,系统会对定义的所有数组元素自动赋以0值。

    (4)在对全部数组元素赋初值时,可以不指定数组长度。

    int a[]={0,1,2,3,4};

    相当于 int a[5]={0,1,2,3,4};

    二、C语言二维数组初始化:

    声明时给初始值叫初始化。例如:int b[3][4]={1,2,3,4,5,6,7,8,4,4,4,4};
    声明后赋值,可以用赋值语句,
    b[0][0]=1; b[0][1]=2; b[0][2]=3; b[0][3]=4;
    b[1][0]=5; b[1][1]=6; b[1][2]=7; b[1][3]=8;

    三、C语言结构体初始化:

    1.typedef定义结构体

    typedef struct Student {

    agent age;
    
    char name[10];
    

    } Stu;

    2.创建结构体变量并初始化

    Stu s = {18,“rose”};//可以初始化,设置age为1,s为一个字符串.

    Stu s = {18};//初始化个数少于实际个数时,只初始化前面的成员。

    Stu s = {.name=“rose”};//有选择的初始化成员。

    3、结构体数组:初始化需用大括号将数组中每一个结构体括起来:

    Stu s[10] = {{18,“rose”},{19,“jack”},{18,“tony”},{17,“misa”}};

    也可以初始化其中的一个元素:

    Stu s[10] = {[2]={19,“jack”}, [3]={18,“tony”}};

    Stu s[10] = {[2].age=19, [3].name=“tony”};

    四、C语言数据类型还有共用体和链表,但C语言没有字典这一说。

    展开全文
  • C语言数组实现约瑟夫问题问题描述要求:用C语言数组结构实现实现代码时间复杂度分析 问题描述 从n个人中抽取一个中奖者,抽取方法如下:所有人围成一圈,第一个人从1开始报数,选定一个数m;报到数m的人出列,下一个...

    问题描述

    从n个人中抽取一个中奖者,抽取方法如下:所有人围成一圈,第一个人从1开始报数,选定一个数m;报到数m的人出列,下一个人继续从1开始报数,直到剩余最后一人即为中奖者

    要求:用C语言数组结构实现

    思路:
    1.因为是采用数组结构,故实现循环报数可采用数组下标取模方法
    2.因为数组删除元素操作比较复杂,故可采取标记位方法标记出列人数:即数组所有元素初始化为0,报到m时将该数组元素标记为1表示此位置人已出列,同时输出出列人数下标;遍历数组时检查该元素是否为出列状态,是则跳过(即已出列人数不参与报数)
    3.设置一个计数变量count和遍历变量i,当count达到m时,对i进行取模得到的即为对应要出列的元素下标,将其置为1,同时count变量置为0(为何置0见代码注释)
    注意点:
    1.应注意报数从1开始,而数组下标是从0开始,故实际出列人序号应该是下标加1
    2.最后一个出列人即为中奖者

    实现代码

    #include <stdio.h>
    #include <stdlib.h>
    
    int josephus(int a[], int, int);
    
    int main() 
    {
    	int b, m;
    	printf("请依次输入数组长度和淘汰序号:");
    	scanf("%d %d",&b,&m);
    	int a[b];
    	int i=0;
    	for(;i<b;i++)
    	    a[i]=0;
    	josephus(a, b, m);
    }
    int josephus(int a[], int b, int m)
    {
    	int k=0,i=0,count=1,l=b;
    	for(;l>=1;) 
    	{
    		if (count==m)
    		{
    			k=(i)%b;
    			a[k]=1;
    			printf("k=%d\n",k+1);//依次输出出列人的序号,最后一个即为中将者
    			l--;
    			count=0;//因为此时遍历下标还在出列元素,而下一个元素才是从1开始报数,故此处应将count置为0,带下标i遍历至下一个未出列元素时count再加1
    		}
    		i++;
    		if (a[i%b]!=1)
    			count++;
    	}
    }
    

    时间复杂度分析

    因为只用了一个for循环进行遍历,表示一共需要出列的人数,故时间复杂度与参与抽奖的人数成线性关系,为O(n)。

    展开全文
  • C语言数组

    2019-05-14 14:21:16
    数组数组就是变量的集合,是一种指定义变量的方法。 (1)一维数组 一维数组:把变量排成一排。 定义:类型 数组[数量];[ ]里的整数表示变量的数量 int arr[5] <=> int n1,n2,n3,n4,n5; 数组的变量,值也是...

    1.数组的概念及定义

    数组:数组就是变量的集合,是一种指定义变量的方法。

    (1)一维数组

    一维数组:把变量排成一排。
    定义:类型 数组[数量];[ ]里的整数表示变量的数量
    int arr[5] <=> int n1,n2,n3,n4,n5;
    数组的变量,值也是不确定的,为了安全需要初始化。
    使用:数组名[编号];
    [ ]里的整数表示的是编号 arr[0],arr[1],arr[2],arr[3],arr[4]; 编号也叫下标,范围:0 ~ 数量-1。

       遍历:配合循环语句,使用循环变量当作数组的编号。
    
    	for(int i=0; i<5; i++)
    	{
    		printf("%d\n",arr[i]);
    	}
    

    初始化:类型 数组[数量] = {v0,v1,v2,v3…};
    1、如果初始化数据不够,编译器会自动补零。
    2、如果初始化数据过多,编译器会丢弃多余的数据并给出警告。
    3、对数组初始化时,数组的数量可以省略,编译器会统计出初始化数据的个数然后再告诉数组。
    sizeof(arr) 计算出数组的总字节数。
    sizeof(arr[0]) 计算出其中一个变量的字节数。

    (2)二维数组

    二维数组:把变量排一个方阵。
    定义:类型 数组名[行数][列数];
    int arr[3][4];
    使用:数组名[行编号][列编号],编号从零开始。
    arr[0][0],arr[0][1],arr[0][2],arr[0][3]
    arr[1][0],arr[1][1],arr[1][2],arr[1][3]
    arr[2][0],arr[2][1],arr[2][2],arr[2][3]

    遍历:配合双层for,外层循环负责遍历行,内层循环负责遍历列。
    		for(int i=0; i<3; i++)
    		{
    			for(int j=0; j<4; j++)
    			{
    				printf("%d ",arr[i][j]);
    			}
    			printf("\n");
    		}
    

    初始化:数组名[行编号][列编号] = {{v0,v1,v2},{v0,v1,v2},{v0,v1,v2}};

    (3)数组越界

    数组越界的后果:
    1、产生脏数据。
    2、一切正常。
    3、段错误 (核心已转储)。

    (4)数组的应用:走迷宫

    走迷宫:
    1.数据分析:
    迷宫:char maze[10][10];
    墙 ‘#’
    老鼠 ‘@’
    出口 ’ ’
    路 ’ ’
    老鼠的坐标:char mouse_x,mouse_y;
    出口的坐标:char out_x,out_y;
    2.业务流程:
    显示迷宫:先清理屏幕,再显示迷宫。
    stdlib.h
    system(“clear”);
    判断是否到达出口:判断老鼠的坐标与出口的坐标是否重合。
    获取方向键:
    getch.h
    getch();
    183 up,184 down,185 right,186 left
    先把原位置赋值为’ ‘,新位置赋值为’ '。
    不能穿墙,不能越界。

    展开全文
  • C语言 数组

    2016-06-26 20:28:00
    数组元素也是一种变量, 其标识方法数组名后跟一个下标。下标表示了元素在数组中的顺序号。数组元素的一般形式为: 数组名[下标] 数组元素通常也称为下标变量。必须先定义数组,才能使用下标变量。在C语言中只能...
  • C语言 数组 讲解.ppt

    2020-04-17 22:03:19
    例 求一个班100个学生的平均成绩然后统计高于平均分的人数 使用简单变量和循环结构相结合的方法求平均成绩 aver = 0 ; for( i = 1 ;i;i++) { scanff &mark; aver = aver + mark; } aver = aver / 100; ;分析 1.此100...
  • 此篇是c语言数组与指针的定义例子,通过习题理解 更多资料请点击:我的目录 1、 假如有如下定义: int a[3][5]; a. 用 1 种方法表示 a[2][3]的地址。 &a[2][3] b. 用 2种方法表示 a[2][0]的地址。 &a[2] &...
  • 通过C语言数组解决一些简单的递推数学问题 c语言是一种十分适合解决数学问题的编程语言。其中数组对于解决递推问题有十分优秀的作用。 数组:  数组就是变量的集合,是一种指定义变量的方法。  一维数组:  ...
  • C语言 数组指针初始化

    千次阅读 2020-06-20 10:41:03
    当然不行,不管从初始化器,还是从原理上来讲都不正确,首先a[3][4]表示的是数组中第4行第5个元素,请问,可以对数组中具体的一个元素赋这么长一串值吗?所以不能这样赋值。第一种写法是属于初始化,初始化会自动...
  • 第十课 C语言数组

    2018-07-13 17:56:08
    表示定义一个数组,里面可以储存十个int型的数据,他们的地址连续。PS:一般来讲,数组表示首地址3.初始化,引用一般来讲,定义和初始化是同时进行的。引用数据,就是引用数据的内容。引用方法用两种,一个是通过...
  • c语言数组的地址的表示方法

    千次阅读 2018-07-01 21:23:43
    c语言的数组的地址的表示方法 今天刚发现了c语言数组地址表示另一种不错的方法。这个方法跟指针结合起来,对于操作内存来说,非常方便。 #include&lt;stdio.h&gt; int main(void) { int c[5] = {1,2,3,4...
  • haylem..24在C.C中的数组只是用于访问连续内存空间的语法糖,或者 - 在这里无耻地贬低它 - 指针符号的变体....您可以使用C中的数组表示法替换指针算法,反之亦然.以下将使用不同的访问方法打印数组的5个元素:#incl...
  • c语言教程 数组

    2012-03-13 06:34:22
    c语言教程 数组表示方法使用 注意问题 举例说明
  • (2)、第二种是用一维数组来表示二维数组,从显示的元素地址可以看出,二维数组和一维数组表示的二维数组在内存中的储存方式其实是一样的,不过使用二维数组看起来要简单些,只要不用进行地址转换。 (3)、第三...
  • c语言字符串数组的两种表示方法

    千次阅读 多人点赞 2017-09-21 00:31:56
    c语言字符串数组的两种表示方法
  • c语言数组arr的表示含义

    万次阅读 2016-12-01 23:35:58
    大概很多初学者都不能完全搞懂数组表示方法  以下我举例说明数组的表示及含义  int num= 10;  int arr [10];  printf("%d\n",sizeof(arr));  printf("%d\n",sizeof(arr+0));  以上两种情况打印出的有何不同...
  • C语言二维数组的多种表示方法小结 昨天,一个小可爱问我,为何函数中,数组可以改变主函数中的值,比如b[i],就可以改原来数组中的值。其实b[i] 等价于 *(b + i)也是通过地址间接更改的,小可爱醍醐灌顶。 随便聊到...
  • (C语言) 用数组方法判断素数

    千次阅读 2020-02-26 16:37:17
    Method One int main() { const int maxnum = 100; int isPrime[maxnum]; int i, x; for (i = 0; i < maxnum;...//把数组所有元素初始为1 ... //元素的下标代表判断的数字,值为1表示素数,...
  • #include int main() { int i,j;int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; //int *p[3]={a[0],a[1],a[2]}; for(i=0;i;i++) for(j=0;j;j++) printf("%d %d %d\n",a[i][j],*(a[i]...//这三个表示的都一样! return 0; }
  • (2)、第二种是用一维数组来表示二维数组,从显示的元素地址可以看出,二维数组和一维数组表示的二维数组在内存中的储存方式其实是一样的,不过使用二维数组看起来要简单些,只要不用进行地址转换。 (3)、第三种...
  • C语言数组长度

    千次阅读 2018-12-02 19:51:46
    我们很苦恼的是,C语言不像JAVA那样把所有的方法都给我们封装好了,我们可以直接拿来用。那么我们该如何求一个未满的数组的长度呢?下面给你一个方法: #include&amp;amp;amp;amp;amp;lt;stdio.h&amp;amp;...
  • C语言数组的宏定义

    万次阅读 2013-10-30 11:01:46
    只有在实际的项目开发中,在阅读别人写的代码的过程中才能...这次在遇到在C语言表示MAC的方法,才更有感触——C语言数组的宏定义。 typedef int bcm_mac[6]; void main() { bcm_mac p; bcm_mac* pointer =
  • 第二种是用一维数组来表示二维数组,从显示的元素地址可以看出,二维数组和一维数组表示的二维数组在内存中的储存方式其实是一样的,不过使用二维数组看起来要简单些,只要不用进行地址转换。 第三种表示是用指针...

空空如也

空空如也

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

c语言数组表示方法

c语言 订阅