一道C题目

jxnuzhouguohong 2012-02-17 05:32:14
Just赢了100万美元,他把它存入一个每年赢得8%的帐户,在每年的最后一天,Just取出10万美元。编写一个程序,计算需要多少年Just就会清空他的帐户?

我写的出了问题,大家帮我看看!

#include<stdio.h>
int main()
{
float sum(int n);
int i=0;
while(sum(i)>=0)
{
i++;
}

printf("%d",i);

return 0;
}

float sum(int n)
{
if(n=1)
return (float)100;
else if(n>=2)
return (sum(n-1)*1.08-10);

}

...全文
211 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
兆帅 2012-02-17
  • 打赏
  • 举报
回复

#include "stdio.h"
void main()
{
float base=100;
int year=1;
base*=1.08;
while((base-=10)>=0)
{
base*=1.08;
year++;

}
printf("%d年将会清空他的账户!",year);
}

jxnuzhouguohong 2012-02-17
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 benben2301 的回复:]

如果是先取出,后计息,是18年。如果是先计息,后取出是21年

C/C++ code

#include <stdio.h>

int com(double toal, double interest)
{
int i = 0;
double temp = toal;

while(temp > 0)
{
temp -= 10;
temp = temp +……
[/Quote]

霸气。。。。。

应该是是先计息,后取出,因为是年终取出
jxnuzhouguohong 2012-02-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wjl19890711 的回复:]

C/C++ code

float total = 100;
int n = 0;
while (total > 0) {
total = total * 1.08 - 10;
n++;
}
printf("%d\n", n);



这样写就可以了
[/Quote]


嗯,完全可以,简洁
  • 打赏
  • 举报
回复
如果是先取出,后计息,是18年。如果是先计息,后取出是21年


#include <stdio.h>

int com(double toal, double interest)
{
int i = 0;
double temp = toal;

while(temp > 0)
{
temp -= 10;
temp = temp + temp * 8 /100;
i++;
}
return i;
}

void main()
{
printf("%d", com(100, 8));

}
jxnuzhouguohong 2012-02-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 czh3642210 的回复:]

C/C++ code
float sum(int n);
int i=1;//再就是这儿的i初始值要为1,否则你第一次调用sum这个函数会出错
while(sum(i)>=0)
[/Quote]


谢谢大牛,小问题就是发现不了,调试N多次都是100输出,呵呵
whc748227431 2012-02-17
  • 打赏
  • 举报
回复
#include<stdio.h>
main()
{
int i=0;
float m=100;

while(m>=0)
{m=m*(1+0.08);
m=m-10;
i++;
};
printf("%6d",i);

}
sakouya 2012-02-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wjl19890711 的回复:]

每年取8万就永远用不完了。。。
[/Quote]
这也算是回答么。

#include<stdio.h>
#include<windows.h>
//题目的主要考核点是这一段递归函数sum
float sum(int n)
{
if(n>=2)
return (float)(sum(n-1)*1.08-10);//返回值是每一年开始时的存款额 注意为什么我把if前后条件颠倒
else if(n=1)
return (float)100;
}

int main()
{
int n;
scanf("%d",&n); //输入是第几年
float m = sum(n);

if (m<=0)
printf("已经无余额");

else
printf("%f",m);

system("pause");//这是方便你查看,和 #include<windows.h>配套的
}

//另外,你对题意理解有误,你的编程返回值是每一年开始时余额
//题目问的是,几年后取空?
//所以我建议改一下main如下
//int main()
//{
// int n;

// while(sum(n)>0.0)
// {printf("%f\n",sum(n));
// if(sum(n)<=0.0)
// goto all_done;
// else
// n=n+1;
// }
// all_done:
// printf("%i年无余额",n);


// system("pause");
//}
newpuple 2012-02-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 czh3642210 的回复:]
首先楼主,你的

C/C++ code

if(n==1)//应该是双等号。。。
return (float)100;
else if(n>=2)
return (sum(n-1)*1.08-10);
[/Quote]

高手就在于,首先能力强,其次手要快
yfl819586803 2012-02-17
  • 打赏
  • 举报
回复
#include<iostream>
using namespace std;
int main()
{
double sum=100;
int i;
for( i=1;;i++)
{
sum=sum*1.08-10;

if(sum<=0)
break;
}
cout<<i<<" "<<sum;
}
自信男孩 2012-02-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 czh3642210 的回复:]
C/C++ code
float sum(int n);
int i=1;//再就是这儿的i初始值要为1,否则你第一次调用sum这个函数会出错
while(sum(i)>=0)
[/Quote]
++
鲲尘千古 2012-02-17
  • 打赏
  • 举报
回复

float total = 100;
int n = 0;
while (total > 0) {
total = total * 1.08 - 10;
n++;
}
printf("%d\n", n);


这样写就可以了
矫情狗_____ 2012-02-17
  • 打赏
  • 举报
回复
楼上正解
面包大师 2012-02-17
  • 打赏
  • 举报
回复
	float sum(int n);
int i=1;//再就是这儿的i初始值要为1,否则你第一次调用sum这个函数会出错
while(sum(i)>=0)
面包大师 2012-02-17
  • 打赏
  • 举报
回复
首先楼主,你的
	if(n==1)//应该是双等号。。。
return (float)100;
else if(n>=2)
return (sum(n-1)*1.08-10);
鲲尘千古 2012-02-17
  • 打赏
  • 举报
回复
每年取8万就永远用不完了。。。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧