模块化思想:创建一个数组, 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置。 要求:自己设计函数的参数,返回值。
来源:互联网 发布:java enum的创建 编辑:程序博客网 时间:2024/05/19 22:24
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">(一)思考思路</span>
1:一个复杂功能的程序,如果将所有的功能都写在主函数内,这样的程序的可读性太差,而且在理解的过程中很容易出现问题,所以将一些复杂功能,分块写入子函数,利用函数调用来实现模块功能是一个程序员必备的能力
2:函数调用:
主函数调用子函数包括这几部分:
1):子函数的类型(int void等),依据函数功能来使用函数类型,比如说 调用一个数组,想对其数据进行逆置,那么我们不用返回值,那么就用void就好啦,当需要子函数给主函数返回值的时候 就用int
2):调用的方式: 传址 ,传值
一些功能性的子函数(比如 将x,y的数值对换,数组的逆置等等)利用传值办法是无法实现对实参的改变的,通俗的将形参就是对实参的一份拷贝,我们对copy的数据进行任何加工,对于原数据是没有任何办法的!比如说 现在有一个空水缸1,找一个copy的空水缸2(大小 容积等等的要素一模一样),无论我们对水缸2进行什么操作,对于水缸1都是没有意义的
于是我们引入指针这个概念,什么是指针,指针就是地址,我们通过指针找到实参,就可以对实参进行操作,通俗的将 在一个宾馆里,每一个房间都有一个标号(103,104等),前台通过这个标号通知里面的住户一系列的消息,指示用户做事情,这就是传址的用法
3):子函数如果要被主函数使用,那么在主函数必须对子函数进行声明,并且在需要实现子函数功能的地方对子函数进行传递实参,如
int main()
{
void copy(int x,int y); 函数的声明
............................
copy(a,b); 传递实参
}
3:注意事项(见代码)
(二)代码实现
#include <stdio.h>#include <string.h>void initialize(int *x,int n){int i=0;for(i=0;i<n;i++)scanf("%d",x+i);for(i=0;i<n;i++)printf("%d ",*(x+i));printf("\n");}void reverse(int arr, int *x,int n){int i=0,sqm=(n-1)/2;int temp=0;int *l=NULL; <span style="color:#ff0000;">//对于空指针,一般是将NULL赋予指针</span>
l=x+n-1; for(i=0;i<=sqm;x++,l--,i++){temp=*x;*x=*l;*l=temp;}
<pre name="code" class="cpp" style="font-size: 24px; font-weight: bold;"> <span style="color:#ff0000;"> // 千万注意,此处x指向的arr[5]的存储空间</span>x=arr; for(i=0;i<n;i++)printf("%d ",*(x+i));printf("\n");}void empty(int *x,int n){ int i=0; for(i=0;i<n;i++) { *(x+i)=0;//千万不能写成*x;那么在后面的for循环中每次
<span style="color:#ff0000;">执行的都是将arr[0]=0</span> printf("%d ",*(x+i)); }printf("\n");}int main(){int n = 8, i = 0;int arr[8];int *p=NULL;p=arr;initialize(p,8);reverse(arr,p,8);empty(p,8); system("pause");return 0;}
- 模块化思想:创建一个数组, 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置。 要求:自己设计函数的参数,返回值。
- C语言下的创建一个数组, 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置。 要求:自己设计函数的参数,返回值。
- 创建一个数组, 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置。 要求:自己设计函数的参数,返回值。
- //4.创建一个数组, //实现函数init()初始化数组、 //实现empty()清空数组、 //实现reverse()函数完成数组元素的逆置。 //要求:自己设计函数的参数,返回值。
- 创建一个数组, 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置。 要求:自己设计函数的参数,返回值。
- 创建一个数组, 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置。 要求:自己设计函数的参数,返回值。
- 创建一个数组, 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置。 要求:自己设计函数的参数,返回值。
- //创建一个数组, //实现函数init()初始化数组、 //实现empty()清空数组、 //实现reverse()函数完成数组元素的逆置。 //要求:自己设计函数的参数,返回值。
- 创建一个数组, 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置。 要求:自己设计函数的参数,返回值。
- 创建一个数组, 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置。自己设计函数的参数,返回值。
- 创建一个数组, 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置。
- 创建一个数组, 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置。
- 创建一个数组, 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置。
- 创建一个数组, 实现函数init()初始化数组实现empty()清空数组实现reverse()函数完成数组元素的逆置。
- 创建一个数组 实现函数init()初始化数组 empty()清空数组 reverse()函数完成数组元素的逆置
- 创建一个数组,实现函数init()初始化数组,实现empty()清空数组,reverse()函数完成数组的逆置
- 创建一个数组, 实现函数init初始化数组、实现empty清空数组、 实现reverse函数完成数组元素的逆置。
- C语言:实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置
- uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 - 大总结,看完全明白了
- linux环境下时区无法设置(系统时间慢8个小时)的问题解决
- java.lang.RuntomeException: lib/arm64-v8a/路径下没有libinet.2.0.1.so
- UVA 10635 Prince and Princess LCS转化为LIS *
- 有关MAC、PHY和MII/RMII
- 模块化思想:创建一个数组, 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置。 要求:自己设计函数的参数,返回值。
- 注解简化SSH框架
- HDU2027---统计元音
- nodeJs之URL模块
- 基于CUDA的GPU优化方法
- revit二次开发——族——载入族
- Mybatis操作主体流程
- 分布式算法2 -- Paxos算法
- 【图】最短路径——Floyed算法和Dijkstra算法