题目要求:
- 实现函数init() 初始化数组为全0
- 实现print() 打印数组的每个元素
- 实现reverse() 函数完成数组元素的逆置。
一.函数设计原型
1.void init(int arr\[\],int sz); //初始化数组
2.void print(int arr\[\],int sz);//打印数组
3.void reverse(int arr\[\],int sz);//数组逆置
二.初始化函数
代码演示
void Init(int arr[], int sz, int set)
{
int i = 0;
for (i = 0; i < sz; i++)
{
arr[i] = set;//每个位置放0
}
}
三.打印数组
void Print(int arr[], int sz)
{
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%d ", arr[i]);//打印数字和空格
}
printf("\n");//换行
}
四.逆置数组(难点)
1.基本思路:把数组开头和结尾的元素互换,让后往中间继续交换,直到所有元素交换完毕。
2.重要变量:
int letf = 0;//左边位置,从第一个元素开始。
int right = 0;//右边位置,从最后一个元素开始。
3.思路:

4.代码:
void Reverse(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--;
}
}
五.所有代码
#include <stdio.h>
void Init(int arr[], int sz, int set)
{
int i = 0;
for (i = 0; i < sz; i++)
{
arr[i] = set;//每个位置放0
}
}
void Print(int arr[], int sz)
{
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%d ", arr[i]);//打印数字和空格
}
printf("\n");//换行
}
void Reverse(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--;
}
}
int main()
{
int arry[] = { 0,1,2,3,4,5,6,7,8,9 };//定义数组
int sz = sizeof(arry) / sizeof(arry[0]);//求数组长度
Print(arry, sz);//打印
Reverse(arry, sz);//逆置
Print(arry, sz);//打印
Init(arry, sz, 0);//变0
Print(arry, sz);//打印
return 0;
}
六.运行结果

如果有错误和不全的地方,欢迎大家批评指正。