全面解析数组:定义、初始化、访问规则及注意事项全揭秘

[[id_1424891704]d_[id_[id_1685255285[id_87172678[id_121401310]]016779300]17523194]

全面解析数组:定义、初始化、访问规则及注意事项全揭秘

数据类型为变量的有序集合即列表,数组中存储的变量被称作数组元素。数组占据着一块连续的内存空间,元素是按照下标顺序连续存放的,通过下标可以访问到对应的数组元素。

一维数组

数组定义

int[id_1017850149]10] 
 //定义数组名为a的数组,有10个数组元素

注意:数组的大小不允许动态定义,eg:int a[n]

初始化

所有元素都被赋予了初值,例如 int a[5] = {1,2,3,4,5}。由于所有元素都有了初值,所以数组的长度是可以省略的。

部分元素进行了赋值,即 int a[5] = {1,2,3},而剩下的元素,系统会自动将其初始化为 0。

引用

数组下标的元素起始通常为 0 。例如,对于 int a[4] = {1,2,3,4} ,要为数组中的第二个元素赋值,可使用 scanf("%d",&a[1]) ;要打印数组第三个元素的值,可使用 printf("%d",a[2]) 。

冒泡排序

冒泡排序思路:由于是升序排列,所以最大值需放在最后。接着依次对每两个相邻元素进行比较,若当前项大于后一项,就交换它们的位置,这有点像冒泡的过程,能把较大的值冒出来并向后插入。

#include int main(){ 
//flag是一个哨岗值,当数组元素不在发生 
//改变的时候就跳出循环,减少循环次数  
int i,j,flag,c; 
int a[10]; 
printf("请输入10个整数:\n"); 
for(i = 0;i < 10;i++) {  
  scanf("%d",&a[i]); 
}  
for(i = 0;i < 9;i++) { 
  count++;  
  flag = 0;  
  for(j = 9;j > i;j--)  {   
    if(a[j - 1] > a[j])   {    
      c = a[j - 1];    
      a[j - 1] = a[j];    
      a[j] = c;    
     flag = 1;   
    }  
  }  
  if(flag == 0)break; 
} 

printf("输出排序后的10个整数:\n");
for(i = 0;i < 10;i++) {  
  printf("%d  ",a[i]);
} 

return 0;
}

选择排序

选择排序的思路是:每次都找出最大(或最小)的那一项,然后将其与前面的元素进行位置交换。代码的作用是:把输入的 10 个元素进行排序,使其按照从小到大的顺序排列,最后输出排序后的结果。

#include int main(){ 
  int a[10],i,j,k,min,save; 
  printf("请输入10个整数:\n"); 
  for(i = 0;i < 10;i++) {  
    scanf("%d",&a[i]); 
  } 
  for(i = 0;i < 9;i++) {  
    k = i;  min = a[i];  
    for(j = i;j < 10;j++)  {      
      if(a[j] < min)   {    
        min = a[j];    
        k = j;   
      }    
    }  
    if(k!= i)  {   
    save = a[i];   
    a[i] = a[k];   
    a[k] = save;  
    } 
  } 

  printf("输出排序后的10个整数:\n"); 
  for(i = 0;i < 10;i++) {  
    printf("%d  ",a[i]); 
  } 
  return 0;
}

二维数组

在现实生活里,很多时候我们处理的不只是一维的数据,还常常涉及到二维或者更多维的情况。就像数学中的矩阵那样。在这种情况下,一维数组明显是不适用的。所以,C 语言允许使用二维数组。在代码示例中,我们对数学中的矩阵的转置进行了代码演示。

数组定义

int a[2][2] 

定义一个2*2的数组数组元素有:

a[0][0],a[0][1],a[1][0],a[1][1]

数组初始化

①连续赋值:int a[2][2] = {1,2,3,4}

定义二维数组并分段赋值:数组 a 是一个 2 行 2 列的二维数组,将其元素分别赋值为{{1,2},{3,4}}

部分赋值的情况是:定义了一个二维数组 int a[2][2] ,并进行了初始化赋值为 {{1,2},{3}} ,对于没有填满的项,系统会自动将其设置为 0 。

如果所有元素都进行了赋值,那么第一维的长度是可以省略的。例如:int a[][2] = {1,2,3,4}

数组引用

同样,数组下标是从 0 开始的。a[0][1]表示 a 中的第 0 行第 1 列的元素。给第 0 行第 1 列的元素赋值,即 scanf("%d",a[0][1])。

打印数组中的第 3 个元素,具体为:通过 printf 函数输出数组 a 中第 1 行第 0 列的元素值,即输出 "%d" 所对应的数组元素值。

这个要自己算的哦!

#include int main(){ 
  int i,j; 
  int a[3][4],b[4][3]; 
  printf("请输入a的数组元素:\n"); 
  for(i = 0;i < 3;i++) {  
    for(j = 0;j < 4;j++)  
    scanf("%d",&a[i][j]); 
  } 
  for(i = 0;i < 4;i++) {  
    for(j = 0;j <3;j++)  b[i][j] = a[j][i]; 
  } 

  printf("输出转置后的矩阵b:\n"); 
  for(i = 0;i < 4;i++) {  
    for(j = 0;j < 3;j++)  printf("%d  ",b[i][j]);  
    printf("\n");
  } 
  return 0;
} 

输入的内容有 1、2、3、4、5、6、7、8、9、10、11、12 这些数字。

输出:1 5 9 2 6 10 3 7 11 4 8 12

下载方式

高清思维导图下载

你可能想看:
« 上一篇
下一篇 »

相关推荐

FreeBasic:强大免费开源的64位basic编译器及应用优势

2025年05月10日

82阅读

脊柱侧弯矫正方法大盘点:运动康复、支具矫正等多种方式

2025年05月09日

85阅读

如何在winForm标题栏去掉标题文字且任务栏图标正常显示

2025年05月09日

85阅读

十一黄金周促销广告词大全,国庆购物狂欢等你来

2025年05月09日

77阅读

关闭快速编辑模式及插入模式,设置控制台指定文字颜色举例

2025年05月09日

63阅读

黄金搭档低糖高钙饮品包装及成分功效全解析,适合人群要知晓

2025年05月09日

91阅读