一. 一维数组的定义

类型说明符   数组名  [常量表达式]

说明:

(1) 数组名的命名规则和变量名相同,遵循标识符命名规则。

(2) 在定义数组时,需要指定数组中元素的个数,方括号中的常址表达式用来表示元素的个数,即数组长度。

(3) 常数表达式中可以包括常量和符号常量,不能包含变量。

(4)类型说明符 :这个数组中要放的是哪一种类型的数据 。

二.一维数组元素的引用

int array[10]; //定义了一个数组
                    //定义了一个int型的数组 
                    //定义了一个可以包含10个int型数据的一维数组 

三.一维数组的初始化

(1)全部初始化 
   int a[10] = {1,2,3,4,5,6,7,8,9,10};
(2)部分初始化 ---值依次给到前面的元素,后面没给值的元素,默认初始成0 
   int a[10] = {1,2,3,4,5};
 (3)不初始化  ---随机值
   int a[10];  
 (4)初始化为 0
   int a[10] = {};
   int a[10] = {0};

说明:数组在存储上有连续性、单一性、有序性的特点。

四.一维数组中的排序问题

1.选择排序 

选择排序法的思路是:在合适的位置上选择合适的数。

例如我们的数组是a[]={3,5,4,1,2},首先要确定a[0]位置上的值(默认为递增排序),所以要将此时要把a[1]a[2]...a[n-1]上的值都拿来比较,将其中最小的值1放入a[0]的位置,并把原来a[0]位置上的值放到那个最小值上的地址处{1,5,4,3,2}。然后要确认a[1]的值,所以拿a[2]a[3]...a[n-1]上的值都拿来比较,将其中最小的值放入a[1]的位置,并把原来a[1]位置上的值放到那个最小值上的地址处{1,2,4,3,5}。所以我们用两个循环来实现选择排序,第一个循环for(i=0;i<n-1;++i)用来确定数组的位置,第二个循环for(j=i+1;j<n;++j)来比较剩余的最小值来填到已确定数组的位置。

可以通过以下代码来实现


2.冒泡排序

冒泡法的思路是:将相邻两个数比较,将小的调到前头。所以程序运行第一趟就会把最大值调到数组的最后面,所以理论上最多运行n-1次就会实现冒泡排序。例如我们的数组是a[]={3,5,4,1,2},运行一趟的结果就是{3,4,1,2,5},运行两趟就是{3,1,2,4,5}以此类推。用for(i=0;i<n-1;++i)来控制趟数,用for(j=0;j<n-1-i;++j)来实现一趟的比较,如果a[j]>a[j+1],那就将两数调换位置,否则就不调换位置。

可以通过以下代码来实现


3.插入排序 

插入排序的思想是找到合适的位置进行插入。

例如我们的数组是a[]={3,5,4,1,2},首先把a[1]的值与a[0]的值做比较,如果a[1]的值比a[0]的值小则插入到a[0]的前面,否则插入a[0]后面,然后处理a[2]的值,如果a[2]>a[1],插在a[1]后面,如果a[2]<a[0],那就插在a[0]前面,如果a[1]>a[2]>a[0],那就插在a[0]与a[1]中间。理论上最多运行n-1次就会完成插入排序。

(1)非原地插入排序

(2)非原地插入排序

与原地插入排序的不同就是将数据插入在新的数组上,道理是相同的。


4.快速排序(现阶段没有学) 

五.查找(二分查找)

二分查找的思想就是找到数组的中间值与要寻找的数字进行比较,如果要寻找的数字小于中间值,则可以将范围缩小在初始值与中间值前一位之间,循环这个过程。

六.字符型一维数组

char s[10]; //字符这种数据、

其在内存上存储的模式是这样的char s[10] = {'h','e','l','l','o','\0'};特殊在 ---它始终有一个结束标志 '\0'。

 数组特点:
 1.连续性 
 2.单一性 
 3.有序性 

七.字符串处理函数

  1.gets

其作用是从终端输入一个字符串到字符数组,并且得到一个函数值。该函数值是字符数 组的起始地址。如执行下面的函数: gets(str) 从键盘输入: Computer/将输入的字符串"Computer"送给字符数组 str(请注意,送给数组的共有 9 个字符,而不是 8 个字符),函数值为字符数组 str 的起始地址。一般利用 gets 函数的目的是向字符数组 输入一个字符串,而不大关心其函数值。


  2.puts

puts (字符数组) 其作用是将一个字符串(以'\O'结束的字符序列)输出到终端。假如已定义 str是一个字 符数组名,且该数组已被初始化为"China"。


  3.strlen

strlen (字符数组) strlen 是 STRing LENgth(字符串长度)的缩写。它是测试字符串长度的函数。函数 的值为字符串中的实际长度(不包括'\o'在内)。例如: char str[lO]= {"China''.); printf (" % d", strlen(str)); 输出结果不是 10,也不是 6,而是 5。也可以直接测试字符串常量的长度,例如: strlen("China'');


  4.strcpy

strcpy(s2,s1);

#include <string.h>

char *strcpy(char *dest, const char *src);
功能:
    将src中字符串,复制到dest中 
参数:
  @dest  目标字符串所在空间 //地址 
  @src   源字符串所在的空间 //地址 
返回值:
  成功 返回就是dest
  失败 NULL 
  

  5.strcat 

#include <string.h>

char *strcat(char *dest, const char *src);
功能:
    将src中字符串,拼接到dest中 
参数:
  @dest  目标字符串所在空间 //地址 
  @src   源字符串所在的空间 //地址 
返回值:
  成功 返回就是dest
  失败 NULL 

  6.strcmp 

#include <string.h>

int strcmp(const char *s1, const char *s2);
功能:
    比较s1与s2 
参数:
  @s1   s1字符串所在空间 //地址 
  @s2   s2字符串所在的空间 //地址 
返回值:
  成功
     >  0   s1 > s2
     <  0   s1 < s2 
     == 0   s1 == s2
  失败 NULL 

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐