0%

C语言学习笔记之数组篇

数组篇

循环部分因为有python基础,就快速的过一遍,不作详细记录。直接开始数组篇的学习了哦~

一维数组

问题

如何写一个程序计算用户输入的数字的平均数,并输出所有大于平均数的数?

实验代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <stdio.h>

int main()
{
int x;
double sum = 0;
int cnt = 0;
//定义数组
int number[100];
scanf("%d", &x);
while( x!= -1 ){
//对数组中的元素赋值
number[cnt] = x;
{
int i;
printf("%d\t", cnt);
for (i=0; i<=cnt; i++ ){
printf("%d\t", number[i]);
}
printf("\n");

}

sum += x;
cnt ++;
scanf("%d", &x);
}
if (cnt > 0 ){
printf("%f\n", sum/cnt);
int i ;
//遍历数组
for (i=0;i<cnt;i++){
//使用数组中的元素
if (number[i] > sum/cnt){
printf("%d\n", number[i]);
}
}
}
}

image-20220109171512344

定义数组

语法格式

<类型>变量名称[元素数量];

例子

1
2
int grades[100];
double weight[20];

注:元素数量必须是整数

什么是数组

  • 是一种容器(放东西的东西),特点是:

    1、其中的元素具有相同的数据类型

    2、一旦创建,不能改变大小

    3、*(数组中的元素在内存中是连续依次排列的)

int a[10]

  • 一个int的数组
  • 10个单元:a[0], a[1], a[2], … a[9]
  • 每个单元就是一个int类型的变量
  • 可以出现在赋值的左边或右边
  • *在赋值左边的叫做左值

数组的单元

  • 数组的每个单元就是数组类型的一个变量
  • 使用数组时放在[]中的数字叫做下标或索引,下表从0开始计数

有效的下标范围

  • 编译器和运行环境都不会检查数组下标是否越界,无论是对数组单元做读还是写
  • 一旦程序运行,越界的数组访问可能造成问题,导致程序崩溃
  • segmentation fault
  • 所以这是程序员的责任来保证程序只使用有效的下标值:[0,数组的大小-1]

长度为0的数组(图一乐)

int a[0];

可以存在,但是没用啊。。。

实例练习1

题目

写一个程序,输入数量不确定的[0,9]范围内的整数,统计每一种数字出现的次数,输入-1表示结束。

二维数组

一个三行五列的矩阵

1
int a[3][5]

遍历二位数组

1
2
3
4
5
for ( i=0; i<3; i++ ){
for ( j=0; j<5; j++){
a[i][j] = i*j;
}
}

二维数组的初始化

image-20221219221744702

井字棋游戏实例

image-20221219223248599

image-20221219223319614

-------------本文结束感谢您的阅读-------------