#include <stdio.h> void two(); void three(); int main() printf("i'm in main.\n"); two(); return 0; void two() printf("i'm in two.\n"); three(); void three() printf("i'm in three.\n");
void, int 标识符逗号分隔, 可以为空 < 返回值类型 > < 函数名 >(< 参数列表 >) < 函数体 > 可以为空
int min(int a, int b) return a < b? a : b;
#include <stdio.h> int min(int a, int b) return a < b? a : b; int main() int x, y, c; scanf("%d%d", &x, &y); c = min(x, y); printf("%d\n", c); return 0; 被调函数 主调函数
#include <stdio.h> int min(int a, int b) return a < b? a : b; int main() int x, y, c; scanf("%d%d", &x, &y); c = min(x, y); printf("%d\n", c); return 0;
int gcd(int u, int v) int tmp; while (v = 0) tmp = u % v; u = v; v = tmp; return u;
#include <stdio.h> int main() int x, y, z; x = 145; y = 25; z = gcd(x, y); /* 1 */ printf("gcd(%d, %d) = %d\n", x, y, z); x = 16; y = 24; printf("gcd(%d, %d) = %d\n", x, y, gcd(x, y)); /* 2 */ z = gcd(x, x + y); /* 3 */ printf("gcd(%d, %d) = %d\n", x, x + y, z); return 0;
可以为空 return < 表达式 >;
int min(int x, int y); float max(float x, float y); double sin(double x);
y = sin(x); z = min(x, y); n = printf("hello, %d", x);
返回值类型函数名 ( 参数列表类型 );
#include <stdio.h> int min(int a, int b); int main() int x, y, c; scanf("%d%d", &x, &y); c = min(x, y); printf("%d\n", c); return 0; int min(int a, int b) return a < b? a : b; 声明 定义
#include <stdio.h> int min(int, int); int main() int x, y, c; scanf("%d%d", &x, &y); c = min(x, y); printf("%d\n", c); return 0; int min(int a, int b) return a < b? a : b; 声明 只需类型即可 定义
#include <stdio.h> int min(int a, int b) return a < b? a : b; int main() int x, y, c; scanf("%d%d", &x, &y); c = min(x, y); printf("%d\n", c); return 0; 声明 + 定义
include
#include <stdio.h> void swap(int x, int y) int tmp; tmp = x; x = y; y = x; int main() int a = 10; int b = 20; printf("a = %d, b = %d\n", a, b); swap(a, b); printf("a = %d, b = %d\n", a, b); 能交换成功吗? return 0;
#include <stdio.h> void swap(int x, int y) int tmp; tmp = x; x = y; y = x; int main() int a = 10; int b = 20; printf("a = %d, b = %d\n", a, b); swap(a, b); 能交换成功吗? 不能 printf("a = %d, b = %d\n", a, b); return 0;
#include <stdio.h> int fact(int n) int i, result; result = 1; for (i = 1; i <= n; i++) result *= i; return result; int main() int n; scanf("%d", &n); printf("%d\n", fact(n)); return 0;
#include <stdio.h> int fact(int n) if (n == 0) return 1; else return n * fact(n - 1); int main() int n; scanf("%d", &n); printf("%d\n", fact(n)); return 0;
int gcd(int u, int v) int tmp; while (v = 0) tmp = u % v; u = v; v = tmp; return u;
int gcd(int u, int v) if (v == 0) return u; else return gcd(v, u % v);
#include <stdio.h> #define N 10 int main() int a[n] = 99, 90, 75, 84, 17, 24, 10, 55, 58, 53; int i, max_val; max_val = a[0]; for (i = 1; i < N; i++) if (a[i] > max_val) max_val = a[i]; printf("%d\n", max_val); return 0;
#include <stdio.h> #define N 10 int max_element(int a[n]) int i, max_val; max_val = a[0]; for (i = 1; i < N; i++) if (a[i] > max_val) max_val = a[i]; return max_val; int main() int a[n] = 99, 90, 75, 84, 17, 24, 10, 55, 58, 53; printf("%d\n", max_element(a)); return 0;
#include <stdio.h> #define N 10 int max_element(int a[n]) int i, max_val; max_val = a[0]; for (i = 1; i < N; i++) if (a[i] > max_val) max_val = a[i]; return max_val; int main() int a[n] = 99, 90, 75, 84, 17, 24, 10, 55, 58, 53; printf("%d\n", max_element(a)); return 0;
#include <stdio.h> #define N 10 int max_element(int a[n]) int max_element(int a[]) int i, max_val; max_val = a[0]; for (i = 1; i < N; i++) if (a[i] > max_val) max_val = a[i]; return max_val; int main() int a[n] = 99, 90, 75, 84, 17, 24, 10, 55, 58, 53; printf("%d\n", max_element(a)); return 0;
#include <stdio.h> float average(???)??? int main() int a[100], n, i; scanf("%d", &n); for (i = 0; i < n; i++) scanf("%d", &a[i]); printf("average = %f\n",???); return 0;
#include <stdio.h> float average(int a[], int n) int i; float sum = 0.0f; for (i = 0; i < n; i++) sum += a[i]; return sum / n; int main() int a[100], n, i; scanf("%d", &n); for (i = 0; i < n; i++) scanf("%d", &a[i]); printf("average = %f\n", average(a, n)); return 0;
#include <stdio.h> float average(int a[][4]) int i, j; float sum = 0.0f; for (i = 0; i < 3; i++) for (j = 0; j < 4; j++) sum += a[i][j]; return sum / 12; int main() int a[3][4] = 31, 17, 82, 31, 77, 16, 10, 91, 31, 57, 16, 25; printf("average = %f\n", average(a)); return 0;
可 见性 存在性
块内部有效 全局有效
#include <stdio.h> void f() int i = 3; printf("i = %d\n", i); int main(void) int i = 1; printf("i = %d\n", i); printf("i = %d\n", i); int i = 2; printf("i = %d\n", i); printf("i = %d\n", i); f(); return 0;
#include <stdio.h> void f() int i = 3; printf("i = %d\n", i); int main(void) int i = 1; printf("i = %d\n", i); 局部变量作 用域从定义到块结束 printf("i = %d\n", i); int i = 2; printf("i = %d\n", i); 局部优先原则 i = 1 i = 1 printf("i = %d\n", i); f(); return 0; i = 2 i = 1 i = 3
#include <stdio.h> int a = 1; 全局变量 int b = 2; int max(int a, int b) return a > b? a : b; int main() int a = 3; printf("max = %d\n", max(a, b)); return 0;
auto int a; int a;
#include <stdio.h> int main() int a, b = 0; printf("a = %d, b = %d\n", a, b); if (a == b) int c = 2; printf("c = %d\n", c); return 0;
static int a;
#include <stdio.h> void f() int a = 1; static int b; printf("a = %d, b = %d\n", a, b); a++; b++; int main() f(); f(); f(); return 0;
/* main.c */ #include <stdio.h> int global = 3; void print_global(); void change_global(int value); int main() printf("global = %d\n", global); print_global(); change_global(5); print_global(); printf("global = %d\n", global); return 0;
/* global.c */ #include <stdio.h> extern int global; void print_global() printf("print global: %d\n", global); void change_global(int value) global = value;
/* main.c */ #include <stdio.h> static int global = 3; void print_global(); void change_global(int value); int main() printf("global = %d\n", global); print_global(); change_global(5); print_global(); printf("global = %d\n", global); return 0;
static void f() printf("hello\n");
extern void f() printf("hello\n");