//  用函数实现模块化程序设计

// 为什么要用函数
模块化程序设计
函数 (function)

用函数调用实现输出以下的结果

  1. #include "stdafx.h"
  2. int _tmain(int argc, _TCHAR* argv[])
  3. {
  4. void print_star();
  5. void print_message();
  6. print_star();
  7. print_message();
  8. print_star();
  9. return 0;
  10. }
  11. void print_star()
  12. {
  13. printf("***************\n");
  14. }
  15. void print_message()
  16. {
  17. printf("How do you do!\n");
  18. }

// 怎样定义函数
1.为什么要定义函数

2.定义函数的方法
a.定义无参函数
一般形式为
类型名 函数名()
{
 函数体
}
 或
类型名 函数名(void)
{
 函数体
}

b.定义有参函数
int max(int x,int y)
{ int z;   //声明部分
z=x>y?x:y;   //执行语句部分
return(z);
}

一般形式为
类型名 函数名(形式参数表列)
{
 函数体
}
函数体包括声明部分和语句部分。

c.定义空函数
它的形式为
类型名 函数名()
{}

例如:
void dummy()
{}
函数体是空的。
在主函数中如果有调用此函数的语句:
dummy();

// 调用函数
1.函数调用的形式

print_star();  //调用无参函数
c=max(a,b);   //调用有参函数

函数调用的一般形式为
函数名(实参表列)

a.函数调用语句
把函数调用单独作为一个语句。

b.函数表达式
函数调用出现在另一个表达式中

c.函数参数
函数调用作为另一个函数调用时的实参

2.函数调用时的数据传输
a.形式参数和实际参数

在定义函数时函数名后面括号中的变量名称为"形式参数"(简称"形参")

在主调函数中调用一个函数时,函数名后面括号中的参数称为"实际参数"(简称"实参")
实际参数可以是常量、变量或表达式

b.实参合形参间的数据传递
在调用函数过程中,系统会把 实参 的值传递给被调用函数的形参。

在调用函数过程中发生的实参与形参间的数据传递,常称为"虚实结合"

输入两个整数,要求输出其中值较大者。要求用函数来找到大数。

  1. #include "stdafx.h"
  2. int _tmain(int argc, _TCHAR* argv[])
  3. {
  4. int max(int x,int y);
  5. int a,b,c;
  6. printf("please enter two integer numbers:");
  7. scanf_s("%d,%d",&a,&b);
  8. c=max(a,b);
  9. printf("max is %d\n",c);
  10. return 0;
  11. }
  12. int max(int x,int y)
  13. {
  14. int z;
  15. z=x>y?x:y;
  16. return(z);
  17. }

3.函数调用的过程
a.在定义函数中指定的形参,在未出现函数调用时,它们并不占内存中的存储单元。
在发生函数调用时,函数 max 的形参被临时分配内存单元。

b.将实参对应的值传递给形参。

c.在执行 max 函数期间,由于形参已经有值,就可以利用形参进行有关的运算。

d.通过 return 语句将函数值带回到主调函数。

e.调用结束,形参单元被释放。

4.函数的返回值
a.函数的返回值是通过函数中 return 语句获得的。

b.函数值的类型
int max (float x,float y)
char letter (char c1,char c2)
double min(int x,int y)

c.在定义函数时指定的函数类型一般应该和 return 语句中表达式类型一致。
函数类型决定返回值的类型。

//输入两个整数,要求输出其中值较大者。要求用函数来找到大数。
(将在max函数中定义的变量z改为 float 型 )

  1. #include "stdafx.h"
  2. int _tmain(int argc, _TCHAR* argv[])
  3. {
  4. int max(float x,float y);
  5. float a,b;
  6. int c;
  7. scanf_s("%f,%f",&a,&b);
  8. c=max(a,b);
  9. printf("max is %d\n",c);
  10. return 0;
  11. }
  12. int max(float x,float y)
  13. {
  14. int z;
  15. z=x>y?x:y;
  16. return(z);
  17. }

转载于:https://blog.51cto.com/290692/1130954

怎样定义函数,调用函数相关推荐

  1. c语言学习-定义并调用函数求两个整数之差的绝对值

    定义并调用函数求两个整数之差的绝对值 程序流程图: 代码: #include<stdio.h> int fabs(int m ,int n) {int f; f=m-n; if(f< ...

  2. python中函数的定义_Python函数是什么_如何定义和调用函数?

    函数是什么? 本节Python培训教程是要大家认识一个"老朋友"--函数. 与数学中的函数不同,在Python中,函数不是看上去冰冷无聊的规则和公式,而是实打实的.有自己作用的代码 ...

  3. 输入一个正整数n,再输入n个学生的姓名和百分制成绩,将其转换为两级制成绩后输出。要求定义和调用函数set_grade(stu, n),其功能是根据结构数组stu中存放的学生的百分制成绩score,将其

    输入一个正整数n,再输入n个学生的姓名和百分制成绩,将其转换为两级制成绩后输出.要求定义和调用函数set_grade(stu, n),其功能是根据结构数组stu中存放的学生的百分制成绩score,将其 ...

  4. 输入在一行中给出两个正整数m和n(m≤n),以空格分隔。按照格式“result = 组合数计算结果”输出。题目保证结果在double类型范围内。建议定义和调用函数fact(n)计算n!

    本题要求编写程序,根据公式C​n​m​​=​m!(n−m)!​​n!​​算出从n个不同元素中取出m个元素(m≤n)的组合数. 建议定义和调用函数fact(n)计算n!,其中n的类型是int,函数类型是 ...

  5. 数学建模速成!两小时零基础入门MATLAB教程(六)—— 定义和调用函数

    MATLAB定义函数 文章目录 MATLAB定义函数 1. 常见问题 2. 如何定义 2.1语法 2.2举例 3. 如何使用 3.1 得到返回值 3.2 将定义的函数作为参数传递给其他函数(函数指针) ...

  6. matlab中的函数调用法则,Matlab怎么调用函数?调用函数技巧一览

    Matlab作为一款专业性极强的商业数学软件,将诸多的算法开发.统计分析.数据可视化功能融入其中,用户可以方便地调用需要的函数,建立数学模型,为了满足你工作的需要,还可以自行设置自己需要的函数,下面就 ...

  7. matlab定义和调用函数m,Matlab学习-自定义函数与调用

    Matlab的自定义函数与调用 网上关于这方面内容应该比较全,这里只简单介绍常用的2种方法: 1.在一个.m文件中定义函数,然后在命令文件中调用 新建一个.m文件后,在里面定义函数按照以下方法: fu ...

  8. 输入精度e,使用格雷戈里公式求π的近似值,精确到最后一项的绝对值小于e。要求定义和调用函数funpi(e)求π的近似值。

    输入格式: 输入在一行中给出精度e. 输出格式: 对每一组输入,在一行中输出π的近似值. 输入样例: 0.0001 结尾无空行 输出样例: pi = 3.141793 结尾无空行 编写代码 #incl ...

  9. 输入圆柱的高和半径,求圆柱体积,volume=π×r 2 ×h 。要求定义和调用函数cylinder (r, h )计算圆柱体的体积。

    输入格式: 输入在一行中给出2个实数,分别为半径r和高h. 输出格式: 在一行中以"Volume = 值"的形式输出圆柱体的体积,结果保留三位小数. 输入样例: 3.0 10 结尾 ...

  10. 定义并调用函数输出 fibonacci 序列_科学网—Zmn-0351 薛问天:再谈数学概念的定义,评新华先生《0345》...

    Zmn-0351 薛问天:再谈数学概念的定义,评新华先生<0345> [编者按.下面是薛问天先生发来的文章.是对<Zmn-0345>新华先生文章的评论.现在发布如下,供网友们共 ...

最新文章

  1. mysql 5.7.16默认密码_(转)Ubuntu16安装mysql5.7未提示输入密码,安装后修改mysql默认密码...
  2. Ubuntu伪分布式hadoop安装
  3. 最佳子集aic选择_AutoML的起源:最佳子集选择
  4. 改善Python程序的91个建议(二)
  5. linux程序内码,windows系统与linux系统的内码转换总结
  6. 数组是逻辑结构还是存储结构_逻辑结构?存储结构?傻傻分不清……
  7. MaxDOS 网刻服务端网刻教程。
  8. 用pywinhook或pyhook监听鼠标事件
  9. Qt Cmake configuration has no path to a C++ compiler set, even though the toolkit has a v
  10. 中国2项上榜:《时代周刊》2019年度100大最佳发明榜单发布!
  11. bad interpreter问题
  12. html鼠标经过状态,HTML5 - 让Canvas内部元素实现鼠标移入、移出效果(Tooltip提示效果)...
  13. 命令行查询某web服务器的ip地址
  14. wifipineapple外接网卡上网
  15. 俄罗斯方块、贪吃蛇、心形表白 | 好玩的C语言源码
  16. 中国前10名的休闲服品牌企业信息化漫谈--S公司
  17. iOS 16 NSTextContentStorage locationFromLocation:withOffset: 崩溃问题
  18. tomcat优化(五)tomcat调优
  19. HTML-用户登录界面
  20. 晶闸管|Thyristor(半控型器件)

热门文章

  1. 人生真是圆的,从BASIC开始的程序人生,又回到了BASIC,难道。。。。。
  2. 12_第一个Flutter程序
  3. SylixOS下移植glib时clock_gettime函数分析
  4. NetWare 5.1 Does Not Recognize CD-ROM Drive
  5. 先搭云安全框架 再谈云落地
  6. 垃圾代码评析——关于《C程序设计伴侣》9.4——链表(一)
  7. _tcstoul() 使用
  8. LeetCode 144. 树的前序遍历迭代写法
  9. CenterLoss
  10. VScode 把tab置换为空格