目录

  • 模块化开发概述
  • 函数概述
  • 如何使用函数
  • 字符串处理函数
  • 模块化开发特点

模块化开发概述

概述

C语言是面向过程的语言,意味着编写C语言程序的时候,我们要像计算机一样思考如何设计程序。

模块化开发可以实现C语言程序的分工协作、降低开发成本,能够使程序层次更加清晰,便于程序的开发、维护、阅读和调试。

模块化开发

模块的定义:可组成系统的、具有某种独立的确定功能的子系统。

模块化开发:把程序划分成一个一个功能相对独立的子结构。

本次课程将介绍模块化开发最重要的知识:函数。

函数概述

函数的概念

一个具有独立的、完整功能的程序模块。

函数的分类

从用户角度划分:系统函数(库函数)、用户函数(自定义函数)

系统函数:由系统建立的具有一定功能的函数。例如:库函数printf()、scanf()。

从函数形式划分:有参函数、无参函数。

如何使用函数

函数的定义

语法结构:

返回值类型   函数名(形式参数列表){

          函数体

          (返回语句)

}

  

语法结构说明:

  • 返回值类型:函数执行完成后返回数据类型,可以没有返回值,即void类型。
  • 函数名:函数名通常由动词构成,两个以上单词组成,第一个单词首字母小写,其后单词首字母大写。
  • 形式参数表:为函数提供输入。函数可以没有形式参数列表。
  • 返回语句:即return语句。返回的类型要和函数的返回值类型相同。可以没有return返回语句,此时函数为void类型。

函数定义示例:

定义sum函数,用于求两个数之和。

上机练习

需求:定义一个函数,用于求两个数的大数。

分析:

1、函数的输入是什么?

2、返回值是什么?

3、函数的功能?

定义函数常见问题

  • 函数的类型要和返回值的类型一定要相匹配。
  • return只能返回一个值

上机练习

需求:如何实现学生信息管理系统的菜单函数?

提示:没有输入参数;用户输入选项作为函数的返回值。

函数的声明

函数的调用:主调函数和被调函数

例如:main()是主调函数,menu()是被调函数

主调函数调用被调函数前,需要对被调函数声明。原因在于编译器需要知道被调函数的返回类型,以便编译器对该返回类型进行处理。

函数的声明

函数声明的一般形式

示例:

函数的调用

1.函数调用的一般形式

示例:

2.函数参与运算

函数作为变量处理,参与表达式运算

函数实参

3.函数调用注意点

  • 无论函数是否带参,被调用时,函数名后都要有括号。
  • 主调函数传递给被调函数的参数个数必须一致,类型必须兼容。
  • 一个函数最多只有一个返回值。

上机练习

需求:如何实现学生信息管理系统的菜单函数的调用?

  

4.形参和实参的区别

  • 形参指定义函数时候参数的声明
  • 实参指函数调用时传递给函数的实际值
  • 形参只有被调用时才分配确定的值,称为实参
  • 形参和实参的类型必须相同,数量相同

问题:如何求三个数中的最大值?

 

函数的嵌套调用

  • C语言不允许进行嵌套函数定义。
  • 运行在一个函数的定义中出现另一个函数的调用。
  • 示例:

  • 实际编程规范:函数嵌套不要超过三层。
  • 函数嵌套调用的例子:

上机练习

需求描述:

同一项目中不同文件中的函数调用

只要在声明函数的时候添加extern声明即可

系统字符串函数

专项课程。

模块化开发特点

使用函数时注意问题

  • 使用参数一般不要超过5个
  • 函数入口处需要对参数检查
  • 尽量一个出口,返回类型确认
  • 控制函数的规模,100行代码以内
  • 函数嵌套深度不要太深,不要超过3层
  • 返回错误信息应明确

模块化程序设计特点

  • 模块相对独立,功能单一,可混合编写也可以独立编写调试
  • 可以团队开发,缩短开发周期
  • 开发出的模块,可在不同的应用程序中多次使用,减少重复劳动,提高开发效率
  • 测试,更新以模块为单位进行而不会影响其他模块。

C04 模块化开发的更多相关文章

  1. 初学seaJs模块化开发,利用grunt打包,减少http请求

    原文地址:初学seaJs模块化开发,利用grunt打包,减少http请求 未压缩合并的演示地址:demo2 学习seaJs的模块化开发,适合对seajs基础有所了解的同学看,目录结构 js — —di ...

  2. JS模块化开发:使用SeaJs高效构建页面

    一.扯淡部分 很久很久以前,也就是刚开始接触前端的那会儿,脑袋里压根没有什么架构.重构.性能这些概念,天真地以为前端===好看的页面,甚至把js都划分到除了用来写一些美美的特效别无它用的阴暗角落里,就 ...

  3. iOS关于模块化开发解决方案(纯干货)

    关于iOS模块化开发解决方案网上也有一些介绍,但真正落实在在具体的实例却很少看到,计划编写系统文章来介绍关于我对模块化解决方案的理解,里面会有包含到一些关于解耦.路由.封装.私有Pod管理等内容:并编 ...

  4. Angular 结合RequireJs实现模块化开发

    angular的指令是模块化很好的一个体现,下面我将只使用指令(不用控制器),结合requirejs,实现模块化开发. 模块化关系图:

  5. .NET/ASP.NET MVC(模块化开发AraeRegistration)

    阅读目录: 1.开篇介绍 2.AreaRegistration注册路由(传递路由上下文进行模块化注册) 1]开篇介绍 ASP.NET Routing 路由功能非常强大,设计的也很巧妙:如果说ASP.N ...

  6. Mvc 模块化开发

    在Mvc中,标准的模块化开发方式是使用Areas,每一个Area都可以注册自己的路由,使用自己的控件器与视图.但是在具体使用上它有如下两个限制 1.必须把视图文件放到主项目的Areas文件夹下才能生效 ...

  7. 模块化开发--sea.js

    当你的网站开发越来越复杂的时候,会经常遇到一下问题吗?1.冲突2.性能3.依赖如果在多人开发或者是复杂的开发过程中会经常遇到这些问 题,就可以用模块化开发来解决.以上问题是如何产生的?1.冲突:如果你 ...

  8. 详解JavaScript模块化开发

    什么是模块化开发? 前端开发中,起初只要在script标签中嵌入几十上百行代码就能实现一些基本的交互效果,后来js得到重视,应用也广泛起来了,jQuery,Ajax,Node.Js,MVC,MVVM等 ...

  9. Javascript模块化开发,使用模块化脚本加载工具RequireJS,提高你代码的速度和质量。

    随着前端JavaScript代码越来越重,如何组织JavaScript代码变得非常重要,好的组织方式,可以让别人和自己很好的理解代码,也便于维护和测试.模块化是一种非常好的代码组织方式,本文试着对Ja ...

随机推荐

  1. SpringCloud之旅第一篇-微服务概念

    一.单体架构的问题 微服务为什么会出现?在学习Springboot的时候知道Springboot极大的简化了我们的开发,我们可以快速的进行业务开发,Springboot单体应用在项目的开发初期能够满足 ...

  2. BlocksKit的使用

    一.引言 众所周知Block已被广泛用于iOS编程.它们通常被用作可并发执行的逻辑单元的封装,或者作为事件触发的回调.Block比传统回调函数有2点优势: 允许在调用点上下文书写执行逻辑,不用分离函数 ...

  3. Lightoj 1147【DP】

    题意: 把n个人分成两部分,要你怎么分使得两部分尽可能相等: 思路: 如果我们把一部分人的重量达到离sum/2最近,那就一定行啊 其实就是一条棒,两种不同的棒去拼接成一条棒,然后最好就是离mid最近, ...

  4. HDU1598【最小生成树拓展】

    参考自 http://www.cnblogs.com/nanke/archive/2012/02/13/2350008.html PS: 没想到最小生成树的kruskal算法从小到大枚举边,然后MAX ...

  5. 洛谷P3960 列队(Splay)

    传送门 感觉自己好久不打数据结构已经完全不会了orz…… 据说正解树状数组?然而并不会 首先考虑一下每一次操作,就是把一个人从这一行中取出并放到行的最后,再从最后一列取出放到列的最后 那么这两种操作其 ...

  6. day02 多态

  7. element-ui + el-dialog + Vue.component 注册的富文本控件 第二次及以后打开dialog出现问题解决方法

    自定控件 添加属性  v-if="dialogVisible" <el-dialog title="" :visible.sync="dialo ...

  8. java数据结构----哈希表

    1.哈希表:它是一种数据结构,可以提供快速的插入操作和查找操作.如果哈希表中有多少数据项,插入和删除操作只需要接近常量的时间.即O(1)的时间级.在计算机中如果需要一秒内查找上千条记录,通常使用哈希表 ...

  9. centos7版本对比之前版本的部分命令差异

    centos7版本下的命令和之前的centos版本的命令有些许不同,最近在电脑上用VBox安装了一个centos7版本.在做一些网卡配置和安装mysql的时候遇到了一些问题.在这里总结跟大家分享下. ...

  10. 转:在linux中vi 文件里行尾奇怪的^M及解决

    Linux编辑器vim中删除行尾的^M 有时候,在 Linux 中使用打开曾在 Windows 中编辑过的文件时,会在行尾看到 ^M 字符.看起来总是感觉很别扭. 删除方法如下: 在 Vim 的命令模 ...