第三十五课 问题求解方法——迭代 【项目1-5】
来源:互联网 发布:药品入库软件 编辑:程序博客网 时间:2024/05/21 17:08
第三十五课 问题求解方法——迭代
项目一 【另类求和】
求 Sn=a+aa+aaa+...+aa...a之值,其中 a是一个数字。
例如2+22+222+2222( 此时a=2,n=4),a和n均由键盘输入。
请在下面的代码基础上补充完整。
例如2+22+222+2222( 此时a=2,n=4),a和n均由键盘输入。
请在下面的代码基础上补充完整。
代码:
#include <stdio.h>int main( ){ int a,n,count=1,Sn=0,Tn=0; printf("请输入 a 和 n 的值:\n"); scanf("%d %d",&a,&n); while (count<=n) { Tn=Tn*10+a; Sn=Sn+Tn; count++; } printf("a+aa+aaa+...=%d\n",Sn); return 0;}
运行结果:
项目二 【反弹的皮球】
一球从的100米高度自由落下,每次落地后反跳回原来高度的一半,再落下,求它在第十次落地时,共经过多少米?第十次反弹多高?
请在下面的代码基础上补充完整。
请在下面的代码基础上补充完整。
代码:
#include<stdio.h>int main(){ float sn=100.0,hn=sn/2; int n; for (n=2;n<=10;n++) { sn=sn+hn*2; hn=hn/2; } printf("第10次落地时共经过%f米。\n",sn); printf("第10次反弹%f米。\n",hn); return 0;}
运行结果:
项目三 【Bessel函数】
Bessel函数Jn(X)有以下的递推关系:
编写程序,利用递推关系,由任意的n和x≠0求Jn(X)。
代码:
#include<stdio.h>#include<math.h>int main(){ double jn,j1,j0,x; int n,count=2; printf("请输入x和n:\n"); scanf ("%lf%d",&x,&n); j0=sin(x)/x; j1=sin(x)/(x*x)-cos(x)/x; while (count<=n) { jn=(2*count-1)/x*j1-j0; j0=j1; j1=jn; count++; } printf("%4f",jn); return 0;}
运行结果:
项目四 【贪财的富翁】
一个百万富翁遇到一个陌生人,陌生人找他谈一个换钱的计划,该计划如下:我每天给你十万元,而你第一天只需给我一分钱,第二天我仍给你十万元,你给我两分钱,第三天我仍给你十万元,你给我四分钱,....,你每天给我的钱是前一天的两倍,直到满一个月(30天),百万富翁很高兴,欣然接受了这个契约。请编程序,通过计算说明,这个换钱计划对百万富翁是否是个划算的交易。
提示:(1)需要计算出30天后陌生人给了百万富翁多少钱,百万富翁给了陌生人多少钱,然后才能做出判断;(2)想要看得清楚,可以选择列出每一天双方交易获得的钱数。
代码:
#include<stdio.h>int main(){ int i=1,t1=100000,sum1=0; double sum2=0.0,t2=0.01; while (i<=30) { sum1=sum1+t1; sum2=sum2+t2; t2=t2*2; printf("第%d天,富翁得到%d,陌生人得到%.2f\n",i,sum1,sum2); i++; } if (sum1>sum2) printf("\n富翁稳赚"); else { if (sum1<sum2) printf ("\n陌生人稳赚"); else printf("\n公平交易"); } return 0;}
运行结果:
项目五 【在北京买房】
现在北京有一套房子,价格200万,假设房价每年上涨10%,一个软件工程师每年固定能赚40万。如果他想买这套房子,不贷款,不涨工资,没有其他收入,每年不吃不喝不消费,那么他需要几年才能攒够钱买这套房子?
代码:
#include<stdio.h>int main(){ int i=1,t2=400000; double s1=2000000.0,s2=0.0,t1=0.0; while (i<=80) { s1=s1+t1; t1=s1*0.1; s2=s2+t2; printf ("第%d年,房价%.0f,积蓄%.0f\n",i,s1,s2); i++; } if (s1<s2) printf("%d年后,终于等到你。。\n",i); else printf("来世再努力吧!\n"); return 0;}
运行结果:
扩展1:
这位软件工程师没有理财意识,不去投资,也不至于将现金堆在家里吧,至少应存到银行,吃点利息(考虑通胀因素,可能仍亏,但比放家里现金收益高也安全)。按存1年定期,重新求解上面的问题。
代码:
#include<stdio.h>int main(){ int i=1,t2=400000; double s1=2000000.0,s2=0.0,t1=0.0,j2=0.0; while (i<=80) { s1=s1+t1; t1=s1*0.1; j2=s2*0.015; s2=s2+t2+j2; printf ("第%d年,房价%.0f,积蓄%.0f\n",i,s1,s2); i++; } if (s1<s2) printf("%d年后,终于等到你。。\n",i); else printf("来世再努力吧!\n"); return 0;}
运行结果:
扩展2:
软件工程师不涨工资不对。工作经验、效率逐年提高,这家公司不给涨,会找另一家给涨工资的公司做。假如每年工资涨5%,结果又是如何呢?
代码:
#include<stdio.h>int main(){ int i=1,t2=400000; double s1=2000000.0,s2=0.0,t1=0.0; while (i<=80) { s1=s1+t1; t1=s1*0.1; s2=s2+t2; t2=s2*1.05; printf ("第%d年,房价%.0f,积蓄%.0f\n",i,s1,s2); i++; } if (s1<s2) printf("%d年后,终于等到你。。\n",i); else printf("来世再努力吧!\n"); return 0;}
运行结果:
不知道对不对啊,为什么怎样都买不到房啊。。。泪飘。。
知识点与总结:
1、迭代真的太精细了,把一些有关联的数据组成可代替的关系式,就形成了迭代的体系,一个解法也许有很多种,但是要找到一个精简又精确的就少了,应该多在这方面下功夫。
2、为了每次循环输出结果,可以把初值设置成0,或者在 printf 输出后的下一行进行 i++ 。
3、如果迭代的第一次循环把第二次的数据算进去了,可能是循环过程中迭代或循环体的位置靠前了,适当调整到输出的那个变量的后面。
2、为了每次循环输出结果,可以把初值设置成0,或者在 printf 输出后的下一行进行 i++ 。
3、如果迭代的第一次循环把第二次的数据算进去了,可能是循环过程中迭代或循环体的位置靠前了,适当调整到输出的那个变量的后面。
132
1 0
- 第三十五课 问题求解方法——迭代 【项目1-5】
- 第三十五讲|问题求解方法——迭代
- 第三十五课——迭代
- 第二周《C语言及程序设计》实践项目35 问题求解方法——迭代
- C语言:问题求解方法-迭代
- 第1周 C语言及程序设计初步 例程-7 问题求解方法——迭代
- C语言及程序设计初步例程-35 问题求解方法——迭代
- C语言初步-第35讲: 问题求解方法——迭代(另类求和)
- C语言初步-第35讲: 问题求解方法——迭代(Bessel函数 )
- 迭代求解最优化问题——信赖域方法
- 迭代求解最优化问题——步长确定
- 第三十五讲项目5——在北京买房
- PageRank迭代求解方法
- 第四十课 问题求解方法——穷举 【项目1-9】
- 第三周项目5—用递归求解
- 迭代求解最优化问题——最小二乘问题、高斯牛顿法
- 迭代求解最优化问题——梯度下降、牛顿法
- 第三十五讲项目2——反弹的皮球
- HTML5增强的页面元素
- android studio快捷键大全
- 零编程经验如何找软件工程师的工作?
- 配置文件参数设计
- 在微软学到的几个小技能--孙鹏(MIUI初创工程师)
- 第三十五课 问题求解方法——迭代 【项目1-5】
- 深入浅出JMS(四)--Spring和ActiveMQ整合的完整实例
- golang中时间包time函数和demo
- pair模板类型
- 对多维数组名、指向数组的指针和指针数组的理解
- Web Service简介(一)
- 使用CXF开发简单的Web Service-HelloWorld(二)
- ZOJ 2201 2186 2176
- 【项目管理与构建】Nexus的详细介绍以及安装(四)