打赏

3.8-day08-C语言基础-C语言中的函数

C语言中使用函数对大量语句进行分组。
函数编写方法如下
返回值类型  函数名称(形参列表) {
   语句
}
 
不同的函数通过函数名区分
返回值是一个变量,可以用来记录函数执行过程中产生的一个新数据。这个变量在函数结束后可以被其他函数使用。
形参就是一组变量,函数开始执行时被临时创建出来并使用指定数据进行初始化。
大括号前面的部分可以独立存在,叫做函数声明。
大括号整体叫做函数体。
 
fflush(stdout);
这条语句可以把输出缓冲区里的内容立刻显示在屏幕上
 
形参和实参是完全不同的,实参用来对形参进行初始化。函数结束后形参自动消失。
 
在源程序文件的开头应该把文件中所有函数的声明都列出来。否则有可能在编译的时候导致函数隐式声明,这种声明方式有可能出问题。
 
exit(0);语句可以在任何地方终止整个程序的执行,需要包含stdlib.h文件。
 
使用数组做参数时形参和实参是同一个数组,函数中修改了数组的内容调用函数可以看着数组的变化。
 
使用数组做参数需要一个专门的参数表示数组中的变量个数
 
递归函数在执行过程中还会再次调用自己
 
用循环方法解决问题的思路叫做递推,用递归函数解决问题的思路叫做递归
 
01func.c
 1 /*
 2     函数练习
 3 */
 4 #include <stdio.h>
 5 int add(int value, int value1) {
 6     return value + value1;
 7 }
 8 void show(int value) {
 9     printf("计算结果是");
10     printf("%d\n", value);
11 }
12 int main() {
13     int value = 0;
14     value = add(2, 3);
15     value = add(value, 4);
16     show(value);
17     return 0;
18 }


02read.c

 1 /*
 2     函数练习
 3 */
 4 #include <stdio.h>
 5 int read() {
 6     int value = 0;
 7     printf("请输入一个整数:");
 8     while (!scanf("%d", &value)) {
 9         scanf("%*[^\n]");
10         scanf("%*c");
11         printf("请再次输入一个整数:");
12     }
13     scanf("%*[^\n]");
14     scanf("%*c");
15     return value;
16 }
17 int main() {
18     int value = 0;
19     value = read();
20     printf("数字是%d\n", value);
21     return 0;
22 }


03add.c

 
 1 /*
 2     函数练习
 3 */
 4 #include <stdio.h>
 5 //int add();    隐式函数声明
 6 int add(int , int );   //显示函数声明
 7 int main() {
 8     int value = 0;
 9     value = add(2, 3); 
10     printf("%d\n", value);
11     return 0;
12 }
13 int add(int value, int value1) {
14     return value + value1;
15 }

 隐式函数声明和显示函数声明都是可以编译运行执行的;


 04func.c
 
/*
    函数练习
*/
#include <stdio.h>
#include <stdlib.h>
void func() {
    printf("abc\n");
    //return ;
    exit(0);
    printf("def\n");
}
int main() {
    func();
    printf("xyz\n");
    return 0;  -  

exit(0);语句可以在任何地方终止整个程序的执行,需要包含stdio.h  文件;

 


 

 05func.c
 
/*
    函数练习
*/
#include <stdio.h>
void neg(int value[], int num) {
    //printf("sizeof(value)是%d\n", sizeof(value));
    int loop = 0;
    for (loop = 0; loop <= num - 1; loop++) {
        value[loop] = 0 - value[loop];
    }
}
int main() {
    int value[] = {4, -7, 9, -8}, loop = 0;
    neg(value, 4);
    for (loop = 0; loop <= 3; loop++) {
        printf("%d ", value[loop]);
    }
    printf("\n");
    return 0;
}

 

 

06square.c

 
/*
    数组做参数的练习
*/
#include <stdio.h>
void square(int value[], int num) {
    int loop = 0;
    for (loop = 0; loop <= num - 1; loop++) {
        value[loop] *= value[loop];
    }
}
int main() {
    int value[] = {3, -6, -2, 9}, loop = 0;
    square(value, 4);
    for (loop = 0; loop <= 3; loop++) {
        printf("%d ", value[loop]);
    }
    printf("\n");
    return 0;
}


07func.c

/*
     递归函数练习
*/
#include <stdio.h>
void print(int num) {
    if (1 == num) {
        printf("1\n");
    }
    else {
        printf("%d\n", num);
        print(num - 1);
    }
}
int main() {
    int loop = 0;
    /*printf("1\n");
    printf("1\n");
    printf("1\n");*/
    /*for (loop = 0; loop < 3; loop++) {
        printf("1\n");
    }*/
    print(9);
    return 0;
}


08sum.c

 
/*
    递归练习
*/
#include <stdio.h>
int sum(int num) {
    if (1 == num) {
        return 1;
    }
    else {
        return num + sum(num - 1);
    }
}
int main() {
    printf("sum(5)是%d\n", sum(5));
    return 0;
}

如果把被调用的函数写在后面不进行声明,编译的时候会出现错误;
 
如果把调用的函数写在后面需要在主函数里面进行声明;
 
 


09han.c

 
/*
    递归练习
*/
#include <stdio.h>
void han(int num, char src, char mid, char dest) {
    if (1 == num) {
        printf("把盘子%d从%c柱移动到%c柱\n", num, src, dest);
    }
    else {
        han(num - 1, src, dest, mid);
        printf("把盘子%d从%c柱移动到%c柱\n", num, src, dest);
        han(num - 1, mid, src, dest);
    }
}
int main() {
    int num = 0;
    printf("请输入盘子个数:");
    scanf("%d", &num);
    han(num, 'A', 'B', 'C');
    return 0;
}

 

 

posted on 2018-11-29 22:36  XuCodeX  阅读(128)  评论(0)    收藏  举报

导航