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语言程序设计——函数】利用函数求解最大公约数和最小公倍数(头歌实践教学平台习题)【合集】
本文档介绍了如何编写两个子函数,分别求任意两个整数的最大公约数和最小公倍数。内容涵盖循环控制与跳转语句的使用、最大公约数的求法(包括辗转相除法和更相减损术),以及基于最大公约数求最小公倍数的方法。通过示例代码和测试说明,帮助读者理解和实现相关算法。最终提供了完整的通关代码及测试结果,确保编程任务的成功完成。
26 15
|
2天前
|
C语言
【C语言程序设计——函数】亲密数判定(头歌实践教学平台习题)【合集】
本文介绍了通过编程实现打印3000以内的全部亲密数的任务。主要内容包括: 1. **任务描述**:实现函数打印3000以内的全部亲密数。 2. **相关知识**: - 循环控制和跳转语句(for、while循环,break、continue语句)的使用。 - 亲密数的概念及历史背景。 - 判断亲密数的方法:计算数A的因子和存于B,再计算B的因子和存于sum,最后比较sum与A是否相等。 3. **编程要求**:根据提示在指定区域内补充代码。 4. **测试说明**:平台对代码进行测试,预期输出如220和284是一组亲密数。 5. **通关代码**:提供了完整的C语言代码实现
39 24
|
2天前
|
存储 算法 C语言
【C语言程序设计——函数】素数判定(头歌实践教学平台习题)【合集】
本内容介绍了编写一个判断素数的子函数的任务,涵盖循环控制与跳转语句、算术运算符(%)、以及素数的概念。任务要求在主函数中输入整数并输出是否为素数的信息。相关知识包括 `for` 和 `while` 循环、`break` 和 `continue` 语句、取余运算符 `%` 的使用及素数定义、分布规律和应用场景。编程要求根据提示补充代码,测试说明提供了输入输出示例,最后给出通关代码和测试结果。 任务核心:编写判断素数的子函数并在主函数中调用,涉及循环结构和条件判断。
39 23
|
1天前
|
存储 编译器 C语言
【C语言程序设计——函数】回文数判定(头歌实践教学平台习题)【合集】
算术运算于 C 语言仿若精密 “齿轮组”,驱动着数值处理流程。编写函数求区间[100,500]中所有的回文数,要求每行打印10个数。根据提示在右侧编辑器Begin--End之间的区域内补充必要的代码。如果操作数是浮点数,在 C 语言中是不允许直接进行。的结果是 -1,因为 -7 除以 3 商为 -2,余数为 -1;注意:每一个数据输出格式为 printf("%4d", i);的结果是 1,因为 7 除以 -3 商为 -2,余数为 1。取余运算要求两个操作数必须是整数类型,包括。开始你的任务吧,祝你成功!
15 1
|
1月前
|
存储 程序员 C语言
【C语言】文件操作函数详解
C语言提供了一组标准库函数来处理文件操作,这些函数定义在 `<stdio.h>` 头文件中。文件操作包括文件的打开、读写、关闭以及文件属性的查询等。以下是常用文件操作函数的详细讲解,包括函数原型、参数说明、返回值说明、示例代码和表格汇总。
59 9
|
算法 编译器 程序员
C语言学习笔记—P11(数组<2>+图解+题例+三子棋游戏<初级>)
C语言学习笔记(数组<2>+图解+题例+三子棋游戏<初级>)
140 0
C语言学习笔记—P11(数组<2>+图解+题例+三子棋游戏<初级>)
|
存储 C语言
C语言学习笔记—P10(数组<1>+图解+题例)
C语言学习笔记(数组<1>+图解+题例)
153 0
|
C语言
C语言学习笔记——数组(二)
C语言学习笔记——数组
189 0
C语言学习笔记——数组(二)
|
C语言
C语言学习笔记——数组(一)
C语言学习笔记——数组
175 0
C语言学习笔记——数组(一)
|
机器学习/深度学习 C语言 编译器
【C语言】学习笔记4——数组
我直接把控制语句和循环跳过了。大致看了一下,讲得太繁琐了。这部分在后面用C写数据结构就可以练得很熟了。 1. 数组: 由数据类型相同得一系列元素组成。内存上是一片连续得存储单元。 2. 声明 int nums[5] // 内含5个int类型元素的数组 float ...
1008 0