首页 技术 正文
技术 2022年11月19日
0 收藏 723 点赞 4,650 浏览 2393 个字

1、 数组的基本概念

一个int类型的变量能保存一个人的年龄,如果想保存整个班的年龄呢?

1. 什么是数组

数组,从字面上看,就是一组数据的意思,没错,数组就是用来存储一组数据的

2. 数组的特点● 只能存放一种类型的数据,比如int类型的数组、float类型的数组● 里面存放的数据称为“元素”2、 数组的定义1. 定义● 声明数组的类型● 声明数组的元素个数(需要多少存储空间)2. 格式

元素类型 数组名[元素个数];

比如:int ages[3];

3. 简单使用● 简单初始化:int ages[5] = {19, 19, 20, 21, 25};● 元素有顺序之分,每个元素都有一个唯一的下标(索引),从0开始● 数组元素的访问:a[i]4. 初始化● 初始化方式◆ int a[3] = {10, 9, 6};◆ int a[3] = {10,9};◆ int a[] = {11, 7, 6};◆ int a[4] = {[1]=11,[0] = 7};● 常见错误◆ int a[];◆ int[4] a;◆ int a[b];◆ a = {10, 11};◆ a[4] = {10,9,8,5}; 

// 错误写法

/* 只能在定义数组的同时进行初始化

int ages[5];

ages = {10, 11, 12, 14};

*/

// 正确写法

// int ages[‘A’-50] = {10, 11, 12, 14, 16};

//int size = sizeof(ages);

//printf(“%d\n”, size);

// 正确写法

/*

int count = 5;

int ages[count];

ages[0] = 10;

ages[1] = 11;

ages[2] = 18;

*/

// 错误写法

// 如果想再定义数组的同事进行初始化,数组元素个数必须是常量,或者不写

//int ages[count] = {10, 11, 12};

5. 内存分析● 数组存储空间的大小● 存储空间的划分(内存的分配是从高地址到低地址进行的,但一个数组内部元素又是从低到高进行的)● 数组名的作用,查看元素地址● 数组越界的注意6. 其他使用● 数组与函数参数◆ 数组元素作为函数参数◆ 数组作为函数参数(sizeof注意)● 遍历数组元素:

遍历:按顺序查看数组的每一个元素

◆ 两种方式遍历(while循环和for循环)◆ 遍历元素值和元素地址

 #include <stdio.h>
int main()
{
int ages[] = {, , , }; // 计算数组元素的个数
int count = sizeof(ages)/sizeof(int); for (int i = ; i<count; i++)
{
printf("ages[%d]=%d\n", i, ages[i]);
} return ;
}

◆ 字符数组的使用7. 习题1> 提示输入5个学生的成绩,算出平均分(最高分、最低分),然后输出

 #include <stdio.h>
int main()
{
// 1.定义一个数组来存储成绩
int scores[]; // 2.提示输入成绩
// 用来存储总分
int sum = ;
for (int i = ; i<; i++) {
// 2.1 提示输入某个学生的成绩
printf("请输入第%d个学生的成绩:\n", i + );
// 2.2 存储当前学生的成绩
scanf("%d", &scores[i]);
// 2.3 累加成绩
sum += scores[i];
} // 3.计算平均分,并且输出
printf("平均分是%f\n", sum/5.0);
return ;
}

2> 设计一个函数:int arrayMax(int a[], int count),找出数组元素的最大值

 #include <stdio.h> int arrayMax(int a[], int count)
{ // 数组当做函数参数传递时,会当做指针变量来使用,指针变量在64bit编译器环境下,占据8个字节 //int size = sizeof(a);
//printf("a=%d\n", size); //sizeof(a); // 1.定义一个变量存储最大值(默认就是首元素)
int max = a[]; // 2.遍历所有元素,找出最大值
for (int i = ; i<count; i++)
{
// 如果当前元素大于max,就用当前元素覆盖max
if (a[i] > max)
{
max = a[i];
}
} return max;
} int main()
{
int ages[] = {, , , , , , , , }; int ages2[] = {, , , , , , , , }; //int size = sizeof(ages); //printf("ages=%d\n", size);
int max = arrayMax(ages, sizeof(ages)/sizeof(int)); printf("%d\n", max);
return ;
}

3> 设计一个函数:int arraySum(int a[], int n),求一维数组a前n个数的和 4> 设计一个函数:将一维整型数组中的元素逆序存放。比如本来是1,3,4,2,逆序存放就变成了:2,4,3,13、 二维数组1. 什么是二维数组● 一个数组能表示一个班人的年龄,如果想表示很多班呢?● 什么是二维数组?int ages[3][10]; 三个班,每个班10个人● 相当于3行10列● 相当于装着3个一维数组● 二维数组是一个特殊的一维数组:它的元素是一维数组。例如int a[2][3]可以看作由一维数组a[0]和一维数组a[1]组成,这两个一维数组都包含了3个int类型的元素 2. 存储● 存储大小● 存储结构和顺序● 存储地址问题3. 初始化● int a[3][4] = {1,2,3,4,5,6};● int a[3][4] = {{},{},{}};● 数组元素简单访问● int a[][5] = {3,21,31,2,32,1};● 注意错误:

int a[3][4];

a[3] = {};

4. 遍历● 遍历所有的元素● 遍历地址● 使用场合:五子棋、俄罗斯方块    

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,089
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,566
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,415
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,187
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,823
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,906