龙空技术网

c语言学习笔记0603-s数组

int爱喝柠檬水 2090

前言:

目前你们对“c语言读取数据存入一个数组”大约比较关切,你们都想要学习一些“c语言读取数据存入一个数组”的相关知识。那么小编在网络上网罗了一些有关“c语言读取数据存入一个数组””的相关文章,希望大家能喜欢,各位老铁们快快来学习一下吧!

1,数组的格式 :

存储类型 数据类型 数组名 [ 元素个数 ] = {元素1,元素2.‘\0’};

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

意义:在栈区开辟一个大小为12字节的区域(数组大小=sizeof(数据类型)*元素个数)

格式分析:存储类型:数组中元素的存储位置,默认在栈区开辟空间(被auto修饰)

数据类型:数组中每一个元素的类型

数组名:当前该片连续空间的名称,见名知义

元素个数:当前数组中的元素总个数,注意该个数不能写变量。一般该元素个数用常量代替(宏常量居多)

eg:

#includeint main(){auto char str[5]={'a','b','c','d','e'};printf("%c\n",*(str+1));printf("%p\n",&str[0]);printf("%c\n",str[2]);return 0;}

2,数组元素名代表数组首元素的地址,元素的下标从0开始计算,即:str = &(str[0])

3, 当数组在{}之内定义时,意味着是一个局部数组,当不赋值时,其值为随机值

4, 当数组在{}之外定义时,意味着是一个全局数组,当不赋值时,其值为0

5,当数组满初始化时,元素会原样输出

6, 当数组部分初始化时,剩余未被赋值的元素默认补0

7,可以利用6的特性,实现清空一个数组:int arr[5] = {0};

8,对于整形数组而言:一般通过循环完成元素的赋值以及输出

9,冒泡排序:

#includeint main(){int i=0,j=0,k=0;int a[]={33,5,1,3,22};for(i=0;i<4;i++)//需要比较的数一共有5个,每一个数都要和后边的数做比较,所以需要比较四轮。{for(j=0;j<(4-i);j++)//当第一轮比较完之后,确定第一个数值是最小的,即数组a[0],已经是最小的无需再比,下一次比 较时,只需要比较后边4个数,所以比较3次机即可。{if(a[j]{k=a[j];a[j]=a[j+1];a[j+1]=k;//转换a[i]和a[i+1]的值}}}for(int l=0;l<5;l++)//循环打印出排序后的数组顺序。{printf("%d\n",a[l]);}return 0;}

10,数组初始化:

不建议不初始化数组,因为未初始化的数组,内部空间的数据是杂乱的。

部分初始化:

格式::

数据类型 数组名[len]={元素初始值};

提示:元素的初始值个数小于len

注意:部分初始化数组的方式,初始化部分数据会被赋予{}内的初始值,未被初始化的部分

将会被赋值为0

省略长度初始化

格式:

数据类型 数组名[ ]={元素初始值};

提示:省略长度初始化就是在定以数组的时候不指定数组的长度,数组的长度由后面数组的

初始化元素个数决定

int num[]={1,2,3,4,5};

全部初始化

格式:

数据类型 数组名[len]={元素初始值};

提示:元素的初始值个数等于len

11,不同变量的初始值

int : 0

float 0.0

double 0.0

char 空

指针 NULL

字符串: \0

12,随机数和数组的使用

随机数 srandtime - get time in seconds#includetime_t time(time_t *tloc);time_t *tloc:指针,直接赋值为NULL(空)time_t :接收获取到的秒数time的功能是获取当前时间距离1970-1-1 00:00:00的秒数值rand, srand - pseudo-random number generator#includeint rand(void);void srand(unsigned int seed);unsigned int seed:种子值The rand() function returns a pseudo-random integer in the range 0to RAND_MAX(2147483647) inclusiveThe srand() function sets its argument as the seed for a newsequence of pseudo-random integers to be returned by rand().

随机数的产生:

1、通过time获取时间种子

2、通过srand设置时间种子

3、通过rand返回随机数

13,选择排序(交换下标)

#include#include#includeint main(){int i=0,j=0,tmp=0,min=0;time_t times=0;int num[10]={0};times=time(NULL);srand(times);for(i=0;i<10;i++){num[i]=rand()%100;}for(i=0;i<10;i++){printf("num[%d]=%d ",i,num[i]);}printf("\n");for(i=0;i<10;i++){min=i;for(j=i+1;j<10-i;j++){if(num[min]>num[j]){min=j;}}if(min!=i){tmp=num[min];num[min]=num[i];num[i]=tmp;}}for(i=0;i<10;i++){printf("num[%d]=%d ",i,num[i]);}printf("\n");return 0;}

14,二维数组,

格式:

数据类型 数组名[row][column];

row:行数

column:列数

注意:在定以二维数组的时候行可以省略但是列不能省略

如:

int num[2][3];

行可以省,列不能省

方式一:不初始化

数据类型 数组名[row][column];

不对二维数组的成员进行赋值操作

方式二:部分初始化

数据类型 数组名[row][column]={数组元素};

数组元素的个数小于 row*column

方式三:省略行长度初始化

数据类型 数组名[ ][column]={数组元素};

行数等于数组元素的个数除以column

假如初始化中数组的元素个数为8个,列数为3

行位:8/3+1

未初始化的数为0

方式四:全部初始化

数据类型 数组名[row][column]={数组元素};

数组元素的个数等于 row*column

提示:列不能省

标签: #c语言读取数据存入一个数组 #初始化字符串数组为0 #c语言输入数组长度怎么算 #c语言中变量不赋值是默认从0开始吗 #js int数组