c语言这张图总结的非常好

一张图秒懂C语言( 数组 )_指针

   下载方式  

高清思维导图下载

关注下方公众号

回复:c03 

一张图秒懂C语言( 数组 )_字符串_02

回复:c03领取

何为数组?

将数据类型的变量的有序集合(列表),数组中存储的变量称为数组元素,数组占据着一块连续的内存空间,元素按照下标顺序连续存放,根据下标访问对应的数组元素

一维数组

数组定义

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


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


初始化

①所有元素都赋初值:​​int a[5] = {1,2,3,4,5};​​因为所有元素都赋初值了,数组的长度可以省略

②部分元素赋值:​​int a[5] = {1,2,3}​​剩下的系统会自动初始化为0

引用

数组下标的元素总是从0开始的eg:​​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}​

②分段赋值:​​int a[2][2] = {{1,2},{3,4}}​

③部分赋值:​​int a[2][2] = {{1,2},{3}}​​不填满的项系统会自动设置为0

④如果全部元素都赋值了,那么第一维的长度可以省略:eg:​​int a [][2] = {1,2,3,4}​

数组引用

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

打印数组中的第3个元素:​​printf("%d",a[1][0]);​

这个要自己算的哦!

#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


   下载方式  

高清思维导图下载

关注下方公众号

回复:c03 

一张图秒懂C语言( 数组 )_指针_03

长按上方二维码即可关注

回复:c03领取