C语言编程:经典算法实例解析

需积分: 9 4 下载量 153 浏览量 更新于2024-11-02 收藏 58KB TXT 举报
"C语言经典例题100包含了适合初学者的C语言算法入门实例,涵盖了一系列关于C语言编程的基础知识,如递推序列、质数判断、水仙花数等常见问题的解决方法。" 1. **斐波那契数列**:题目中的第一个例子展示了如何计算斐波那契数列。斐波那契数列是一种由两个前项相加得到当前项的数列,起始值通常为1和1。在提供的代码中,`f1` 和 `f2` 分别表示斐波那契数列的前两项,`for` 循环用于计算并打印出前20项。每打印完偶数个数后换行,使得输出更易读。 ```c int main() { long f1 = 1, f2 = 1; int i; for (i = 1; i <= 20; i++) { printf("%12ld%12ld", f1, f2); if (i % 2 == 0) printf("\n"); long temp = f1; f1 = f2; f2 = temp + f2; } return 0; } ``` 2. **质数判断**:第二个例子是寻找101到200之间的质数。质数是指大于1且除了1和它自身外没有其他正因数的自然数。代码通过 `sqrt()` 函数来限制检查的因子范围,并使用嵌套循环来检测每个数是否为质数。如果找到因子,则跳出内层循环并标记该数不是质数。 ```c #include <stdio.h> #include <math.h> int main() { int m, i, k, h = 0, leap = 1; 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; } ``` 3. **水仙花数**:第三个例子中,我们寻找100到999之间的水仙花数。水仙花数是指一个三位数,其各位数字的立方和等于这个数本身。代码通过三个变量 `i`, `j`, `k` 分别存储百位、十位和个位的数字,然后检查它们的立方和是否等于原数。 ```c int main() { int n, i, j, k; printf("'Waterflower' number is:"); for (n = 100; n < 1000; n++) { i = n / 100; j = n / 10 % 10; k = n % 10; if (i * 100 + j * 10 + k == i * i * i + j * j * j + k * k * k) { printf("%-5d", n); } } printf("\n"); return 0; } ``` 这些例题覆盖了C语言基础语法、控制结构(循环、条件语句)、数学运算(平方根、立方和)、文件I/O以及数据类型转换等关键概念,是学习C语言编程的好材料,特别适合C语言初学者进行实践练习。通过解决这些问题,学生可以增强对C语言的理解,提高编程能力。