C语言:使用函数完成整型数组的打印、元素逆置、初始化

简介: 思路:总体思路:(一). 实现 函数init() -- 初始化数组为全0 (二). 实现 函数print() -- 打印数组的每个元素 (三). 实现 函数reverse() -- 函数完成数组元素的逆置 (四). 完成 主函数 的编写 -- 测试这三个函数

思路:

总体思路:

(一). 实现 函数init() -- 初始化数组为全0

(二). 实现 函数print() -- 打印数组的每个元素


               


(三). 实现 函数reverse() -- 函数完成数组元素的逆置


                 


(四). 完成 主函数 的编写 -- 测试这三个函数

第一步:

实现 函数print() -- 打印数组的每个元素

.(1). 函数参数

int* arr -- 数组首地址

int sz -- 数组元素个数

               

(2). 使用for循环以及首元素地址,进行循环打印

             

(3). 进行换行

实现代码:

#include <stdio.h>
//实现 函数print() -- 打印数组的每个元素
void print(int* arr, int sz)
{
  int j = 0;
  //使用for循环以及首元素地址,进行循环打印
  for (j = 0; j < sz; j++)
  {
    printf("%d ", arr[j]);
  }
  //进行换行
  printf("\n");
}
int main()
{
  return 0;
}

实现图片:

image.png

第二步:

实现 函数reverse() -- 函数完成数组元素的逆置

(1). 函数参数

int* arr -- 数组首地址


int sz -- 数组元素个数


           


(2). 使用for循环循环进行逆置,一次逆置两个元素,所以需要逆置 sz / 2 次


                 


(3). 进行逆置,使用左右指针进行逆置:


int* left = arr + i; -- 左指针


int* right = arr + sz -1 - i; -- 右指针

实现代码:

#include <stdio.h>
//实现 函数print() -- 打印数组的每个元素
void print(int* arr, int sz)
{
  int j = 0;
  //使用for循环以及首元素地址,进行循环打印
  for (j = 0; j < sz; j++)
  {
    printf("%d ", arr[j]);
  }
  //进行换行
  printf("\n");
}
//实现 函数reverse() -- 函数完成数组元素的逆置
void reverse(int* arr, int sz)
{
  int i = 0;
  for (i = 0; i < (sz / 2); i++)
    //6个元素调3次,5个元素调2次
  {
    //使用指针移位,类似下标,易混淆,
    //让左右指针慢慢往中间靠
    int* left = arr + i;
    int* right = arr + sz - 1 - i;
    //进行逆置:
    int tmp = *left;
    *left = *right;
    *right = tmp;
    //获取指针值是用 取地址符:*
  }
}
int main()
{
  return 0;
}

实现图片:

image.png

第三步:

实现 函数init() -- 初始化数组为全0

(1). 函数参数

int* arr -- 数组首地址

int sz -- 数组元素个数

             

(2). 使用for循环以及首元素地址,循环将各个元素赋值为0

                   

实现代码:

#include <stdio.h>
//实现 函数print() -- 打印数组的每个元素
void print(int* arr, int sz)
{
  int j = 0;
  //使用for循环以及首元素地址,进行循环打印
  for (j = 0; j < sz; j++)
  {
    printf("%d ", arr[j]);
  }
  //进行换行
  printf("\n");
}
//实现 函数reverse() -- 函数完成数组元素的逆置
void reverse(int* arr, int sz)
{
  int i = 0;
  for (i = 0; i < (sz / 2); i++)
    //6个元素调3次,5个元素调2次
  {
    //使用指针移位,类似下标,易混淆,
    //让左右指针慢慢往中间靠
    int* left = arr + i;
    int* right = arr + sz - 1 - i;
    //进行逆置:
    int tmp = *left;
    *left = *right;
    *right = tmp;
    //获取指针值是用 取地址符:*
  }
}
//实现 函数init() -- 初始化数组为全0
void init(int* arr, int sz)
{
  //arr:首元素地址 ;sz为几就循环几次
  int i = 0;
  for (i = 0; i < sz; i++)
  {
    int* tmp = arr + i; //创建指针变量存放指针
    *tmp = 0; //将指针中的值赋为0
  }
}
int main()
{
  return 0;
}

实现图片:

image.png

第四步:

完成 主函数 的编写 -- 测试这三个函数

(1). 给出要进行操作的数组 -- arr

           

(2). 求出数组元素个数

(3). 测试三个函数

                   

实现代码:

#include <stdio.h>
//实现 函数print() -- 打印数组的每个元素
void print(int* arr, int sz)
{
  int j = 0;
  //使用for循环以及首元素地址,进行循环打印
  for (j = 0; j < sz; j++)
  {
    printf("%d ", arr[j]);
  }
  //进行换行
  printf("\n");
}
//实现 函数reverse() -- 函数完成数组元素的逆置
void reverse(int* arr, int sz)
{
  int i = 0;
  for (i = 0; i < (sz / 2); i++)
    //6个元素调3次,5个元素调2次
  {
    //使用指针移位,类似下标,易混淆,
    //让左右指针慢慢往中间靠
    int* left = arr + i;
    int* right = arr + sz - 1 - i;
    //进行逆置:
    int tmp = *left;
    *left = *right;
    *right = tmp;
    //获取指针值是用 取地址符:*
  }
}
//实现 函数init() -- 初始化数组为全0
void init(int* arr, int sz)
{
  //arr:首元素地址 ;sz为几就循环几次
  int i = 0;
  for (i = 0; i < sz; i++)
  {
    int* tmp = arr + i; //创建指针变量存放指针
    *tmp = 0; //将指针中的值赋为0
  }
}
int main()
{
  //给出要进行操作的数组 -- arr
  int arr[5] = { 1,2,3,4,5 };
  //求出数组元素个数
  int sz = sizeof(arr) / sizeof(arr[0]);
  //测试三个函数
  print(arr, sz);//实现print(),打印数组的每个元素
  reverse(arr, sz);//实现reverse(),完成数组元素的逆置
  print(arr, sz);//打印查看逆置后结果
  init(arr, sz);//实现函数init(),初始化数组为全0
  print(arr, sz);//打印查看初始化后结果
  return 0;
}

实现图片:

image.png

最终代码和实现效果

最终代码:

#include <stdio.h>
//实现 函数print() -- 打印数组的每个元素
void print(int* arr, int sz)
{
  int j = 0;
  //使用for循环以及首元素地址,进行循环打印
  for (j = 0; j < sz; j++)
  {
    printf("%d ", arr[j]);
  }
  //进行换行
  printf("\n");
}
//实现 函数reverse() -- 函数完成数组元素的逆置
void reverse(int* arr, int sz)
{
  int i = 0;
  for (i = 0; i < (sz / 2); i++)
    //6个元素调3次,5个元素调2次
  {
    //使用指针移位,类似下标,易混淆,
    //让左右指针慢慢往中间靠
    int* left = arr + i;
    int* right = arr + sz - 1 - i;
    //进行逆置:
    int tmp = *left;
    *left = *right;
    *right = tmp;
    //获取指针值是用 取地址符:*
  }
}
//实现 函数init() -- 初始化数组为全0
void init(int* arr, int sz)
{
  //arr:首元素地址 ;sz为几就循环几次
  int i = 0;
  for (i = 0; i < sz; i++)
  {
    int* tmp = arr + i; //创建指针变量存放指针
    *tmp = 0; //将指针中的值赋为0
  }
}
int main()
{
  //给出要进行操作的数组 -- arr
  int arr[5] = { 1,2,3,4,5 };
  //求出数组元素个数
  int sz = sizeof(arr) / sizeof(arr[0]);
  //测试三个函数
  print(arr, sz);//实现print(),打印数组的每个元素
  reverse(arr, sz);//实现reverse(),完成数组元素的逆置
  print(arr, sz);//打印查看逆置后结果
  init(arr, sz);//实现函数init(),初始化数组为全0
  print(arr, sz);//打印查看初始化后结果
  return 0;
}


实现效果:

dd29de4f8f27468986b3cda8fabfd51e.png

相关文章
|
2天前
|
C语言 C++
C语言变量、地址、字符及printf()/sizeof()/scanf()函数介绍
C语言变量、地址、字符及printf()/sizeof()/scanf()函数介绍
4 0
|
2天前
|
C语言
C语言数组和函数
C语言数组和函数
7 0
|
2天前
|
算法 C语言
C语言数组实例(冒泡算法、猜数字)
C语言数组实例(冒泡算法、猜数字)
5 0
|
2天前
|
C语言
C语言数据类型、常量及数组
C语言数据类型、常量及数组
4 0
C语言数据类型、常量及数组
|
2天前
|
C语言
C语言函数及分文件编程
C语言函数及分文件编程
7 0
|
2天前
|
存储 C语言
C语言数组指针指针数组
C语言数组指针指针数组
6 0
|
4天前
|
存储 C语言 索引
C语言:数组指针 & 函数指针
C语言:数组指针 & 函数指针
37 2
|
4天前
|
存储 编译器 C语言
C语言:函数
C语言:函数
21 0
|
4天前
|
机器学习/深度学习 C语言
C语言:函数递归
C语言:函数递归
|
4天前
|
存储 编译器 程序员
C语言:函数
C语言:函数

相关产品

  • 云迁移中心