C语言经典算法实践:100例解析与实现
"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语言的理解,并能解决更复杂的问题。
子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数
为多少?
__________________________________________________________________
程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....
___________________________________________________________________
程序源代码:
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;/*前两个月加起来赋值给第三个月*/
}
}
上题还可用一维数组处理,you try!
题目:判断101-200之间有多少个素数,并输出所有素数。
__________________________________________________________________
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整
除,则表明此数不是素数,反之是素数。
___________________________________________________________________
程序源代码:
#include "math.h"
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");
剩余42页未读,继续阅读
- 粉丝: 1
- 资源: 9
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 达梦数据库DM8手册大全:安装、管理与优化指南
- Python Matplotlib库文件发布:适用于macOS的最新版本
- QPixmap小demo教程:图片处理功能实现
- YOLOv8与深度学习在玉米叶病识别中的应用笔记
- 扫码购物商城小程序源码设计与应用
- 划词小窗搜索插件:个性化搜索引擎与快速启动
- C#语言结合OpenVINO实现YOLO模型部署及同步推理
- AutoTorch最新包文件下载指南
- 小程序源码‘有调’功能实现与设计课程作品解析
- Redis 7.2.3离线安装包快速指南
- AutoTorch-0.0.2b版本安装教程与文件概述
- 蚁群算法在MATLAB上的实现与应用
- Quicker Connector: 浏览器自动化插件升级指南
- 京东白条小程序源码解析与实践
- JAVA公交搜索系统:前端到后端的完整解决方案
- C语言实现50行代码爱心电子相册教程