C语言必背100代码系列文章-第一篇:基础语法与入门必背代码

C语言必背100代码系列文章目录

  1. 第一篇:基础语法与入门必背代码
    • 核心内容:Hello World、条件判断、循环结构、数组基础、函数定义等。
  2. 第二篇:数组与字符串操作
    • 核心内容:数组排序、字符串处理、多维数组、字符匹配、内存拷贝等。
  3. 第三篇:指针与内存管理
    • 核心内容:指针运算、动态内存分配、结构体指针、函数指针、内存泄漏检测等。
  4. 第四篇:递归与算法
    • 核心内容:阶乘递归、汉诺塔、分治算法、回溯算法、动态规划基础等。
  5. 第五篇:数据结构实现
    • 核心内容:链表、栈、队列、二叉树、哈希表、图的基本操作。
  6. 第六篇:文件操作与IO
    • 核心内容:文本文件读写、二进制文件操作、日志管理、CSV/JSON解析等。
  7. 第七篇:数学与位运算
    • 核心内容:快速幂、素数测试、进制转换、矩阵运算、蒙特卡洛模拟等。
  8. 第八篇:系统与底层编程
    • 核心内容:进程控制、线程同步、信号处理、套接字编程、系统调用封装等。
  9. 第九篇:网络编程基础
    • 核心内容:TCP/UDP通信、HTTP请求、WebSocket、SSL/TLS加密、网络抓包等。
  10. 第十篇:综合项目与工具

第一篇:基础语法与入门必背代码

想从编程小白逆袭为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 

作者郑重声明,本文内容为本人原创文章,纯净无利益纠葛,如有不妥之处,请及时联系修改或删除。诚邀各位读者秉持理性态度交流,共筑和谐讨论氛围~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山峰哥

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值