C语言——创建一个数组:实现函数 init( ) 初始化数组;reverse( ) 函数完成数组元素的逆置;empty( ) 清空数组。

解题思路:
第一:本题是 使用函数 针对数组 进行操作,所以在传参的时候切记: 数组传参传的是数组首元素的地址,而不是数组内容/大小,如果函数内部需要用到数组大小,那么必须在函数外部计算出数组大小然后再进行传参。
第二:Init( ) 函数初始化数组,即:给数组中每一个元素赋值,下面代码是使用一个 for 循环将数组初始化为 1-10 的数字。
第三:Reverse( ) 函数实现数组元素逆置,这里定义左右下标然后交换两个元素的方法实现数组元素的逆置。
第四:Empty( ) 函数清空数组,可以理解为将数组初始化为全 0。

具体代码实现:

#include<stdio.h>
#include<stdlib.h>

// 定义 Init( ) 函数完成对数组的 初始化
void InitArr(int arr[], int sz)
{
	int i = 0;
	// 采用 for 循环将数组初始化为 1-10 
	for (i = 0; i < sz; i++)
	{
		arr[i] = i + 1;
	}
}

// 定义打印数组的函数
void PrintArr(int arr[], int sz)
{
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		// 打印下标为 i 的元素
		printf("%d ", arr[i]);
	}
	printf("\n");
}

// 定义 reverse( ) 函数完成对数组元素的逆置 
void ReverseArr(int arr[], int sz)
{
	int left = 0;	// 左下标
	int right = sz - 1;	// 右下标

	// 交换数组内 "对称" 的两个元素的位置,直到元素左下标 等于 右下标
	while (left < right)
	{
		int tmp = arr[left];
		arr[left] = arr[right];
		arr[right] = tmp;
		left++;	// 左下标加一
		right--;	// 右
在C语言中,你可以这样做: ```c #include <stdio.h> // 定义一个整型数组结构体,包含数组大小和实际数组 typedef struct { int size; int *arr; } Array; // 初始化函数 init(), 返回一个指向Array的指针 Array* init(int n) { // 动态分配内存 Array *array = (Array*) malloc(sizeof(Array)); if (array == NULL) { printf("Memory allocation failed.\n"); return NULL; } array->size = n; array->arr = (int*)malloc(n * sizeof(int)); // 分配数组空间 if (array->arr == NULL) { free(array); return NULL; } // 将所有元素初始化为0 for (int i = 0; i < n; i++) { array->arr[i] = 0; } return array; } // 打印数组元素函数 print() void print(Array *array) { if (array == NULL || array->arr == NULL) { printf("Invalid array.\n"); return; } for (int i = 0; i < array->size; i++) { printf("%d ", array->arr[i]); } printf("\n"); } // 数组函数 reverse() void reverse(Array *array) { if (array == NULL || array->arr == NULL) { printf("Invalid array.\n"); return; } int start = 0; int end = array->size - 1; while (start < end) { int temp = array->arr[start]; array->arr[start] = array->arr[end]; array->arr[end] = temp; start++; end--; } } // 示例用法 int main() { Array *my_array = init(5); // 创建一个长度为5的数组 if (my_array != NULL) { print(my_array); // 打印全0数组 reverse(my_array); // 数组 print(my_array); // 再次打印后的数组 free(my_array->arr); // 释放内存 free(my_array); // 释放结构体本身 } return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值