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

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

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

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

// 怎样定义函数
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.  
  3.  
  4. int _tmain(int argc, _TCHAR* argv[])  
  5. {  
  6.  int max(int x,int y);  
  7.  int a,b,c;  
  8.  printf("please enter two integer numbers:");  
  9.  scanf_s("%d,%d",&a,&b);  
  10.  c=max(a,b);  
  11.  printf("max is %d\n",c);  
  12.  return 0;  
  13. }  
  14.  
  15. int max(int x,int y)  
  16. {  
  17.  int z;  
  18.  z=x>y?x:y;  
  19.  return(z);  

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.  
  3.  
  4. int _tmain(int argc, _TCHAR* argv[])  
  5. {  
  6.  int max(float x,float y);  
  7.  float a,b;  
  8.  int c;  
  9.  scanf_s("%f,%f",&a,&b);  
  10.  c=max(a,b);  
  11.  printf("max is %d\n",c);  
  12.  return 0;  
  13. }  
  14.  
  15. int max(float x,float y)  
  16. {  
  17.  int z;  
  18.  z=x>y?x:y;  
  19.  return(z);