问题:创建一个数组,
实现函数init()初始化数组、实现empty()清空数组、 实现reverse()函数完成数组元素的逆置。
要求:自己设计函数的参数,返回值。
(1)函数init()将数组各元素初始化为0,1,2,3…
(2)函数enpty()将数组各元素清空为0.
(3)函数reverse()将数组元素逆置,即逆序输出。
思路:给定数组元素为10 的一个数组,需要完成arr[0]和arr[9]、arr[1]和arr[8]…的元素交换。定义变量left和right,初始化left为0,right为数组元素个数减一,即最后一位元素的下标,两个变量依次递增、递减完成数组元素交换,直至left>=right,表示交换结束,也就实现了我们想要的功能。
实现代码:
#include<stdio.h>
#include<stdlib.h>
void Init(int arr[10]) {//将数组初始化为{0,1,2,3,4,5,6,7,8,9}
for (int i = 0; i < 10; ++i) {
arr[i] = i;
printf("%d", arr[i]);
}
printf("\n");
}
void Empty(int arr[10]) {//清空数组,使数组每位元素为0
for (int i = 0; i < 10; ++i) {
arr[i] = 0;
printf("%d", arr[i]);
}
printf("\n");
}
void Reverse(int arr[10], int size) {//逆置数组元素
int tmp = 0;
int left = 0;
int right = size - 1;//[left,right]为
for (int i = 0; i < 10; ++i) {
while (left < right) {
tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
++left;
--right;
}
printf("%d", arr[i]);
}
printf("\n");
}
int main() {
int arr[10] = { 1,2,3,4,5,6,7,8,9,0 };
int size = sizeof(arr) / sizeof(arr[0]);
printf("数组元素逆置:\n");
Reverse(arr, size);
printf("初始化数组:\n");
Init(arr);
printf("清空数组的每位元素为0:\n");
Empty(arr);
system("pause");
return 0;
}
运行结果: