标题:求高手看下这个编程问题~!初学者做了3天了o(╯□╰)o
只看楼主
lyitem000
Rank: 2
等 级:论坛游民
帖 子:15
专家分:18
注 册:2009-11-15
结帖率:100%
已结贴  问题点数:20 回复次数:15 
求高手看下这个编程问题~!初学者做了3天了o(╯□╰)o
已知银行整存整取存款不同期限的年利率分别为:
        3.87%    期限1年
     4.41%    期限2年
年利率= 5.13%    期限3年
        5.58%    期限5年
假设银行对定期存款过期部分不支付利息,现在某人有2000元钱,要存n年,问怎样存才能使n年后得到的本利之和最多?

提示:1.为了得到最多的利息,存入银行的钱应在到期时马上取出来,然后立刻将原来的本金和利息加起来再作为新的本金存入银行,这样本利不断地滚动直到满n年为止。由于存款的利率不同,所以,不同的存款方法(年限)存n年得到的利息也是不一样的。
      2.采用穷举法穷举所有的n5,n3,n2,n1组合,代入本利计算公式,计算得到所有的存款方案。
      3.求最大存款方案的方法为:将现行存款方案与过去记录的最大存款方案max进行比较,若现行存款方案可得到的本利之和大,则记录现行存款方案(即n1,n2,n3,n5的值)和本利之和的最大值max。



虽然老师给了提示,但还是不会~~我是个编程新手才接触C不到2个月,麻烦大大们帮忙了~!~!~!
搜索更多相关主题的帖子: 银行 编程 年利率 
2009-11-15 15:31
已屏蔽
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:89
专家分:124
注 册:2009-9-5
得分:0 
其实这个东西一般直接代5年息就好了= =。。。


54我。。。
2009-11-15 16:11
jcslt
Rank: 8Rank: 8
来 自:90-xx.com
等 级:蝙蝠侠
帖 子:251
专家分:975
注 册:2009-10-10
得分:0 
LZ的意思是n肯定要大于11,四种存款方式都要用???

www.
2009-11-15 16:28
xiepanqi
Rank: 2
等 级:论坛游民
帖 子:43
专家分:55
注 册:2009-10-24
得分:5 
程序代码:
#include "stdio.h"
void main()
{
    int n,a,b;
    float n1,n2,n3,n4;
    double l[4]={0.0387,0.0441,0.0513,0.0558};
    n1=n2=n3=n4=2000;
    scanf("%d",&n);
    for(a=1;a<=n;a++)
    {
        n1=n1*(1+l[0]);
    }
    for(a=1;a<=(n/2);a++)
    {
        n2=n2*l[1]*2+n2;
    }
    if(n%2!=0)
    {
        b=(n%2)-1;
        n2=n2*l[b]*(b+1)+n2;
    }
    for(a=1;a<=(n/3);a++)
    {
        n3=n3*l[2]*3+n3;
    }
    if(n%3!=0)
    {
        b=(n%3)-1;
        n3=n3*l[b]*(b+1)+n3;
    }
    for(a=1;a<=(n/4);a++)
    {
        n4=n4*l[3]*4+n4;
    }
    if(n%4!=0)
    {
        b=(n%4)-1;
        n4=n4*l[b]*(b+1)+n4;
    }
    printf("n1=%.2f\nn2=%.2f\nn3=%.2f\nn4=%.2f\n",n1,n2,n3,n4);
}
不知道对不对
2009-11-15 16:30
lyitem000
Rank: 2
等 级:论坛游民
帖 子:15
专家分:18
注 册:2009-11-15
得分:0 
回复 3楼 jcslt
也不一定,关键要能求出最优方案
2009-11-15 17:00
jcslt
Rank: 8Rank: 8
来 自:90-xx.com
等 级:蝙蝠侠
帖 子:251
专家分:975
注 册:2009-10-10
得分:0 
那就都5年的了啊,,,!!!

www.
2009-11-15 17:16
xiaohoo
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2009-11-14
得分:0 
可以用switch语句来做利息。.
switch(n)
{
 case 1:?/3.87=?
 case 2:?/4.41=?
 case 3:?/5.13=?
 case 5:?/5.58=?
  befault:      
   }
    至于N年本利之和。这个还没想到.
2009-11-15 18:00
jcslt
Rank: 8Rank: 8
来 自:90-xx.com
等 级:蝙蝠侠
帖 子:251
专家分:975
注 册:2009-10-10
得分:5 
搞了一下,发现max输不出来的,给你参考下吧,希望高手过来改下!
#include"stdio.h"
#include"math.h"
int main()
{int n1,n2,n3,n5,i=0,m,max;
double n;
max=2000;
printf("input hao many years your want:");
scanf("%d",&m);
for(n1=0;n1<=m;n1++)
    for(n2=0;n2<=(m-n1)/2;n2++)
        for(n3=0;n3<=(m-n1-n2)/3;n3++)
            for(n5=0;n5<=(m-n1-n2-n3)/5;n5++)
                if(n1+2*n2+3*n3+5*n5==m)
                {printf("n1=%d n2=%d n3=%d n5=%d\n",n1,n2,n3,n5);
                n=2000.00*pow((1+0.0387),n1)*pow((1+0.0441),2*n2)*pow((1+0.0513),3*n3)*pow((1+0.0558),5*n5);
                printf("%d\n",(int)n);
                i++;
                if((int)n>max)
                max=(int)n;
                }
                printf("%dways",i);
                printf("\nthe max is:",max);
                return 0;
}

www.
2009-11-16 13:26
jcslt
Rank: 8Rank: 8
来 自:90-xx.com
等 级:蝙蝠侠
帖 子:251
专家分:975
注 册:2009-10-10
得分:0 

www.
2009-11-16 13:30
jy3048
Rank: 2
等 级:论坛游民
帖 子:28
专家分:10
注 册:2009-11-7
得分:5 
楼上的思路貌似都错了~~
如果N≥5被5整除就应选5年组合~
如果N>5不被5整除
余数是4的话(3+1组合)
余数是3的话 3年
余数是2的话 2年
余数是1的话 1年

如果N<5的话
4的话(3+1组合)
3的话 3年
2的话 2年
1的话 1年  

这样就OK了~~小弟刚看了1上午的书 ~~提供个思路吧~~


[ 本帖最后由 jy3048 于 2009-11-16 14:16 编辑 ]
2009-11-16 14:14



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-292379-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.042074 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved