回 帖 发 新 帖 刷新版面

主题:关于银行存款最优方案的修改,请高手帮忙看看~

#include <stdio.h>
void main()
{   
     int N,n1,n2,n3,n4,n5,t;
     float y,max=0;
      N=10000;
     for (n5=0;n5<=2;n5++)
         for(n4=0;n4<=4;n4++)
             for(n3=0;n3<=6;n3++)
                 for(n2=0;n2<=10;n2++)
                        for(n1=0;n1<=20;n1++)
                        {    t=n1+2*n2+3*n3+5*n4+8*n5;
                                 if (t==20)
                                  y=N*(1+0.0225)*n1+N*(1+2*0.027)*n2+N*(1+3*0.0324)*n3+N*(1+5*0.036)*n4+N*(1+8*0.04)*n5;
                                    if(max<y) 
                                 {
                                        max=y;    
                                       printf("一年期存%d年\n两年期存%d年\n三年期存%d年\n五年期存%d年\n八年期存%d年\n",n1,n2,n3,n4,n5);
                            }
                                  
                                 
                        }
                                     
printf("本息和为%.2f\n",max);
}

回复列表 (共10个回复)

沙发

在这方面最好使用switch 语句来处理,你使用了5个for 的嵌套语句,显然已经很多了,弊端很大,容易出错的!而且程序的可读性也变得很差,运行起来效率也是很低的!

板凳

ls这个帖子回得(我不想打击人,这个词我不说了),穷举的题用switch做什么……穷举的题用switch写还不如手算出答案……

程序思路还是有问题,你算出的max年数太多了。循环里应该保存下当前的n1到n5(开另外的变量保存)而不是即时输出
for循环过多的问题是由于问题尚未优化
最简单的优化是去掉关于n1的循环,直接用n1=20-n2*2-n3*3-n4*5-n5*8;计算出n1,判断条件当然要相应改成if(n1>=0)

3 楼

谢谢两位!我们正学到for语句,是要求用循环来写的~

4 楼


急求visual basic.net 下载地址

5 楼

呵呵,你这人到时挺牛逼的!!那你用手指掰给我算算看?!!每个人有自己的思路和想法,要学习去尊重别人的意见!懂吗?!!不要认为自己很强似的!!我身边的高手多的是了,你算什么啊?!

6 楼

我确实能用手掰着把这道题算出来……我也确实想不通怎么用switch去穷举,您是牛人,麻烦您教教我怎么用switch来穷举吧……

7 楼

你先用手指加脚趾掰算出来,我再给你用switch 给你穷举出来,好吧?!

8 楼

还是劳驾您先用switch穷举一下我看看吧,这两天为了琢磨switch怎么用在穷举上费了我真的不少脑细胞了

9 楼

[quote]在这方面最好使用switch 语句来处理,你使用了5个for 的嵌套语句,显然已经很多了,弊端很大,容易出错的!而且程序的可读性也变得很差,运行起来效率也是很低的![/quote]

学习了!!!“这方面....."?哪方面啊?
不好意思,实在想说句粗话,扯JB蛋你也分个地方!实在很莫名,实在很奇妙,不知道您的switch和穷举有什么藕断丝连的关系?!
另外,其他的都不必说了,代码的干活,你把用switch实现的,贴出来,让偶们这些粗人也学习学习。

10 楼


莫吵了
我想想看看原题
这么多for循环我是看不懂的

我来回复

您尚未登录,请登录后再回复。点此登录或注册