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

相关文章
|
9天前
|
存储 编译器 数据处理
【编程秘籍】解锁C语言数组的奥秘:从零开始,深入浅出,带你领略数组的魅力与实战技巧!
【8月更文挑战第22天】数组是C语言中存储同类型元素的基本结构。本文从定义出发,详述数组声明、初始化与访问。示例展示如何声明如`int numbers[5];`的数组,并通过下标访问元素。初始化可在声明时进行,如`int numbers[] = {1,2,3,4,5};`,编译器自动计算大小。初始化时未指定的元素默认为0。通过循环可遍历数组,数组名视为指向首元素的指针,方便传递给函数。多维数组表示矩阵,如`int matrix[3][4];`。动态数组利用`malloc()`分配内存,需用`free()`释放以避免内存泄漏。掌握这些技巧是高效数据处理的基础。
26 2
|
12天前
|
C语言
【C语言】字符串及其函数速览
【C语言】字符串及其函数速览
16 4
|
8天前
|
存储 算法 搜索推荐
C语言中数组
C语言中数组
24 0
|
8天前
|
机器学习/深度学习 编译器 Serverless
C语言中函数
C语言中函数
16 0
|
8天前
|
存储 Serverless C语言
C语言中的标准库函数
C语言中的标准库函数
13 0
|
12天前
|
C语言
【C语言】epoll函数
【C语言】epoll函数
13 0
|
12天前
|
C语言
【C语言篇】字符和字符串以及内存函数详细介绍与模拟实现(下篇)
perror函数打印完参数部分的字符串后,再打印⼀个冒号和⼀个空格,再打印错误信息。
|
17天前
|
存储 C语言
【C语言函数】static和extern关键字修饰
【C语言函数】static和extern关键字修饰
|
18天前
|
C语言 C++
|
12天前
|
编译器 程序员 C语言
【C语言篇】从零带你全面了解函数(包括隐式声明等)(下篇)
⼀般情况下,企业中我们写代码时候,代码可能⽐较多,不会将所有的代码都放在⼀个⽂件中;我们往往会根据程序的功能,将代码拆分放在多个⽂件中。
下一篇
云函数