题目:1假设银行整存整取存款不同期限的月息利率分别为:
0.62% 期限=1年
0.66% 期限=2年
0.69% 期限=3年
0.75% 期限=5年
0.84% 期限=8年
利息=本金*月息利率*12*存款年限.
现在某人手笔中有2000元钱,请通过计算选择一种存钱方案,使得钱存入银行20年后得到的利息最多(假定银行对超过存款期限的那一部分时间不付利息).
----------------解决方案--------------------------------------------------------
#include<stdio.h>
lixi1(long n)
{
int i;
float s=n;
for(i=1;i<=20;i++)
s+=s*12*62/10000.0;
return s;
}
lixi2(long n)
{
int i;
float s=n;
for(i=1;i<=10;i++)
s+=s*12*66/10000.0;
return s-n;
}
lixi3(long n)
{
int i;
float s=n;
for(i=1;i<=6;i++)
s+=s*12*69/10000.0;
return s-n;
}
lixi5(long n)
{
int i;
float s=n;
for(i=1;i<=4;i++)
s+=s*10*75/10000.0;
return s-n;
}
lixi8(int n)
{
int i;
float s=n;
for(i=1;i<=2;i++)
s+=s*12*84/10000.0;
return s-n;
}
main()
{
float a[5],max;
int i,j,k,m=1;
a[0]=lixi1(2000);
a[1]=lixi2(2000);
a[2]=lixi3(2000);
a[3]=lixi5(2000);
a[4]=lixi8(2000);
max=a[0];
for(i=1;i<5;i++)
if(a[i]>max) {max=a[i]; m=i;}
printf("\ns1=%f\ns2=%f\ns3=%f\ns5=%f\ns8=%f\n",a[0],a[1],a[2],a[3],a[4]);
printf("the biggest is %dth:%f",m,max);
}[URL=http://lantian003.go.nease.net]我的主页![/URL]
----------------解决方案--------------------------------------------------------
#include<stdio.h> lixi1(long n) { int i; float s=n; for(i=1;i<=20;i++) s+=s*12*62/10000.0; return s; } lixi2(long n) { int i; float s=n; for(i=1;i<=10;i++) s+=s*12*66/10000.0; return s-n; } lixi3(long n) { int i; float s=n; for(i=1;i<=6;i++) s+=s*12*69/10000.0; return s-n; } lixi5(long n) { int i; float s=n; for(i=1;i<=4;i++) s+=s*10*75/10000.0; return s-n; } lixi8(int n) { int i; float s=n; for(i=1;i<=2;i++) s+=s*12*84/10000.0; return s-n; } main() { float a[5],max; int i,j,k,m=1; a[0]=lixi1(2000); a[1]=lixi2(2000); a[2]=lixi3(2000); a[3]=lixi5(2000); a[4]=lixi8(2000); max=a[0]; for(i=1;i<5;i++) if(a[i]>max) {max=a[i]; m=i;} printf("\ns1=%f\ns2=%f\ns3=%f\ns5=%f\ns8=%f\n",a[0],a[1],a[2],a[3],a[4]); printf("the biggest is %dth:%f",m,max); }
[URL=http://lantian003.go.nease.net]欢迎光临我的主页!!!![/URL]
----------------解决方案--------------------------------------------------------
楼上的,不对。
----------------解决方案--------------------------------------------------------
砸不对???我是那样理解题目的,不 知道你有什么高见????
----------------解决方案--------------------------------------------------------
----------------解决方案--------------------------------------------------------
确实,你的不对,不可能是,要是你帮我看一下我的题目,并帮我找到问题,我就告诉你,
----------------解决方案--------------------------------------------------------
确实不对,你考虑的情况太少了,应该交叉起来也要考虑进去,
应该用穷举法,找出最大的数。
----------------解决方案--------------------------------------------------------
#include<stdio.h> #include<math.h>
double lixi1(double x,int n) { return x*pow((1+0.62)*12,(double)n); } double lixi2(double x,int n) {return x*pow((1+0.66)*12,(double)n); }
double lixi3(double x,int n) {return x*pow((1+0.69)*12,(double)n); }
double lixi4(double x,int n) {return x*pow((1+0.75)*12,(double)n); }
double lixi5(double x,int n) {return x*pow((1+0.84)*12,(double)n); }
main() {int i1,i2,i3,i4,i5,y1,y2,y3,y4,y5; double x=2000,max=-1; for(i1=0;i1<=20;i1++) { x=lixi1(x,i1); for(i2=0;i2<=20-i1;i2+=2) {x=lixi2(x,i2); for(i3=0;i3<=20-i1-i2;i3+=3) {x=lixi3(x,i3); for(i4=0;i4<=20-i1-i2-i3;i4+=5) {x=(lixi4,i4); i5=20-i1-i2-i3-i4; if(i1+i2+i3+i4+i5==20) {x=lixi5(x,i5); if(max<x) {y1=i1;y2=i2;y3=i3;y4=i4;y5=i5;} } } } } } printf("The max=%.2f\n%0.62:%d years\n%0.66:%d years\n%0.69:%d years\n%0.75 %d years\n%0.84:%d years\n",max,y1,y2,y3,y4,y5); getch(); }
----------------解决方案--------------------------------------------------------
上面我写的也没有完全考虑到,比如说改变他们的存储顺序,
如果改变顺序的话,那考虑的情况太多了,不知道怎么写……
----------------解决方案--------------------------------------------------------