本部分包含数组练习题。 1.创建一个整形数组,完成对数组的操作实现函数init()初始化数组为0.实现print()打印数组的每个元素。实现reverse()函数完成数组元素的逆序。2.交换数组(数组一样大)
代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<windows.h>
void init(int arr[],int len)
{
for (int i = 0;i < len;i++)
{
arr[i] = 0;
}
}
void print(int arr[], int len)
{
printf("\n");
for(int i=0;i<len;i++)
{
printf("%d ", arr[i]);
}
}
void reverse(int arr[], int len)
{
int temp = 0;
int right = len-1;
for (int i=0;i<len/2;i++)
{
temp = arr[i];
arr[i] = arr[right];
arr[right] = temp;
right--;
}
}
void exchange(int arr[], int arr2[], int len)
{
int temp = 0;
for (int i = 0;i < len;i++)
{
temp = arr[i];
arr[i] = arr2[i];
arr2[i] = temp;
}
}
int main()
{
//数组练习题
//1.创建一个整形数组,完成对数组的操作
//实现函数init()初始化数组为0.实现print()打印数组的每个元素。实现reverse()函数完成数组元素的逆序
int arr[] = { 1,2,3,4,5 };
int len = sizeof(arr)/sizeof(arr[0]);
print(arr,len);
reverse(arr, len);
print(arr, len);
init(arr, len);
print(arr, len);
printf("\n");
//2.交换数组(数组一样大)
int arr2[] = { 6,7,8,9,10 };
exchange(arr, arr2, len);
print(arr, len);
print(arr2, len);
}
笔记:
- 数组
- 5.1 概述
- 所谓数组,就是一个集合,里面存放了相同类型的数据元素
- 特点1:数组中的每个数据元素都是相同的数据类型
- 特点2:数组是由连续的内存位置组成的
- 例图:
- 5.2 一维数组
- 5.2.1 一维数组定义方式
- 一维数组定义的三种方式:
- 数据类型 数组名[ 数组长度 ];
- 数据类型 数组名[ 数组长度 ] = { 值1,值2 ...};
- 数据类型 数组名[ ] = { 值1,值2 ...};
- 图示:
- 注意:如果在初始化数据的时候,没有全部填写完,会用0来填补剩余数据+数组长度必须是常量
- 总结1:数组名的命名规范与变量名命名规范一致,不要和变量重名
- 总结2:数组中下标是从0开始索引
- 一维数组定义的三种方式:
- 5.2.2 一维数组数组名
- 一维数组名称的用途:
- 1.可以统计整个数组在内存中的长度
- 2.可以获取数组在内存中的首地址
- 注意:数组名是常量,因此不可以赋值
- 总结1:直接打印数组名,可以查看数组所占内存的首地址
- 总结2:对数组名进行sizeof,可以获取整个数组占内存空间的大小
- 一维数组名称的用途:
- 5.2.3 冒泡排序
- 作用: 最常用的排序算法,对数组内元素进行排序
- 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
- 对每一对相邻元素做同样的工作,执行完毕后,找到第一个最大值。
- 重复以上的步骤,每次比较次数-1,直到不需要比较
- 作用: 最常用的排序算法,对数组内元素进行排序
- 5.2.1 一维数组定义方式
- 5.3 二维数组
- 二维数组就是在一维数组上,多加一个维度。
- 5.3.1 二维数组定义方式
- 二维数组定义的四种方式:
- 数据类型 数组名[ 行数 ][ 列数 ];
- 数据类型 数组名[ 行数 ][ 列数 ] = { {数据1,数据2 } ,{数据3,数据4 } };
- 数据类型 数组名[ 行数 ][ 列数 ] = { 数据1,数据2,数据3,数据4};
- 数据类型 数组名[ ][ 列数 ] = { 数据1,数据2,数据3,数据4};
- 建议:以上4种定义方式,利用第二种更加直观,提高代码的可读性
- 总结:在定义二维数组时,如果初始化了数据,可以省略行数
- 二维数组定义的四种方式:
- 5.3.2 二维数组数组名
- 二维数组名称的用途:
- 1.查看二维数组所占内存空间
- 2.获取二维数组首地址
- 二维数组名称的用途:
- 5.4 数组&函数
- 传递数组给函数
- 可以通过指定不带下标(索引)的数组名来传递一个指向数组的指针
- 传数组给一个函数,数组类型自动转换为指针类型,因而传的实际是地址
- 数组作为参数的三种方式
- 1.形式参数是一个指针:void myFunction(int *param)
- 2.形式参数是一个已定义大小的数组:void myFunction(int param[10])
- 3.形式参数是一个未定义大小的数组:void myFunction(int param[])
- 从函数返回数组
- C++ 不允许返回一个完整的数组作为函数的参数。但是,您可以通过指定不带索引的数组名来返回一个指向数组的指针。
- 如果您想要从函数返回一个一维数组,您必须声明一个返回指针的函数。
- 例子:int * myFunction()
- 传递数组给函数
- 5.1 概述