C语言必背100代码系列文章目录
- 第一篇:基础语法与入门必背代码
- 核心内容:Hello World、条件判断、循环结构、数组基础、函数定义等。
- 第二篇:数组与字符串操作
- 核心内容:数组排序、字符串处理、多维数组、字符匹配、内存拷贝等。
- 第三篇:指针与内存管理
- 核心内容:指针运算、动态内存分配、结构体指针、函数指针、内存泄漏检测等。
- 第四篇:递归与算法
- 核心内容:阶乘递归、汉诺塔、分治算法、回溯算法、动态规划基础等。
- 第五篇:数据结构实现
- 核心内容:链表、栈、队列、二叉树、哈希表、图的基本操作。
- 第六篇:文件操作与IO
- 核心内容:文本文件读写、二进制文件操作、日志管理、CSV/JSON解析等。
- 第七篇:数学与位运算
- 核心内容:快速幂、素数测试、进制转换、矩阵运算、蒙特卡洛模拟等。
- 第八篇:系统与底层编程
- 核心内容:进程控制、线程同步、信号处理、套接字编程、系统调用封装等。
- 第九篇:网络编程基础
- 核心内容:TCP/UDP通信、HTTP请求、WebSocket、SSL/TLS加密、网络抓包等。
- 第十篇:综合项目与工具
第一篇:基础语法与入门必背代码
想从编程小白逆袭为C语言达人?这10个核心代码实例就是你的“通关密码”!从输出第一行“Hello World”到实现算法巅峰,本文深度拆解成绩分级、九九乘法表、水仙花数、埃氏筛法等经典场景,覆盖条件判断、循环嵌套、数组排序等核心语法。每个案例附详细注释+避坑指南,更有斐波那契数列优化、冒泡排序性能对比等进阶彩蛋。无论你是备考学生、求职新手,还是想夯实代码基本功的技术爱好者,看完这篇,你的C语言功力直接飙升三个段位!
1. Hello World
c
#include <stdio.h> | |
int main() { | |
printf("Hello, World!\n"); // 输出基础字符串 | |
return 0; | |
} |
- 详细注释:
- #include <stdio.h>:引入标准输入输出库。
- main():程序入口函数。
- printf():格式化输出函数,\n表示换行。
- 应用场景:验证编译器环境是否正常。
- 运行示例:
bash
gcc hello.c -o hello | |
./hello | |
# 输出:Hello, World! |
- 扩展知识:
- 如何修改输出颜色(ANSI转义码)。
- 多语言输出(如中文需设置编码)。
2. 成绩等级判断
c
#include <stdio.h> | |
int main() { | |
int score; | |
printf("请输入成绩:"); | |
scanf("%d", &score); // 读取用户输入 | |
if (score >= 90) printf("优秀\n"); | |
else if (score >= 60) printf("及格\n"); | |
else printf("不及格\n"); | |
return 0; | |
} |
- 详细注释:
- scanf():从标准输入读取数据。
- if-else:条件分支语句。
- 应用场景:学生成绩自动化分类。
- 运行示例:
bash
输入:85 | |
输出:及格 |
- 常见问题:
- 输入非数字时的错误处理。
- 边界值测试(如score=60或score=59)。
3. 计算1到100的和
c
#include <stdio.h> | |
int main() { | |
int sum = 0; | |
for (int i = 1; i <= 100; i++) { | |
sum += i; // 累加 | |
} | |
printf("Sum: %d\n", sum); | |
return 0; | |
} |
- 详细注释:
- for循环:初始化、条件判断、迭代。
- sum += i:等价于sum = sum + i。
- 应用场景:快速求和算法验证。
- 运行示例:
bash
输出:Sum: 5050 |
- 扩展知识:
- 使用while循环实现。
- 高斯求和公式优化(n*(n+1)/2)。
4. 最大公约数(GCD)
c
#include <stdio.h> | |
int gcd(int a, int b) { | |
while (b != 0) { | |
int temp = b; | |
b = a % b; | |
a = temp; | |
} | |
return a; | |
} | |
int main() { | |
printf("GCD of 48 and 18: %d\n", gcd(48, 18)); | |
return 0; | |
} |
- 详细注释:
- 欧几里得算法:通过取模运算递归求解。
- 应用场景:分数化简、密码学。
- 运行示例:
bash
输出:GCD of 48 and 18: 6 |
- 常见问题:
- 负数输入的处理(需取绝对值)。
- 递归实现与迭代实现的对比。
5. 九九乘法表
c
#include <stdio.h> | |
int main() { | |
for (int i = 1; i <= 9; i++) { | |
for (int j = 1; j <= i; j++) { | |
printf("%d*%d=%-2d ", j, i, i * j); // %-2d左对齐 | |
} | |
printf("\n"); | |
} | |
return 0; | |
} |
- 详细注释:
- 嵌套循环:外层控制行,内层控制列。
- %-2d:格式化输出,左对齐并占2位宽度。
- 应用场景:教学演示、表格生成。
- 运行示例:
bash
输出: | |
1*1=1 | |
1*2=2 2*2=4 | |
... | |
1*9=9 2*9=18 ... 9*9=81 |
- 扩展知识:
- 倒序输出(从9×9到1×1)。
- 图形化乘法表(如使用ASCII字符)。
6. 水仙花数判断
c
#include <stdio.h> | |
#include <math.h> | |
int isNarcissistic(int num) { | |
int original = num, sum = 0; | |
int digits = (int)log10(num) + 1; // 计算位数 | |
while (num > 0) { | |
int digit = num % 10; | |
sum += pow(digit, digits); | |
num /= 10; | |
} | |
return sum == original; | |
} | |
int main() { | |
for (int i = 100; i < 1000; i++) { | |
if (isNarcissistic(i)) printf("%d ", i); | |
} | |
return 0; | |
} |
- 详细注释:
- log10():计算数字的位数。
- pow():幂运算函数。
- 应用场景:数学趣味题、算法训练。
- 运行示例:
bash
输出:153 370 371 407 |
- 常见问题:
- 浮点数精度问题(log10可能引入误差)。
- 四位及以上水仙花数的计算优化。
7. 素数筛选(埃拉托斯特尼筛法)
c
#include <stdio.h> | |
#include <stdbool.h> | |
#include <math.h> | |
void sieveOfEratosthenes(int n) { | |
bool *isPrime = (bool *)calloc(n + 1, sizeof(bool)); | |
for (int i = 2; i <= sqrt(n); i++) { | |
if (!isPrime[i]) { | |
for (int j = i * i; j <= n; j += i) { | |
isPrime[j] = true; | |
} | |
} | |
} | |
for (int i = 2; i <= n; i++) { | |
if (!isPrime[i]) printf("%d ", i); | |
} | |
free(isPrime); | |
} | |
int main() { | |
sieveOfEratosthenes(100); | |
return 0; | |
} |
- 详细注释:
- calloc():动态分配内存并初始化为0。
- 筛法逻辑:标记非素数,剩余为素数。
- 应用场景:密码学、大数分解。
- 运行示例:
bash
输出:2 3 5 7 11 ... 97 |
- 扩展知识:
- 分段筛法优化大数范围。
- 多线程并行筛选。
8. 斐波那契数列
c
#include <stdio.h> | |
void fibonacci(int n) { | |
int a = 0, b = 1; | |
for (int i = 0; i < n; i++) { | |
printf("%d ", a); | |
int next = a + b; | |
a = b; | |
b = next; | |
} | |
} | |
int main() { | |
fibonacci(10); | |
return 0; | |
} |
- 详细注释:
- 迭代法:避免递归的栈溢出问题。
- 应用场景:算法分析、自然规律模拟。
- 运行示例:
bash
输出:0 1 1 2 3 5 8 13 21 34 |
- 常见问题:
- 大数溢出(需用long long或高精度库)。
- 递归与迭代的性能对比。
9. 回文数判断
c
#include <stdio.h> | |
#include <stdbool.h> | |
bool isPalindrome(int num) { | |
if (num < 0) return false; | |
int original = num, reversed = 0; | |
while (num > 0) { | |
reversed = reversed * 10 + num % 10; | |
num /= 10; | |
} | |
return original == reversed; | |
} | |
int main() { | |
printf("%d\n", isPalindrome(12321)); // 输出1 | |
return 0; | |
} |
- 详细注释:
- 反转数字:通过取模和除法实现。
- 应用场景:字符串处理、数字游戏。
- 运行示例:
bash
输入:12321 | |
输出:1(true) |
- 扩展知识:
- 字符串回文判断(如"madam")。
- 忽略非数字字符的回文判断。
10. 冒泡排序
c
#include <stdio.h> | |
void bubbleSort(int arr[], int n) { | |
for (int i = 0; i < n - 1; i++) { | |
for (int j = 0; j < n - i - 1; j++) { | |
if (arr[j] > arr[j + 1]) { | |
int temp = arr[j]; | |
arr[j] = arr[j + 1]; | |
arr[j + 1] = temp; | |
} | |
} | |
} | |
} | |
int main() { | |
int arr[] = {64, 34, 25, 12, 22, 11, 90}; | |
bubbleSort(arr, 7); | |
for (int i = 0; i < 7; i++) printf("%d ", arr[i]); | |
return 0; | |
} |
- 详细注释:
- 双重循环:外层控制轮次,内层比较相邻元素。
- 应用场景:基础排序算法教学。
- 运行示例:
bash
输出:11 12 22 25 34 64 90 |
- 常见问题:
- 优化:添加标志位提前终止。
- 时间复杂度分析(O(n²))。
💡注意:本文所介绍的软件及功能均基于公开信息整理,仅供用户参考。在使用任何软件时,请务必遵守相关法律法规及软件使用协议。同时,本文不涉及任何商业推广或引流行为,仅为用户提供一个了解和使用该工具的渠道。
你在生活中时遇到了哪些问题?你是如何解决的?欢迎在评论区分享你的经验和心得!
希望这篇文章能够满足您的需求,如果您有任何修改意见或需要进一步的帮助,请随时告诉我!
感谢各位支持,可以关注我的个人主页,找到你所需要的宝贝。
博文入口:https://blog.youkuaiyun.com/Start_mswin 复制到【浏览器】打开即可,宝贝入口:https://pan.quark.cn/s/71742b5e7629
作者郑重声明,本文内容为本人原创文章,纯净无利益纠葛,如有不妥之处,请及时联系修改或删除。诚邀各位读者秉持理性态度交流,共筑和谐讨论氛围~