实现数组的倒置和归零,因函数最好能代表一个功能,又因为数组要多次打印观察变化,所以将打印也作为一个方法,循环打印数组和循环赋值归零是差不多的方式。
倒置的时候需要注意的是数组的元素个数要在主函数内进行计算,在函数内计算有许多的错误和漏洞,故而将元素个数作为一个参数传递给函数。因为数组的元素下标=元素个数-1;从最右边与最左边的元素开始进行定位然后交换,这和一道数组旋转的面试题有些许相似。
eqip.h:
#pragma once
#include<stdio.h>;
void fanshi(int arr[], int sz);
void print(int arr[], int sz);
void init(int arr[], int sz);
-------
eqip.c
#define _CRT_SECURE_NO_WARNINGS 1
#include "eqip.h"
void fanshi(int arr[],int sz){
int left = 0;
int right = sz - 1;
while (left < right) {
arr[left]=arr[left] ^ arr[right];
arr[right] = arr[left] ^ arr[right];
arr[left] = arr[right] ^ arr[left];
left++;
right--;
}
}
void print(int arr[], int sz) {
int i = 0;
for (i = 0; i < sz; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
void init(int arr[], int sz) {
int i = 0;
for (i = 0; i < sz; i++) {
arr[i] = 0;
}
}
test.c
int main() {
int arr[] = { 1,2,3,4,5,6,7,8,9 };
int sz = sizeof(arr) / sizeof(arr[0]);
print(arr, sz);//打印
fanshi(arr, sz);//倒置
print(arr, sz);
init(arr, sz);//归零
print(arr, sz);
return 0;
}