函数
1. 函数基本格式
举个例子:
void main(){ void printstar(); // 函数必须先声明.再去调用 void print_message(); // 函数必须先声明.再去调用 printstar(); print_message(); printstar(); } void printstar(){ printf("*************\n"); } void print_message(){ printf("I am you father!!!") }
函数声明时需要加上形参和实参
输入两个整数. 比较大小:
#include <stdio.h> void main(){ int max(int x, int y); // 形参要加上数据类型 int a, b, c; scanf("%d, %d", &a, &b); c = max(a, b); printf("Max is %d", c); } int max(int x, int y){ int z; z = x > y ? x : y; return z; }
2. 函数的嵌套
举个例子: 使用程序求出 2和3平方的阶乘之和
#include <stdio.h> // 一般函数都在开头声明 long square(int p); long factorical(int q); void main(){ int i; long s = 0; for (i=2; i<=3; i++){ s = s + square(i); } printf("%d\n", s); } long square(int p){ int k; long r; // 求平方 k = p * p; r = factorical(k); return r; } long factorical(int q){ long c = 1; int i; // 求阶乘 for (i=1; i<=q; i++){ c *= i; } return c; }
3. 递归
举个例子: Hanoi
// hanoi问题 void hanoi(int n, char one, char two, char three){ // 整体法移动 void move(char x, char y); // 对函数声明 if(n == 1){ move(one, three) }else{ hanoi(n-1, one, three, two); move(one, three); hanoi(n-1, two, one, three); } } void move(char x, char y{ printf("%c-->%c\n", x, y); }
4.数组名作为函数参数
来个例子: 有一个数组. 里面放置这10个学生的成绩. 写一个函数. 求出平均值. 最高分和最低分.
#include <stdio.h> float Max = 0, Min = 0; // 全局变量 void main(){ float average(float array[], int n); // 声明 float ave, score[10]; int i; for (i=0; i<10; i++){ scanf("%f", &score[i]); } ave = average(score, 10); printf("Max = %6.2f\nmin = %6.2f\naverage = %6.2f\n", Max, Min, ave); // 宽度6. 精度2 } float average(float array[], int n){ // 形参为数组 int i; float ave, sum = array[0]; // ave和上面的变量名字相同也没关系. 因为定义的是局部变量 Max = Min = array[0]; for (i=1; i<n; i++){ if (array[i] > Max){ Max = array[i]; } else if (array[i] < Min){ Min = array[i]; } sum += array[i]; } ave = sum / n; return ave; // Min. Max不需要返回.因为开头定义成了全局变量 }
5. static
使用static定义局部变量
举个例子: 考察静态局部变量的值
#include <stdio.h> int f(int a){ auto b = 0; static c = 3; // 不会删除缓存. 下一次就会变成4 b += 1; c += 1; return a + b + c; } void main(){ int a = 2, i; for (i=0; i<3; i++){ printf("%d\n", f(a)); } }
6. extern
extern声明外部变量
{{uploading-image-77491.png(uploading...)}}
举个例子: 使用extern声明外部变量, 拓展程序文件中的作用域
#include <stdio.h> int max(int x, int y){ int z; z = x > y ? x : y; return z; } void main(){ extern A, B; // 定义了全局变量 printf("%d\n", max(A, B)); } int A = 13, B = -8; // 程序从上往下定义. 如果前面没有extern这个程序就会报错




