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

相关文章
|
6天前
|
C语言
c语言调用的函数的声明
被调用的函数的声明: 一个函数调用另一个函数需具备的条件: 首先被调用的函数必须是已经存在的函数,即头文件中存在或已经定义过; 如果使用库函数,一般应该在本文件开头用#include命令将调用有关库函数时在所需要用到的信息“包含”到本文件中。.h文件是头文件所用的后缀。 如果使用用户自己定义的函数,而且该函数与使用它的函数在同一个文件中,一般还应该在主调函数中对被调用的函数做声明。 如果被调用的函数定义出现在主调函数之前可以不必声明。 如果已在所有函数定义之前,在函数的外部已做了函数声明,则在各个主调函数中不必多所调用的函数在做声明
21 6
|
19天前
|
存储 算法 程序员
C语言:库函数
C语言的库函数是预定义的函数,用于执行常见的编程任务,如输入输出、字符串处理、数学运算等。使用库函数可以简化编程工作,提高开发效率。C标准库提供了丰富的函数,满足各种需求。
|
25天前
|
机器学习/深度学习 C语言
【c语言】一篇文章搞懂函数递归
本文详细介绍了函数递归的概念、思想及其限制条件,并通过求阶乘、打印整数每一位和求斐波那契数等实例,展示了递归的应用。递归的核心在于将大问题分解为小问题,但需注意递归可能导致效率低下和栈溢出的问题。文章最后总结了递归的优缺点,提醒读者在实际编程中合理使用递归。
53 7
|
22天前
|
存储 C语言
【c语言】字符串函数和内存函数
本文介绍了C语言中常用的字符串函数和内存函数,包括`strlen`、`strcpy`、`strcat`、`strcmp`、`strstr`、`strncpy`、`strncat`、`strncmp`、`strtok`、`memcpy`、`memmove`和`memset`等函数的使用方法及模拟实现。文章详细讲解了每个函数的功能、参数、返回值,并提供了具体的代码示例,帮助读者更好地理解和掌握这些函数的应用。
19 0
|
22天前
|
C语言
【c语言】qsort函数及泛型冒泡排序的模拟实现
本文介绍了C语言中的`qsort`函数及其背后的回调函数概念。`qsort`函数用于对任意类型的数据进行排序,其核心在于通过函数指针调用用户自定义的比较函数。文章还详细讲解了如何实现一个泛型冒泡排序,包括比较函数、交换函数和排序函数的编写,并展示了完整的代码示例。最后,通过实际运行验证了排序的正确性,展示了泛型编程的优势。
18 0
|
算法 编译器 程序员
C语言学习笔记—P11(数组<2>+图解+题例+三子棋游戏<初级>)
C语言学习笔记(数组<2>+图解+题例+三子棋游戏<初级>)
130 0
C语言学习笔记—P11(数组<2>+图解+题例+三子棋游戏<初级>)
|
存储 C语言
C语言学习笔记—P10(数组<1>+图解+题例)
C语言学习笔记(数组<1>+图解+题例)
136 0
C语言学习笔记—P10(数组<1>+图解+题例)
|
C语言
C语言学习笔记——数组(二)
C语言学习笔记——数组
179 0
C语言学习笔记——数组(二)
|
C语言
C语言学习笔记——数组(一)
C语言学习笔记——数组
166 0
C语言学习笔记——数组(一)
|
1月前
|
C语言 C++
C语言 之 内存函数
C语言 之 内存函数
33 3