C语言经典算法实践:100例解析与实现

需积分: 9 0 下载量 127 浏览量 更新于2024-09-18 收藏 22KB TXT 举报
"C语言经典算法100例" 在编程领域,C语言因其高效、灵活和广泛的应用而备受推崇。本资源围绕"C语言经典算法100例"展开,旨在帮助学习者通过实例掌握C语言的基本算法和技巧,提升编程能力。 首先,提到的第一个例子是斐波那契数列(Fibonacci sequence)。斐波那契数列由0和1开始,后面的每一个数都是前面两个数的和。给定的例子展示了如何生成斐波那契数列的前20个数字: ```c // 斐波那契数列示例 #include <stdio.h> int main() { long f1, f2; int i; f1 = f2 = 1; for (i = 1; i <= 20; i++) { printf("%12ld%12ld", f1, f2); if (i % 2 == 0) printf("\n"); // 每隔一行打印 f1 = f1 + f2; // 更新前一个数 f2 = f1 + f2; // 更新下一个数 } return 0; } ``` 接下来,第二个例子涉及找到101到200之间所有的素数(质数)。素数是只有1和其本身两个正因数的自然数。这里用到了平方根和遍历来检查每个数是否为素数: ```c // 找到101到200之间的所有素数 #include <stdio.h> #include <math.h> int main() { int m, i, k, h = 0, leap = 1; printf("\n"); for (m = 101; m <= 200; m++) { k = sqrt(m + 1); for (i = 2; i <= k; i++) if (m % i == 0) { leap = 0; break; } if (leap) { printf("%-4d", m); h++; if (h % 10 == 0) printf("\n"); } leap = 1; } printf("\nThe total is %d", h); return 0; } ``` 第三个例子关注的是“水仙花数”(Narcissistic number),这是一种数字,它的每一位数字的立方和等于它本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。程序将遍历100到999之间的所有数字,寻找水仙花数: ```c // 查找100到999之间的所有水仙花数 #include <stdio.h> int main() { int i, j, k, n, sum = 0; printf("Waterflower numbers are:\n"); for (i = 100; i <= 999; i++) { n = i; while (n > 0) { k = n % 10; sum += k * k * k; n /= 10; } if (sum == i) printf("%d ", i); } return 0; } ``` 这些例子覆盖了基础的循环、条件判断、数学计算和数组操作,是学习C语言算法的良好起点。通过实践这些代码,学习者可以逐步提高对C语言的理解,并能解决更复杂的问题。