2019 1 17 赵松儒

1.函数的定义:返回值类型 函数名(函数列表)

2.函数的声明:返回值类型 函数名(参数类型);

3.函数的调用:变量 = 函数名(参数的值)(在函数有返回值的时候)
     注意:若函数无返回值,返回值类型为void

4.函数的传参是从右至左的 如:printf("a:%d, b:%d, c:%d", a, b, c);先传c,再传b,再传a

5.变量分为:局部变量 全局变量
    局部变量:在函数内定义
              生存周期和作用域:从定义开始到函数结束
          主要为:函数的参数,函数内定义的变量
          初始值:未初始化值随机,存放在栈里
    全局变量:在函数体外定义
              生存周期和作用域:从定义开始到进程结束
          初始值:未初始化为0,存放在 .bss里
                  初始化存放在 .data里
          全局变量的使用:能不用就不用
                          如果一定要用,用static修饰

6.声明说明符:存储类型:auto, static, extern, register
          类型限定符:const, volatile
          类型说明符:void, char, short, int, long, float, double, signed, unsigned

7.变量的存储类型:
    auto:只对块的变量有效,它是默认的
    static:局部静态变量: 未初始化时,存放在.bss段,值为0。初始化,存放在.data段。提升生存周期,从定义开始到进程结束,并只初始化一次
            全局静态变量: 限制作用域,只能在本文件中使用。
     externa:外部声明变量
     register:寄存器变量

8.类型限定符:
    const:只读,可以访问,但无法改变值
    volatile: 易失变量,防止编译优化

9.修饰函数的关键字:
    static:限制此函数只能在本文件中调用
    inline:内联函数就是在调用的时候切换函数的地址,之间将函数体内代码替换到函数调用的位置
            是建议性关键字,只适合函数体简洁,代码量少
    extern:没有在本文件中定义的函数,声明时可使用此关键字

10.递归函数:递归点,递归终止条件

 1 /*求得两个整型数中较大的那个*/
 2 
 3 #include <stdio.h>
 4 
 5 int compare(int x, int y);
 6 
 7 int main(void)
 8 {
 9     int x,y;
10 
11     printf("请输入两个整数值x,y: ");
12     scanf("%d,%d",&x,&y);
13     
14     if (x == y) {
15         printf("两个值相同\n");
16     } else {
17         printf("最大值为:%d\n",compare(x,y));
18     }
19 
20     return 0;
21 
22 }
23 
24 int compare(int x, int y)
25 {
26     return (x > y ? x : y);
27 }
 1 /*返回给定正整数的倒数,如 给定1234,返回4321*/
 2 
 3 #include <stdio.h>
 4 
 5 int dao(int y);//求输入的数的逆序数
 6 
 7 int main(void)
 8 {
 9     int i,n;
10 
11     printf("请输入一个正整数: ");
12     scanf("%d",&i);
13 
14     n = dao(i);
15 
16     printf("%d的倒序数为%d\n",i,n);
17 
18     return 0;
19 }
20 
21 int dao(int y)
22 {
23     int j;
24     int result = 0;
25 
26     for (; y > 0 ;) {
27         j = y % 10;
28         result = result * 10 + j;
29         y = y / 10;
30     }    
31 
32     return result;
33     
34 }
 1 /*用递归求一个整型数的阶乘*/
 2 
 3 #include <stdio.h>
 4 
 5 int factorial(int i);
 6 
 7 int main(void)
 8 {
 9     int i,j;
10 
11     printf("请输入一个数: ");
12     scanf("%d",&i);
13 
14     j = factorial(i);
15     
16     printf("%d的阶乘为%d\n",i,j);
17 
18     return 0;
19 }
20 
21 int factorial(int i)
22 { 
23 
24     if (i > 1) {
25         return i * factorial(i - 1);
26     }
27     
28 }
 1 /*判断一个整数是否在两个数之间*/
 2 
 3 #include <stdio.h>
 4 
 5 int judge(int x, int y, int z);
 6 
 7 int main(void)
 8 {
 9     int x,y,z;
10 
11     printf("请输入一个整数,和两个数,x y z: ");
12     scanf("%d%d%d",&x,&y,&z);
13 
14     if (judge(x,y,z) == 1) {
15         printf("%d在%d和%d之间\n",x,y,z);
16     } else {
17         printf("%d不在%d和%d之间\n",x,y,z);
18     }
19 
20 
21     return 0;
22 }
23 
24 int judge(int x, int y, int z)
25 {
26     if ((x > y && x < z) || (x > z && x < y)) {
27         return 1;
28     } else {
29         return 0;
30     }
31 }

 

posted @ 2019-01-17 20:22  frankzsr  阅读(114)  评论(0编辑  收藏  举报