文章目录
前言:咱们为什么要学C语言?
(认真脸)想当年我第一次接触C语言时,满脑子都是问号——这玩意儿比英语还难懂?但后来发现它就像乐高积木,只要掌握了基础语法,就能搭出超酷的程序!今天咱们不讲玄学,只说人话,带你用最接地气的方式啃下这块硬骨头!
一、Hello World是宇宙真理
所有编程语言都要从打印"Hello World"开始,这是程序员届的祖传仪式感!来感受下C语言的灵魂代码:
#include <stdio.h> // 头文件必须写!(敲黑板)
int main() { // 主函数是程序入口,记不住就去面壁
printf("Hello 菜鸟程序员!\n"); // \n是换行符,不加的话...
return 0; // 返回0表示正常退出,否则系统会哭
}
运行这段代码时你会经历:
- 被各种报错虐哭 😭
- 终于看到输出时的狂喜 😍
- 怀疑自己是不是打错了分号 🤔
(别问我怎么知道的)
二、变量声明就像贴标签
2.1 基本数据类型
类型 | 说明 | 举个栗子 |
---|---|---|
int | 整型(存整数) | int age = 18; |
float | 单精度浮点型 | float pi = 3.14; |
double | 双精度浮点型(更精确) | double money = 3.1415926; |
char | 字符型 | char grade = ‘A’; |
(超级重要)变量命名三大法则:
- 见名知意(别用a1、a2这种火星文)
- 区分大小写(age和Age是两回事)
- 不能以数字开头(想当黑客另说)
2.2 常量声明
用const
关键字定义永恒不变的量:
const float PI = 3.14159; // 圆周率永远不变
// PI = 3.14; ← 这行会报错,不信你试试?
三、运算符的花式玩法
3.1 算术运算符
int a = 10, b = 3;
printf("%d\n", a + b); // 13
printf("%d\n", a % b); // 1(取余运算超实用!)
3.2 自增/自减的坑
int i = 5;
printf("%d\n", i++); // 输出5(先用后加)
printf("%d\n", ++i); // 输出7(先加后用)
(警告)这玩意儿能写出天坑代码,建议新手慎用!
四、流程控制:程序的决策时刻
4.1 if-else 全家桶
int score = 85;
if(score >= 90) {
printf("学霸求带!");
} else if(score >= 60) {
printf("好险没挂科...");
} else {
printf("准备补考吧少年!");
}
4.2 switch-case 的正确姿势
char grade = 'B';
switch(grade) {
case 'A': printf("优秀!"); break;
case 'B': printf("良好"); break;
case 'C': printf("及格"); break;
default: printf("你不对劲");
}
// 忘记写break会触发连环车祸现场!
五、循环结构:永动机的谎言
5.1 for循环三件套
for(int i=0; i<5; i++) {
printf("第%d次循环\n", i+1);
}
// 输出结果:
// 第1次循环
// ...(此处省略三次)
// 第5次循环
5.2 while循环的倔强
int count = 3;
while(count > 0) {
printf("还剩%d次\n", count);
count--;
}
// 输出:
// 还剩3次
// 还剩2次
// 还剩1次
(血泪教训)写循环一定要设置终止条件,否则你会看到电脑在冒烟…
六、数组:批量处理神器
6.1 一维数组
int scores[5] = {90, 85, 78, 92, 88};
// 访问时记得下标从0开始!
printf("第三位同学的成绩:%d", scores[2]); // 输出78
6.2 二维数组(表格数据)
int matrix[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
printf("第二行第三列:%d", matrix[1][2]); // 输出6
七、函数:代码复用的艺术
7.1 函数定义四要素
// 1.返回类型 2.函数名 3.参数列表 4.函数体
int add(int a, int b) {
return a + b;
}
7.2 实际调用
int result = add(3, 5);
printf("3+5=%d", result); // 输出8
(冷知识)main函数也是个函数,而且每个程序必须有且只有一个main函数!
八、指针:C语言的灵魂拷问
8.1 基础概念
int num = 10;
int *p = # // p保存了num的地址
printf("数值:%d\n", *p); // 输出10
printf("地址:%p\n", p); // 输出类似0x7ffeeb7a
8.2 指针与数组的暧昧关系
int arr[3] = {1,2,3};
int *ptr = arr;
printf("第一个元素:%d", *ptr); // 1
printf("第二个元素:%d", *(ptr+1)); // 2
(重要提示)指针用好了是神器,用错了就是程序崩溃的万恶之源!
九、结构体:自定义数据类型
9.1 定义学生结构体
struct Student {
char name[20];
int age;
float score;
};
9.2 使用示例
struct Student stu1;
strcpy(stu1.name, "小明");
stu1.age = 18;
stu1.score = 90.5;
printf("%s考了%.1f分", stu1.name, stu1.score);
十、文件操作:数据的持久化
10.1 写入文件
FILE *fp = fopen("data.txt", "w");
if(fp != NULL) {
fprintf(fp, "这是要保存的数据");
fclose(fp); // 一定要关文件!
}
10.2 读取文件
char buffer[100];
FILE *fp = fopen("data.txt", "r");
fgets(buffer, 100, fp);
printf("读取内容:%s", buffer);
fclose(fp);
结语:路漫漫其修远兮
看完这万字长文(其实你可能已经跳过了很多代码),是不是觉得C语言就像个傲娇的猫主子?刚开始会觉得它高冷难懂,但熟悉之后就会发现它的强大与优雅。记住,编程不是看会的,是敲出来的!赶紧打开你的IDE,把文中的示例代码都敲一遍(记得改几个数试试),不出三天,你就能用C语言写出让你室友惊掉下巴的程序了!
(最后小声bb)如果遇到段错误,别摔键盘,那只是C语言在和你玩捉迷藏呢~