zl程序教程

您现在的位置是:首页 >  后端

当前栏目

5数组

2023-09-11 14:21:07 时间

一、基本概念

数组是用来存储多个类型相同的数据的数据结构——容器。

1.多个,类型相同。

2.数组是一段连续的内存区域。

3.数组变量的本质就是其首字节的地址。

4.数组是数据的容器,而非数据本身。

5.数组中的每个数据项被称为数组的元素,一个数组包括一到多个元素。数组中元素的个数被称为数组的长度。

6.数组下标就是元素在数组中的索引号,从零开始。

7.数组元素通过数组名和下标的组合进行访问,[]叫做下标运算符:数组名[下标],表示数组中第“下标”个元素。

二、数组的定义

元素类型 数组名[长度(元素个数)] = {初始化表};

int arr[10];//0-9

arr是个数组,其中包含10个元素,每个元素都是int类型的。

类型定义:从近到远,由右向左,括号优先。

arr[0] = 100; // 将100赋值给arr数组的第0个元素。

printf ("%d", arr[8]); // 打印arr数组的第8个元素。

有效元素:arr[0], arr[1], ..., arr[9]

printf ("%d", arr[10]); // 越界

arr[10] = 100; // 可能引发错误

arr[12] = 200; // 可能引发错误

arr[i]是数组元素,i数组元素的下标,从0到数组的长度-1。超出此范围,将导致段错误或者覆盖其它变量。

三、数组的使用

1.数组的初始化

int arr[10] = {100,200,300,400,500,600,700,800,900,1000};

依次取初始化表中的值对数组中的每个元素进行初始化。

int arr[10] = {100, 200, 300};

初始化没有显示指明初始值的元素,一律初始化为零。

int arr[10] = {0}; // 全部初始化为0

int arr[10] = {}; // 全部初始化为0

int arr[10]; // 不做初始化

如果在定义数组时不指定长度,则取初始化表的长度作为数组的长度。

int arr[] = {1,2,3,4,5}; // 等价于int arr[5] = {1,2,3,4,5}

int arr[]; // 错误!

计算数组长度:sizeof (arr) / sizeof (arr[0])

 

输入10个整数,逆序输出
#include <stdio.h>
#include <windows.h>

int main()
{
  int a[10],i,j,temp;
  printf("请输入10个整数,用空格隔开:");
  for(i=0;i<10;i++)
    scanf("%d",&a[i]);
  for(i=9;i>=0;i--)
  {
    printf("%d ",a[i]);
    Sleep(1000);
  } 
        return 0;
} 
 

 

动态数组排序算法源码
#include <stdio.h>
#include <windows.h>

int main()
{
  int a[10]={-55,88,99,-56,520,564,50,45,26,333},i,j,temp;
  /*printf("请输入10个整数,用空格隔开:");
  for(i=0;i<10;i++)
    scanf("%d",&a[i]);*/
  printf("\n");
  /*temp=a[0];//保存最大数
  for(i=0;i<10;i++)
  if(a[i]>temp) temp=a[i];
    printf("数组中最大的数是:%d",temp);*/
  for(i=0;i<9;i++)
    for(j=i+1;j<10;j++) //注意循环的上下限
      if(a[i]>a[j]) 
      { 
        temp=a[i]; 
        a[i]=a[j];
        a[j]=temp; 
      } 
  for(i=0;i<10;i++)
  {
    printf("%d ",a[i]);
    Sleep(1000);
    system("color 4E");
  }
return 0;
}