本教程专为零基础小白打造,无需任何编程基础,从环境搭建到核心语法、实战案例逐一讲解,内容详细、通俗易懂,所有代码均可直接复制运行,适合入门学习、考试备考、编程启蒙。
一、C语言简介
1.1 什么是C语言
C语言是一门结构化、模块化、面向过程的通用编程语言,诞生于1972年,由丹尼斯·里奇在贝尔实验室开发。
它是编程语言的“基石”,后续的C++、Java、Python等语言均借鉴了C语言的语法逻辑,掌握C语言可以快速上手其他编程语言。
1.2 C语言核心特点
- 简洁紧凑:语法简单,关键字少,入门门槛低
- 执行效率高:接近机器语言,运行速度快,适合底层开发
- 可移植性强:几乎适配所有操作系统(Windows、Linux、Mac)
- 功能强大:可开发系统软件、嵌入式程序、游戏、工具软件
1.4 学习目标
掌握C语言基础语法、逻辑思维、代码规范,能够独立编写简单程序,为后续编程学习打下坚实基础。
二、C语言开发环境搭建
编写C语言需要代码编辑器 + 编译器,推荐3种零基础首选工具,任选其一即可。
2.1 推荐工具(新手首选)
方案1:Dev-C++(最简单,零基础首选)
免配置、一键安装、自带编译运行功能,适合纯新手练习语法。
方案2:VS Code(轻量高效,主流推荐)
轻量编辑器,搭配MinGW编译器,界面简洁、功能强大,适合长期学习。
方案3:Visual Studio(专业全能)
微软官方工具,功能最全,适合后期项目开发,安装包较大。
2.2 第一个C语言程序:Hello World
所有编程语言的入门经典程序,输出一句文字,验证环境是否正常。
#include <stdio.h> // 头文件:引入输入输出功能
int main() { // 主函数:程序入口,所有代码从这里开始执行
// 输出语句:打印文字到控制台
printf(“Hello World! 欢迎学习C语言\n”);
return 0; // 程序正常结束,返回0
}
2.3 代码逐行详解
- #include <stdio.h>:预处理指令,引入标准输入输出头文件,没有这行就无法使用printf打印内容
- int main():主函数,每个C程序有且只有一个main函数,是程序的唯一入口
- {}:代码块,包裹函数的所有执行代码,成对出现,缺一不可
- printf():输出函数,用于在控制台打印文本、数字等内容
- \n:换行符,打印后自动换行,规范代码格式
- return 0:表示程序正常终止,返回0给系统
- // 注释:单行注释,仅用于备注说明,程序不会执行
运行结果:控制台输出 Hello World! 欢迎学习C语言
三、C语言基础语法规则(必背)
3.1 代码规范
- C语言区分大小写:int和INT、printf和Printf是完全不同的内容
- 每一条执行语句必须以分号 ; 结尾,漏写分号会直接报错
- 代码缩进不影响程序运行,但必须规范,方便阅读
- 大括号成对书写,禁止单独出现{或}
3.2 注释用法
注释是写给程序员看的备注,程序编译时会自动忽略,不参与运行。
// 单行注释:只能注释一行内容
/*
多行注释
可以注释任意行数的内容
常用于批量备注代码
*/
四、变量与数据类型(核心基础)
编程的核心是存储和处理数据,变量就是用来存储数据的容器,数据类型决定了存储数据的种类和大小。
4.1 四大基本数据类型
数据类型
作用
占用空间
取值范围
示例
int
整型(整数)
4字节
-2147483648 ~ 2147483647
10、-5、0
float
单精度浮点型(小数)
4字节
有效6~7位小数
3.14、2.5
double
双精度浮点型(高精度小数)
8字节
有效15~16位小数
3.1415926
char
字符型(单个字符)
1字节
ASCII字符
‘a’、‘5’、‘#’
4.2 变量的定义与使用
语法格式
数据类型 变量名 = 初始值;
完整示例代码
#include <stdio.h>
int main() {
// 定义不同类型变量并赋值
int age = 18; // 整数变量:年龄
float score = 95.5f; // 小数变量:分数(float必须加f后缀)
double pi = 3.14159; // 高精度小数:圆周率
char ch = ‘A’; // 字符变量:单个字符(必须用单引号)
// 打印变量值
printf("年龄:%d\n", age);
printf("分数:%f\n", score);
printf("圆周率:%lf\n", pi);
printf("字符:%c\n", ch);
return 0;
}
4.3 格式化输出符号(必记)
- %d:输出整数(int)
- %f:输出单精度小数(float)
- %lf:输出双精度小数(double)
- %c:输出单个字符(char)
- %s:输出字符串(后续讲解)
4.4 变量命名规则
合法规则:只能由字母、数字、下划线组成,不能以数字开头,不能使用C语言关键字(int、if、for等)
规范:见名知意,尽量用英文单词(age、score、num),不使用拼音、乱码
五、输入与输出函数
5.1 printf 输出函数
作用:向控制台打印数据,支持常量、变量、拼接输出。
进阶用法:固定小数位数 %.2f(保留2位小数)
printf(“保留2位小数:%.2f”, 3.1415); // 输出 3.14
5.2 scanf 输入函数(重点)
作用:接收用户在控制台输入的数据,实现人机交互。
语法格式
scanf(“格式符”, &变量名);
⚠️ 核心注意:变量名前必须加 & 取地址符,否则程序报错崩溃!
输入输出完整案例
#include <stdio.h>
int main() {
int num;
printf(“请输入一个整数:”);
scanf(“%d”, &num); // 接收用户输入的整数
printf("你输入的数字是:%d\n", num);
return 0;
}
六、运算符(程序计算核心)
C语言通过运算符实现数学计算、逻辑判断,是程序运算的基础。
6.1 算术运算符
用于数学加减乘除运算:+ - * / %
- +、-、*、/:常规加减乘除
- %:取余运算(求余数,只能用于整数)
#include <stdio.h>
int main() {
int a = 10, b = 3;
printf(“a+b=%d\n”, a+b); // 13
printf(“a-b=%d\n”, a-b); // 7
printf("ab=%d\n", ab); // 30
printf(“a/b=%d\n”, a/b); // 3(整数相除,结果取整)
printf(“a%%b=%d\n”, a%b); // 1(10除以3余数为1)
return 0;
}
6.2 赋值运算符
= += -= *= /= %=
int a = 5;
a += 3; // 等价于 a = a + 3,a最终为8
a *= 2; // 等价于 a = a * 2,a最终为16
6.3 关系运算符(判断大小)
结果只有两种:成立(1)、不成立(0),用于条件判断
< >= <= == !=
- ==:判断是否相等(两个等号)
- !=:判断是否不相等
6.4 逻辑运算符(多条件判断) - && 与:两个条件同时成立才为真
- || 或:两个条件任意一个成立就为真
- ! 非:取反(真变假,假变真)
七、流程控制语句(程序逻辑核心)
程序默认从上到下顺序执行,通过流程控制可以实现判断、循环,让程序拥有智能逻辑。
7.1 分支语句(if-else 判断)
根据条件是否成立,执行不同代码,是最基础的判断逻辑。
- 单分支 if
if(条件){
条件成立时执行的代码;
} - 双分支 if-else
#include <stdio.h>
int main() {
int score;
printf(“请输入分数:”);
scanf(“%d”, &score);
if(score >= 60){
printf("考试及格\n");
}else{
printf("考试不及格\n");
}
return 0;
}
3. 多分支 if-else if-else
// 分数等级判断
if(score >= 90){
printf(“优秀”);
}else if(score >= 80){
printf(“良好”);
}else if(score >= 60){
printf(“及格”);
}else{
printf(“不及格”);
}
7.2 switch 分支语句
适合固定值匹配的多条件判断,比if更简洁。
#include <stdio.h>
int main() {
int day;
printf(“请输入星期数字(1-7):”);
scanf(“%d”, &day);
switch(day){
case 1: printf("星期一"); break;
case 2: printf("星期二"); break;
case 3: printf("星期三"); break;
case 4: printf("星期四"); break;
case 5: printf("星期五"); break;
case 6: printf("星期六"); break;
case 7: printf("星期日"); break;
default: printf("输入错误"); // 匹配失败执行
}
return 0;
}
⚠️ 注意:每个case后必须加break,否则会穿透执行后续代码。
7.3 循环语句(重复执行代码)
循环可以让一段代码重复执行,大幅简化代码量,C语言三种循环:for、while、do-while。
- for 循环(最常用,适合已知循环次数)
语法
for(初始化; 循环条件; 迭代){
循环体代码;
}
案例:打印1~10
#include <stdio.h>
int main() {
int i;
for(i = 1; i <= 10; i++){
printf("%d “, i);
}
return 0;
}
2. while 循环(适合未知循环次数)
// 打印1~10
int i = 1;
while(i <= 10){
printf(”%d ", i);
i++; // 自增,避免死循环
}
3. 循环控制关键字
- break:直接终止整个循环,跳出循环
- continue:跳过本次循环,直接执行下一次循环
八、函数(代码模块化)
函数是封装好的代码块,可以重复调用,避免代码冗余,实现模块化编程。
8.1 函数语法
返回值类型 函数名(参数列表){
函数体代码;
return 返回值;
}
8.2 自定义函数案例
#include <stdio.h>
// 自定义函数:计算两个数的和
int add(int a, int b){
int sum = a + b;
return sum; // 返回计算结果
}
int main() {
// 调用函数
int res = add(10, 20);
printf(“两数之和:%d”, res);
return 0;
}
8.3 函数分类
- 库函数:系统自带(printf、scanf),无需自己编写
- 自定义函数:自己封装的功能代码,按需调用
九、数组(批量存储数据)
变量只能存储单个数据,数组可以存储一组相同类型的数据,适合批量处理数据(成绩、学号、数字序列)。
9.1 一维数组定义与使用
#include <stdio.h>
int main() {
// 定义数组:存储5个学生成绩
int score[5] = {85, 92, 78, 90, 88};
int i;
// 遍历数组
for(i = 0; i < 5; i++){
printf("第%d个学生成绩:%d\n", i+1, score[i]);
}
return 0;
}
⚠️ 核心:数组下标从0开始,长度为5的数组,下标0~4。
9.2 二维数组(表格数据)
适合存储表格、矩阵数据,可理解为“数组中的数组”。
int arr[2][3] = {{1,2,3}, {4,5,6}};
十、指针(C语言灵魂)
指针是C语言的核心精髓,本质是存储变量地址的变量,可以直接操作内存,提升程序效率。
10.1 指针基础语法
#include <stdio.h>
int main() {
int a = 10;
int *p = &a; // 指针p存储变量a的地址
printf("a的地址:%p\n", &a);
printf("p存储的地址:%p\n", p);
printf("通过指针取值:%d\n", *p); // *p 取出地址对应的值
return 0;
}
核心符号:
- &:取地址
- *:解地址(取值)
十一、结构体(自定义数据类型)
数组只能存相同类型数据,结构体可以整合不同类型数据,用于描述一个完整事物(学生、用户、商品)。
11.1 结构体案例:学生信息
#include <stdio.h>
// 定义学生结构体
struct Student{
char name[20]; // 姓名
int age; // 年龄
int score; // 分数
};
int main() {
// 定义结构体变量并赋值
struct Student s = {“张三”, 18, 95};
// 打印学生信息
printf("姓名:%s\n", s.name);
printf("年龄:%d\n", s.age);
printf("分数:%d\n", s.score);
return 0;
}
十二、零基础学习路线总结
- 熟练环境搭建,掌握代码基本规范
- 吃透变量、数据类型、输入输出
- 精通运算符、if/switch判断、for/while循环
- 掌握函数封装与调用
- 熟练数组遍历、批量数据处理
- 理解指针、结构体核心逻辑
- 多写案例、多排错,积累编程手感
十三、常见新手报错总结
- 漏写分号、大括号不配对:语法错误,编译器直接报错
- scanf漏写&:程序运行崩溃
- 大小写混用:C语言严格区分大小写
- 数组下标越界:访问不存在的下标,程序异常
- float数据不加f后缀:精度丢失警告

3889

被折叠的 条评论
为什么被折叠?



