学习C语言的函数

 
学习函数
       主要学习函数的用法。首先讨论为什么要使用函数,然后详细讨论内置函数和自定义函数以及函数的结构,最后讨论函数调用以及函数的返回值。
       函数可以把相对独立的某个功能抽象出来,使之成为程序中的一个独立实体。可以在同一个程序或其他程序中多次重复使用
函数机制的优点
Ø         使程序变得更简短而清晰
Ø         有利于程序维护
Ø         可以提高程序开发的效率
Ø         提高了代码的重用性
函数的两种类型:内置函数和自定义函数
       内置函数:
Ø       由C语言系统提供;
Ø       用户无须定义,也不必在程序中作类型说明;
Ø       只需在程序前包含有该函数定义的头文件;
内置函数
头文件
用途
double sqrt(double x)
math.h
计算x的平方根
double pow(double x, double y)
计算x的y次幂
double ceil(double x)
求不小于x的最小整数,并以double形式显示
double floor(double x)
求不大于x的最大整数,并以double形式显示
int toupper(int x)
ctype.h
如果x为小写字母,则返回对应的大写字母
int tolower(int x)
如果x为大写字母,则返回对应的小写字母
int rand(void)
stdlib.h
产生一个随机数
void exit(int retval)
终止程序
内置函数sqrt 和pow 示例:
#include <stdio.h>
#include 
<math.h>
void main()
{
   
int x=1;
   
double squareroot,power;
   
while(x <= 10)
   
{
squareroot
=sqrt(x);
power
=pow(x,3);
printf(
" %d的平方根:%3.2f %d的立方:%5.0f  ",
                x,squareroot,x,power);
x
++;
   }

}
 
输出:
1的平方根: 1.00        1的立方:    1
 2的平方根: 1.41        2的立方:    8
 3的平方根: 1.73        3的立方:   27
 4的平方根: 2.00        4的立方:   64
 5的平方根: 2.24        5的立方: 125
 6的平方根: 2.45        6的立方: 216
 7的平方根: 2.65        7的立方: 343
 8的平方根: 2.83        8的立方: 512
 9的平方根: 3.00        9的立方: 729
10的平方根: 3.16       10的立方: 1000
Press any key to continue////
内置函数ceil和floor示例
#include <stdio.h>
#include 
<math.h>
void main()
{       
         printf(
"==============floor()=========");
         printf(
"  floor(99.1) = %f  ",floor(99.1));
         printf(
" floor(-99.1) = %f ",floor(-99.1));
         printf(
" floor(99.9) = %f ",floor(99.9));
         printf(
" floor(-99.9) = %f ",floor(-99.9));
         printf(
" ==============ceil()==========");
         printf(
"  ceil(99.1) = %f ",ceil(99.1));
         printf(
" ceil(-99.1) = %f ",ceil(-99.1));
         printf(
" ceil(99.9) = %f ",ceil(99.9));
         printf(
" ceil(-99.9) = %f ",ceil(-99.9));
}

输出:
==============floor()=========
 floor(99.1) = 99.000000
 floor(-99.1) = -100.000000
 floor(99.9) = 99.000000
 floor(-99.9) = -100.000000
 
==============ceil()==========
 ceil(99.1) = 100.000000
 ceil(-99.1) = -99.000000
 ceil(99.9) = 100.000000
 ceil(-99.9) = -99.000000
Press any key to continue
toupper和tolower示例
#include<stdio.h>
#include
<ctype.h>
void main()
{
char msg1,msg2,to_upper,to_lower;
printf(
"请输入一个小写字母:");
msg1
=getchar();
to_upper
=toupper(msg1);
printf(
"转换为大写:%c ",to_upper);
printf(
"请输入一个大写字母:");
fflush(stdin);
msg2
=getchar();
to_lower
=tolower(msg2);
printf(
"转换为小写:%c ",to_lower);
}
 
请输入一个小写字母:d
转换为大写:D
请输入一个大写字母:E
转换为小写:e
Press any key to continue
内置函数rand示例
#include<stdio.h> 
#include
<stdlib.h> 
//#include<time.h>
void main() 

       
int i; 
       printf(
"产生 10 个 0 到 99 之间的随机数序列: "); 
       
//srand((unsigned)time(NULL));
       for(i=0; i<10; i++
             printf(
"%d ", rand() % 100); 
       printf(
" ");
}
 
产生 10 个 0 到 99 之间的随机数序列:
44 73 26 58 37 94 27 42 28 90
Press any key to continue
自定义函数:
Ø       用户在程序中根据需要而编写的函数;
Ø         函数名的命名规则和变量命名一样。注意尽量能够表达出正确的意义,如果说一个变量命名重在说明它“是什么”的话,则一个函数重在说明它要“做什么”。比如一个函数要实现两数相加,则可以命名为AddTwoNum,这样有助于阅读。
Ø         函数参数。格式为:int AddTwoNum(int a,int b ) 注:两个或多个参数类型相同时,并不能同进声明。例如:AddTwoNum(int a, b )//是错误的。
Ø         在C语言中,不允许一个函数定义在另一个函数体内。如:
Void A()
{
        Void B()         //错误,函数B定义在函数A体内。
        {…..
        }
…..
}
函数原型
函数原型说明在形式上与函数头部类似,最后加一个分号。原型说明中参数表里的参数名可以不写(只写参数类型)
#include <stdio.h>
float count (int, int);
void main()
{
   . . .
   . . .
}
float co nt(int x,int y)
{
 . . .
}
函数调用
Ø         通过在程序中使用函数名称,可以执行函数中包含的语句,这称为调用函数
Ø         函数之间允许相互调用,也允许嵌套调用
Ø         函数还可以自己调用自己,称为递归调用
示例:
#include<stdio.h>
void AreaOfRect();
void AreaOfTriangle();
void AreaOfRound();
void main()
{
       
int select;
       
do {
            printf(
" 0、退出  1、长方形  2、三角形  3、圆形 ");
            printf(
"请选择功能:");
            scanf(
"%d",&select);
            
if(select == 0)     break;
      
switch(select) {
            
case 1 : AreaOfRect(); break//长方形
            case 2 : AreaOfTriangle(); break//三角形
            case 3 : AreaOfRound(); break//圆形
           default : printf("输入有误,请在 0~4 之间选择。 ");
          }

      }
while(1);
}

void AreaOfRect() 
{
        
int x,y; 
        printf(
"请输入长方形的长:"); 
        scanf(
"%d",&x);
        printf(
"请输入长方形的宽:"); 
        scanf(
"%d",&y);
        printf(
"面积为:%d ",(x * y)); 
}
 
void AreaOfRound()
{
      
int r; 
      printf(
"请输入圆形的半径:"); 
      scanf(
"%d",&r);
      printf(
"面积为:%d ",3.14*r*r); 
}

void AreaOfTriangle()
{
        
int x,y; 
        printf(
"请输入三角形的底:"); 
        scanf(
"%d",&x);
        printf(
"请输入三角形的高:"); 
        scanf(
"%d",&y);
        printf(
"面积为:%d ",(x * y)/2); 
}
 
 
函数返回值
C 语言中的 return 语句用于向调用函数返回值,语法如下:
             return (<表达式>);
Ø       C语言中的函数至多可以返回一个值,不能返回多个值;
Ø        返回值的数据类型必须与函数原型中返回值的数据类型匹配;
Ø        当遇到 return 语句时,函数执行将终止。程序控制流将立即返回调用函数;
示例:
#include <stdio.h>
int get_age();
void main()
{
     
int age1, age2, age3;
     age1 
= get_age();
     age2 
= get_age();
     age3 
= get_age();
     
if ( (age1 > age2) && (age1 > age3))
         printf(
" 年龄为 %d 的人最大 ", age1);
     
else if( (age2 > age1) && (age2 > age3))
         printf(
" 年龄为 %d 的人最大 ", age2);
     
else if( (age3 > age1) && (age3 > age2))
         printf(
" 年龄为 %d 的人最大 ", age2);
}

int get_age()
{
    
int age;
    printf(
" 请输入年龄: ");
    scanf(
"%d",&age);
    
return age;
}

函数的结构包括:返回值类型、函数名、参数列表、函数体
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章