C语言简易数组-冒泡排序

一维数组

整型数组

int main() {
	//int n = 1;
	//int arr[n];//不能这样做!定义时,[]内应输入常量表达式
	//完全初始化:将数组里面填满
	int arr[3] = { 1,2,3 };
	//不完全初始化:未将数组填满,会自动填0的
	int arr1[3] = { 1 };
	return 0;
}

字符串数组

int main() {
	char c[5] = {'a','b','c'};//剩余位置补'\0''
	char c1[] = {'a','b','c'};//会分配相应容量给c1,不会浪费内存,并且没有\0结尾
	char c2[5] = "abc";//abc\0\0 最后一个斜杠0也可默认为0
	char c3[] = "abc";//abc\0
	printf("%s %s %s %s", c, c1, c2, c3);
	return 0;
}

如何输出一维数组

int main() {
	int arr[8] = {0};
	arr[1] = 1;
	arr[3] = 2;
	arr[6] = 3;
	int sz = sizeof(arr) / sizeof(arr[0]);
	//注意:不用减一,char数组才需要,因为char数组后面有\0
	int i = 0;
	for ( i = 0; i < sz; i++)
	{
		printf("%d ",arr[i]);
		//此外,这里[]里面是变量,因为这不是在创建数组,所以可以是变量
	}
	return 0;
}

         数组排序-冒泡排序

        冒泡排序的原理就是两个相邻的数组进行比较,进行逐一替换。

void bubble_sort(int arr[],int sz) {//形参arr本质是指针
	//确定趟数
	int i = 0;
	for ( i = 0; i < sz - 1; i++)
	{
		//一趟冒泡排序的过程
		int j = 0;
		for ( j = 0; j < sz - 1- i; j++)
		{
			if (arr[j] > arr[j + 1])
			{
				int temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}
}
int main() {
	int arr[] = { 7,6,2,4,7,5,3,6,1 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	bubble_sort(arr,sz);
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		printf("%d",arr[i]);
	}
	return 0;
}

二维数组

        初始化并创建、输出,列绝对不能不写

        int arr[3][4]是三行四列,不是4行5列!数组元素下标才从0开始

int main() {
	//二维数组初始化 创建并赋值
	int arr[3][4] = { 1,2,3,4,5,6 };
	int arr1[3][4] = { {1,2},{3,4},{5,6} };
	int arr2[][4] = { {1,2},{3,4},{5,6} };//前面[]可以不写,但是后面的绝不能不写!
	//二维数组输出
	int i = 0;
	int j = 0;
	for ( i = 0; i < 3; i++)
	{
		for ( j = 0; j < 4; j++)
		{
			printf("%d", arr1[i][j]);
		}
		printf("\n");
	}
	return 0;
}

数组名

数组名是数组首元素的地址

但是有两个特殊情况

1.sizeof(数组名) 这里的数组名表示整个数组,计算的是整个数组的大小,单位是字节

2.&数组名 数组名表示整个数组 取出的是整个数组的地址

注意:数组不要越界,下标从0开始

随着数组下标的由小到大,地址由低到高

数组长度指的是数组的空间大小,不是字符串长度

一维数组的长度是指分配的空间大小

数组的占的内存空间

详见下方链接,sizeof里面有研究数组的内存容量

C语言简易操作符_LimpidClear的博客-CSDN博客

数组习题

完成以下函数:

1.打印数组

2.将数组初始化为0

3.将数组元素逆序/逆置

4.将两相同长度的数组进行元素交换

void print(int arr[],int sz) {
	for (int i = 0; i < sz; i++)
	{
		printf("%d ",arr[i]);
	}
	printf("\n");
}
void init(int arr[], int sz) {
	for (int i = 0; i < sz; i++)
	{
		arr[i] = 0;
	}
}
void reverse(int arr[], int sz) {
	int left = 0;
	int right = sz - 1;
	while (left < right)
	{
		int temp = arr[left];
		arr[left] = arr[right];
		arr[right] = temp;
		left++;
		right--;
	}

}
void swap(int arr[], int sz,int arr1[],int sz1) {
	for (int i = 0; i < sz; i++)
	{
		int temp = arr[i];
		arr[i] = arr1[i];
		arr1[i] = temp;
	}
}
//以上的整型数组可以用指针来表示,前面已经说了,数组名其实是指针
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值