C语言概述与基本程序结构
对应教学日历:讲次 1(3月5日)+ 实验一(讲次 4,3月19日)
一、程序设计基本概念
- 程序:为解决某一问题而设计的计算机指令序列
- 程序设计:分析问题 → 设计算法 → 编写代码 → 调试运行 → 维护更新
- 算法:解决问题的步骤描述,具有有穷性、确定性、可行性、输入、输出五大特性
- C语言特点:
- 结构化程序设计语言(顺序、选择、循环三种基本结构)
- 兼具高级语言的可读性和低级语言的效率
- 丰富的数据类型和运算符
- 支持指针操作,可直接访问内存
- 可移植性好
二、C程序的基本结构
#include <stdio.h> // 预处理指令:包含标准输入输出头文件
int main() // 主函数——程序执行的入口
{
printf("Hello World!\n"); // 语句
return 0; // 返回操作系统
}结构要点
| 组成部分 | 说明 |
|---|---|
#include <stdio.h> | 预处理指令,引入标准库函数声明 |
int main() | 主函数,C程序有且仅有一个main函数 |
{ } | 函数体边界,成对出现 |
printf(...) | 标准输出函数,在 stdio.h 中声明 |
return 0; | 程序正常结束,返回给操作系统 |
; | 每条语句以分号结尾 |
注释
// 单行注释(C99标准)
/*
多行注释
可跨越多行
*/三、C语言的编译与运行
源程序(.c) → 编译(compiler) → 目标文件(.obj/.o) → 链接(linker) → 可执行文件(.exe)
- 编译:将 C 源代码翻译为机器指令(目标代码),检查语法错误
- 链接:将多个目标文件和库函数合并为可执行文件
- 常见开发环境:Visual Studio Code + MinGW/GCC、Dev-C++、Code::Blocks
四、预处理指令
以 # 开头,在编译前由预处理器处理:
| 指令 | 格式 | 作用 |
|---|---|---|
#include | #include <stdio.h> 或 #include "myheader.h" | 包含头文件(<> 系统路径,"" 当前目录) |
#define | #define PI 3.14159 | 宏定义(符号常量),编译前文本替换 |
注意:
#define宏定义不是语句,末尾不加分号,它只是编译前的文本替换。
五、C语言字符集与标识符
- 字符集:大小写英文字母、数字、特殊符号(
+ - * / = < > ; , . ( ) [ ] { } #等) - 标识符命名规则:
- 由字母、数字、下划线组成
- 首字符必须是字母或下划线(不能是数字)
- 区分大小写(
name和Name是不同的标识符) - 不能使用 C 语言关键字(如
int,if,while,return等)
作业示例
ex1-2:第一个C程序——Hello World
#include<stdio.h>
int main()
{
printf("Hello World!\n");
return 0;
}要点:
#include<stdio.h>两种写法等价("stdio.h"也是合法的)\n是换行符(转义字符)printf函数用于屏幕输出
ex1-3-1:另一个简单输出
#include<stdio.h>
int main()
{
printf("Nice to meet you!\n");
return 0;
}ex1-4:格式化输出——自我介绍
#include<stdio.h>
int main()
{
printf("\n\n\tIntroduce yourself\n\n");
printf("\t******************\n");
printf("\tI am a student!\n");
printf("\t******************\n");
return 0;
}要点:
\t是水平制表符(Tab)- 连续多个
\n产生空行效果 - 利用字符图案实现简单图形输出
作业重点
- C程序由一个且仅有一个
main函数构成,程序从main开始执行 #include引入头文件,#define定义符号常量——都不加分号printf输出字符串,转义字符\n(换行)、\t(制表)- 每条语句以
;结尾 - C语言区分大小写,标识符不能以数字开头