数组知识点

简介: 数组知识点

数组的定义

一组数据的集合,用于储存大批量相同数据类型的数据

一维数组

基本格式

数据类型 数组名 [数组大小]

使用

数组名[下标]

int score[50];
  score[0] = 80;
  score[1] = 85;
  //……
  score[49] = 75;
  //score[50]:数组访问越界,从0开始,个数为50个
  float f[10];
  f[1] = 1.1;
  f[2] = 2.2;

特点

是一组有序数据的集合

用一个数组名和下标来唯一地表示数组中的每个元素

数据中的每个元素都是属于同一数据类型。不能把不同数据类型的数据放在同一个数组

数组的初始化

int score1 = 80;//初始化赋值
  int score2 = 83;
  int score3 = 76;
  int score6;
  score6 = 66;//赋值
  //int score……;
  printf("%d\n", score1);
int arr1[10] = { 1,2,3,4,5,6,7,8,9,10 };
  //使用初始化列表方式给数组初始化赋值
  printf("%d\t%d\t%d\t", arr1[0], arr1[1], arr1[9]);
  int arr2[8] = { 0,1,2,3,4,5 };
  //可以只给部分元素初始化赋值,从下标为0开始赋值,没有赋值元素默认为0
  printf("%d\t%d\t%d\t", arr2[0], arr2[1], arr2[9]);
  int arr3[] = { 1,2,3,4,5,6 };
  //int arr3[];
  //定义数组时必须给定数组大小
  //int arr4[n];//给定的数组大小必须为整型常量,不能是变量,也不能是小数
  int arr5[] = { 1,2,3,4,5,6 };
  //初始化列表方式给定数组大小,根据列表数据个数决定数组大小

输入输出

int arr6[10] = { 0 };
  //所有数组元素初始化为0,
  // 没有初始化的数组,元素储存的是乱数据
  //可以循环输入输出数组元素
  for (int i = 0; i < 10; i++)
  {
    printf("%d\t", arr6[i]);//使用循环变量i控制数组下标改变
  }
  putchar('\n');
  for (int i = 0; i < 10; i++)
  {
    scanf("%d", &arr6[i]);
  }
  for (int i = 0; i < 10; i++)
  {
    printf("%d\t", arr6[i]);//使用循环变量i控制数组下标改变
  }
  putchar('\n');

二维数组

基本格式

数据类型 数组名 数据行列

/二维数组:相当于多个一维数组的组合
  float f[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };
  //定义一个3行4列二维数组f,并给每个元素赋值
  printf("%f\t%f\t%f\t%f\n", f[0][0], f[0][1], f[1][0], f[2][3]);//1,2,5,12
  //二维数组内存大小=单个数组元素大小*行数*列数
  printf("%d\t", sizeof(f));//48

赋值

int arrs1[4][5] = { 0 };//全部赋值
  int arrs2[3][4] = { 1,2,3,4,5 };//给部分元素赋值
  int arrs3[3][4] = { {1,2,3,4},
            {5,6,7,8},//每一行分别赋值
            {9,10} };//每一行部分元素赋值
  int arrs5[][4] = { {1,2,3,4},
  {5,6,7,8}, {9,10} };//初始赋值行下标可省略,列下标不能省略

双重循环输入

  for (int i = 0; i < 3; i++)
  {
    for (int j = 0; j < 4; i++)
    {
      scanf("%d\t", f[i][j]);//双重循环输入
    }
  }
  for (int i = 0; i < 3; i++)
  {
    for (int j = 0; j < 4; i++)
    {
      printf("%d\t", f[i][j]);//双重循环输出
    }
    putchar('\n');
  }
2.

字符数组

用来存储字符数据的数组,一个元素存放一个数组

//字符数组:字符类型数组
  char ch [10] = { 'a','h',',','\\','1','5' };
  ch [8] = 's';
  char s[20] = "abcdefg123456!@#";
  s[10] = '\n';//把第10个改为回车
  for (int i = 0; i < 20; i++)
  {
    //printf("%c", s[i]);
    putchar(s[i]);
  }
  printf("%s", s);//以%s格式整体输出整个字符串
  scanf("%s", s);//以%s格式输入整个字符串
  //以字符串格式输入不用带&
  printf("%s", s);//以%s格式整体输出整个字符串
  //以字符串格式输出不用带&
  gets(s);//gets为字符串输入函数
  puts(s);//puts为字符串输出函数
  //char str[10] = "abcdefghij";所以要少一位
  char str[10] = "abcdefghi";
  puts(str);
  char strl[6] = "";//"\0"初始化为空字符串
  //字符串需要以'\0'作为结束标志(ASCLL码为0)
  // 字符串处理总是会以'\0'作为结束
  //二维字符数组
  char strs[5][10] = { "abcdefg","123456","!@#$%^","_+()" };
  for (int i = 0; i < 5; i++)
  {
    puts(strs[i]);
  }
  //一个中文占两个字符位置

常用字符串处理函数

        /strlen:求字符串长度函数
    printf("%d\n", strlen(strl));//6
    printf("%d\n", sizeof(strl));//20
    printf("%d\n", strlen("abcdefg"));//7
    printf("%d\n", sizeof("abcdefg"));//8
    //strlen只计算有效字符的个数,不会计算'\0'
    //sizeof计算所有字符个数,会计算'\0'
    //strcat:字符串连续函数
    char str1[20] = "abcdefg", str2[10] = "123456";
    puts(str1);
    puts(str2);//将str2连接到str1中
    strcat(str1,str2);
    puts(str1);
    puts(str2);
        //strcpy:字符串拷贝函数(复制字符串)
    char str1[10] = "", str2[10] = "";
    gets(strl);
    gets(str2);
    puts(strl);
    puts(str2);
    strcpy(str1, str2);
    puts(strl);
    puts(str2);
    //strcmp:字符串比较函数(比较两个字符串的大小)
    char str1[10] = "", str2[10] = "";
    gets(strl);
    gets(str2);
    puts(strl);
    puts(str2);
    printf("%d\n", strcmp(str1, str2));
    /*
    比较规则:
    第一个大于第二个 返回1
    第一个小于第二个 返回-1
    等于   0
    比较原理:ASCLL码字符大小
    第一个不同的字符的比较大的字符串就大,反之小
    */
相关文章
|
6月前
|
存储
数组的进阶
数组的进阶
|
3月前
|
安全 编译器 C语言
C++入门-数组
C++入门-数组
|
6月前
|
存储 编译器
数组应该怎么用?
数组应该怎么用?
26 1
|
6月前
|
算法 Java 程序员
Java数组全套深入探究——进阶知识阶段4、一维数组练习题
Java数组全套深入探究——进阶知识阶段4、一维数组练习题
57 0
Java数组全套深入探究——进阶知识阶段4、一维数组练习题
数组的简单认识及其学习(二)
数组的简单认识及其学习(二)
64 0
|
11月前
|
C语言
数组知识点总结
数组知识点总结
58 0
|
算法 编译器 C语言
数组知识点(下)
数组知识点(下)
|
存储 编译器 C语言
|
存储 搜索推荐 算法
数组掌握秘籍:Java数组进阶指南
数组掌握秘籍:Java数组进阶指南