编程打卡:C语言趣味编程习题做
4.15 编程打卡 C 语言趣味编程
牛顿迭代法求解方程根
问题描述
用牛顿迭代法求解方程根的函数,方程为:
牛顿迭代法的公式是:
设计思路
循环运算,直至
对函数求导
流程图
#include <iostream> #include <cmath> using namespace std; double solve (double a,double b,double c,double d) { double x = 1.5,x0,minn = 10000; do { x0 = x; x = x0 - (a * x0 * x0 * x0 + b * x0 * x0 + c * x0 + d)/(3 * a * x0 * x0 + 2 * b * x0 + c); } while (fabs(x - x0) >= 1e-5); return x; } int main () { double a,b,c,d; cin >> a >> b >> c >> d; cout << solve(a,b,c,d); }
运行结果
输入
2 -4 3 -6
输出
2
冒泡排序
问题描述
对N个数进行升序排列
设计思路
遍历数组,若相邻两个数组前大于后,就将它们交换,因为每次都把大的数字移动到相对后面,可以发现,最后一个数的位置已经确定,然后只需要遍历前面的N-1个数即可。
流程图
代码实现
#include <iostream> using namespace std; const int N = 10; int a[N] = {5,4,8,7,2,9,1,3,6,0}; int main () { for (int i = 0; i < N - 1; i ++) { for (int j = 0; j < N - i - 1; j ++) { if (a[j] > a[j + 1]) swap(a[j],a[j+1]); } } for (int i : a) cout << i << " "; }
运行结果
0 1 2 3 4 5 6 7 8 9
折半查找
问题描述
二分
设计思路
二分查找
流程图
代码实现
#include <iostream> using namespace std; const int N = 15; int a[N] = {1,2,3,8,8,8,8,8,8,10,11,12,13,16,19}; int main () { int l,r,n; n = 10; l = 0,r = 14; while (l < r) { int mid = l + r >> 1; if (a[mid]>=n) r = mid; // check()判断mid是否满足性质 else l = mid + 1; } if (a[l] == n) cout << n << endl; else cout << "not found"; n = 15; l = 0,r = 14; while (l < r) { int mid = l + r >> 1; if (a[mid]>=n) r = mid; // check()判断mid是否满足性质 else l = mid + 1; } if (a[l] == n) cout << n << endl; else cout << "not found"; }
运行结果
10 not found
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具