编程基础C—— 常量、宏、枚举、函数以及函数的递归调用的应用总结

1. 常量
 
为什么使用常量:
防止数据在程序中被任意修改,造成前后不一致
可以很方便的批量进行调整,能做到快捷、方便、安全
使用const进行定义常量
 
2.宏
 
使用宏定义常量:
 
#define开头的语句称为宏定义
#作用是预编译
#define   宏名 对应的表达式
  
#define Age 1
#define Sum(a,b)((a)+(b))
#define Max(a,b)((a)>(b)?(a):(b))
 
注意:最后没有分号。
 
       宏定义不需要类型,因为只是文本替换。
       变量名不要与宏名重复,宏定义会用宏对应的值替换掉程序中出现的宏名(引号里的除外)
       #include Sum(a,b)((a)+(b))
 
       使用宏要注意,必须在使用之前进行定义。
 
3.枚举
     (1) enum 枚举名  {枚举元素1,枚举元素2,,,,,};
        enum  Season {spring,summer,autumn,winter};
 
        一组有限的常量称为枚举
        枚举元素是常量不能赋值
 
enum是用来声明枚举类型数据,它可以像数组一样存储许多的元素,但是不同于数组的是,它除了数字不能存储以外,其他类型的如字母、特殊符号、汉字都可以以任意组合存入enum当中去。
 
(2) enum的声明:enum A { a, b, c };
 
enum声明不同于数组,其只可以声明在Main()方法体外,在Main()中可以被调用。
 
(3)  enum的枚举数值默认是从0开始的,往后依次加1,但是也可以强制元素序列进行改变。enum A {a=1, b, c}; 这样就可以实现了。
 
(4) enum可以通过枚举名加点通过枚举的元素访问枚举数值。
例:
int i = (int)A.a;
枚举值虽然是int类型的,但是也必须进行显示的强制转换。
 
(5) 同样enum也可以通过枚举数值来访问枚举内的各个元素。方法是:Console.WriteLine( " (A)1 " );这样就可以访问enum内的各个元素。
 
(6) 定义枚举变量的三种形式:
1.先定义枚举类型,再定义枚举变量:   enum Season s;(s是枚举变量)
2.定义枚举类型的同时定义枚举变量:  enum  Season {spring,summer,autumn,winter} season;
3.省略枚举类型名,直接定义变量:       enum    {a,b}  c;
 
   (7)枚举的适用场合
            一个变量有几种可能的值,我们可以将变量制定的值一一列出
   (8)枚举的使用事项
            enum color{red=0,orange=1,green=3,blue=4};
            enum color{red=10,orange,green,blue};
     (9)遍历需要注意的地方,枚举类型的元素的值要具有连续性才可以使用for遍历。
   (10)枚举的好处
              提高代码可读性
              便于程序维护
4.函数
用函数实现模块化程序设计。
 函数的定义:
返回值类型 函数名(形参列表,多个形参要对变量的类型单个声明)
{
     函数体
     return 函数值;
}
 
将函数的定义写在主函数(main函数)之前。
 
注意有返回值的函数,return的类型要与函数返回值类型一致,无返回值,不能return一个值,但是可以使用return。
函数调用的结果就是return返回的值,
调用函数时,实参列表的个数要与形参保持一致,并且类型也要一致。
 
变量的作用域:
 
1)局部变量:(在某函数体内时),变量的作用域取决于其定义的大括号内,如果在函数的形参列表内,其作用域属于该函数。
(2)全局变量:其作用域取决于其声明的位置,在其位置之后的,均可以使用。
   注意: 当局部变量与全局变量名字重复时,变量的值取决于离其最近的赋值运算。
 
函数调用的一般形式:
函数名(实参表列)
 
  例:
//使用函数调用求两个数中比较大的数

#include <stdio.h>
int max(int a,int b)
{
    int m;
    m = a > b?a:b;
    return m;
}
int main(int argc, const char * argv[])
{
    int x,y,z;
    printf("请输入两个整数:");
    scanf("%d%d",&x,&y);
    z =  max (x,y);       //函数调用
    printf("max=%d",z);
    return 0;
     }    
5.函数的递归调用:
在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为该函数的递归调用。
 
例:
用递归函数计算10以内偶数的和;
 
#include <stdio.h>
int sum(int a)
{
    if(a == 0)
    {
        return 0;
    }
    int b = a + sum(a - 2);
    return b;
}
int main(int argc, const char * argv[])
{
    int c = sum(10);
    printf("c = %d",c);
    return 0;
}
感谢您的访问! 若对您有帮助或有兴趣请关注博客:http://www.cnblogs.com/Rong-Shengcom/
原文地址:https://www.cnblogs.com/Rong-Shengcom/p/4931372.html