C 语言程序的基本结构
一个最简单的 C 语言程序,无论它做什么,都必须遵循一个基本结构,我们可以把它想象成一篇文章,需要有标题、正文和结尾。

(图片来源网络,侵删)
// 1. 预处理指令
#include <stdio.h> // 标准输入输出库
// 2. 主函数 - 程序的入口点
int main() {
// 3. 变量声明
int number = 10;
// 4. 代码/语句
printf("Hello, World!\n"); // 打印文本到屏幕
printf("The number is: %d\n", number); // 打印变量值
// 5. 返回值 - 表示程序正常结束
return 0;
}
结构详解:
-
预处理指令
- 以 开头,在编译之前由预处理器处理。
#include <stdio.h>是最常见的指令,它的意思是“将标准输入输出库stdio.h文件的内容包含进来”,这个库提供了像printf()(打印) 和scanf()(输入) 这样的函数,没有它,我们就无法在屏幕上显示信息。
-
主函数
int main()- 这是 程序的入口点,当你运行一个 C 程序时,操作系统会从这里开始执行代码。
int表示这个函数执行完毕后会返回一个整数值。return 0;表示程序成功执行并正常退出,返回非零值通常表示程序遇到了错误。- 即使你的程序再复杂,也必须有一个
main函数。
-
变量声明
- 在使用一个变量之前,必须先声明它,这就像告诉编译器:“我要用一个叫
number的东西,它是一个整数类型 (int)。” int number = 10;声明了一个整型变量number,并给它赋初值为10。
- 在使用一个变量之前,必须先声明它,这就像告诉编译器:“我要用一个叫
-
代码/语句
(图片来源网络,侵删)- 这是程序的核心逻辑部分,由一条条语句组成。
- 每条语句必须以 分号 () 这是 C 语言的语法规则。
printf()是一个函数,用于格式化输出。"Hello, World!\n"是要打印的字符串。\n是一个转义字符,代表“换行”。"%d"是一个格式说明符,它告诉printf()函数,在这里要打印一个整数 (d代表 decimal),后面的number变量会被替换到%d的位置。
-
返回值
return 0;- 结束
main函数,并向操作系统返回0,表示程序成功运行。
- 结束
核心概念详解
数据类型
C 语言是强类型语言,每个变量都有特定的类型。
| 类型 | 关键字 | 描述 | 示例 |
|---|---|---|---|
| 整型 | int |
存储整数 ( 10, -5, 0) | int age = 25; |
| 浮点型 | float |
单精度浮点数 (小数) | float price = 19.99; |
| 双精度浮点型 | double |
双精度浮点数 (精度更高) | double pi = 3.14159; |
| 字符型 | char |
存储单个字符 | char grade = 'A'; |
| 布尔型 | _Bool (或 stdbool.h 中的 bool) |
存储真 (true) 或假 (false) |
_Bool isPassed = 1; |
运算符
用于执行各种操作。
- 算术运算符: (加), (减), (乘), (除), (取模)
- 赋值运算符: (赋值), , , , (复合赋值)
- 关系运算符: (等于), (不等于),
>,<,>=,<=(结果为 1 或 0) - 逻辑运算符:
&&(与), (或), (非)
控制流
控制程序的执行顺序。
-
if-else语句: 进行条件判断。int score = 85; if (score >= 60) { printf("及格了!\n"); } else { printf("不及格.\n"); } -
for循环: 用于重复执行代码,通常用于已知循环次数的情况。// 打印 1 到 5 for (int i = 1; i <= 5; i++) { printf("%d ", i); } -
while循环: 用于重复执行代码,通常用于未知循环次数,但满足某个条件的情况。int count = 0; while (count < 3) { printf("Count is: %d\n", count); count++; // 别忘了更新条件,否则会死循环 }
一个更完整的 C 语言程序示例
这个程序将结合上面提到的所有概念:变量、输入、计算、判断和循环。
目标:编写一个程序,让用户输入一个数字,然后判断这个数字是奇数还是偶数,并打印出 1 到该数字之间的所有偶数。
// 1. 包含必要的库
#include <stdio.h>
// 2. 主函数
int main() {
// 3. 声明变量
int userNumber;
int i; // 用于循环的计数器
// 4. 获取用户输入
printf("请输入一个正整数: ");
scanf("%d", &userNumber);
// 5. 验证输入的有效性
if (userNumber <= 0) {
printf("错误:请输入一个正整数,\n");
return 1; // 返回非零值表示程序因错误而退出
}
// 6. 判断奇偶并输出结果
if (userNumber % 2 == 0) {
printf("%d 是一个偶数,\n", userNumber);
} else {
printf("%d 是一个奇数,\n", userNumber);
}
// 7. 使用 for 循环打印 1 到 userNumber 之间的所有偶数
printf("1 到 %d 之间的所有偶数是:\n", userNumber);
for (i = 1; i <= userNumber; i++) {
if (i % 2 == 0) { // i 能被 2 整除,就是偶数
printf("%d ", i);
}
}
printf("\n"); // 最后打印一个换行符,使输出更整洁
// 8. 程序正常结束
return 0;
}
代码解析:
#include <stdio.h>: 仍然需要,因为我们要用printf和scanf。- 变量声明:
userNumber用来存储用户输入的数字,i是循环计数器。 printf("请输入一个正整数: ");: 提示用户输入。scanf("%d", &userNumber);: 从键盘读取一个整数,并存入userNumber变量。&userNumber中的&是 取地址运算符。scanf函数需要知道把读到的数据存放到哪个变量的内存地址中,所以必须提供&。
if (userNumber <= 0): 检查用户输入是否合法(必须是正整数)。if (userNumber % 2 == 0): 使用取模运算符 来判断奇偶,如果余数为 0,就是偶数。for循环: 从 1 遍历到userNumber。if (i % 2 == 0): 在循环内部,检查当前的数字i是否为偶数,如果是,就打印它。return 0;: 程序成功执行完毕。
如何编译和运行 C 程序?
你需要一个 C 编译器,最常用的是 GCC (GNU Compiler Collection)。
- 保存代码: 将上面的完整示例代码保存为一个文件,
program.c。 - 打开终端/命令行:
- 在 Windows 上,你可以使用 PowerShell, Command Prompt 或 Git Bash。
- 在 macOS 或 Linux 上,直接打开 Terminal。
- 编译代码: 在终端中,使用
gcc命令来编译.c文件。gcc program.c -o program
gcc: 调用 GCC 编译器。program.c: 你的源代码文件。-o program: 指定输出的可执行文件名为program,如果不写-o,默认会生成一个名为a.out(Linux/macOS) 或a.exe(Windows) 的文件。
- 运行程序: 编译成功后,会生成一个可执行文件,运行它:
- 在 Linux/macOS 上:
./program
- 在 Windows 上:
program.exe
或者直接输入
program(.exe后缀被系统关联)。
- 在 Linux/macOS 上:
运行示例:
$ gcc program.c -o program
$ ./program
请输入一个正整数: 12
12 是一个偶数。
1 到 12 之间的所有偶数是:
2 4 6 8 10 12
C 语言程序的核心就是围绕 函数 和 变量 构建的。main 函数是程序的起点,通过变量存储数据,通过控制流(if, for, while)改变执行顺序,通过库函数(如 printf)与外界交互,掌握好这些基础,你就可以开始构建更复杂的程序了。
