关于while循环的问题

CZBKJSJ 2013-05-26 07:01:22

/*一个关于银行存款获取收益的程序,利率分别为%5、%6、%7、%8、%9、%10时的收益*/
#include <stdio.h>
#include <math.h>

int main()
{
float sum; //sum为n年年底的存款总额
int n = 1; //年份
float rate = 0.05; //利率
float p = 1000.00; //本金
printf("年份 \t\t 利率 \t\t 收益\n");

//这里为什么只能显示第一年的收益,第二年第三……怎么就无法输出了?
while(n<=10)
{
for(;rate<=0.1;rate=rate+0.01)
{
sum = p*pow(1+rate,n);
printf("%d年账户的利率为%f收益为:%.2f\n",n,rate,sum);
}
++n;
}

return 0;
}

请大家看看为什么程序只能输出第一年的收益啊?
...全文
171 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2013-05-27
  • 打赏
  • 举报
回复
你的利率应该和你的年份同时变化,所以需要在修改一下:

for(rate = 0.05;rate<=0.1;rate=rate+0.01, n++)//利率和年份同时变化
        {
            sum = p*pow(1+rate,n);
            printf("%d年账户的利率为%f收益为:%.2f\n",n,rate,sum);
        }
kenloveland 2013-05-27
  • 打赏
  • 举报
回复
亲,因为你需要之后每年的收益,所以需要在每年计算结果之后,再次初始化年利率,即在for循环的n++之后,加上 rate = 0.05; 希望能帮助你,有问题再讨论,谢谢。 /*一个关于银行存款获取收益的程序,利率分别为%5、%6、%7、%8、%9、%10时的收益*/ #include <iostream> #include <stdlib.h> #include <math.h> using namespace std; int main(int argc, char *argv[]) { float sum; //sum为n年年底的存款总额 int n = 1; //年份 float rate = 0.05; //利率 float p = 1000.00; //本金 cout<<"年份 \t\t 利率 \t\t 收益"<<endl; while(n<=10) { for(;rate<=0.1;rate=rate+0.01) { sum = p*pow(1+rate,n); cout<<n<<"年账户的利率为:"<<rate<<"收益为:"<<sum<<endl; } n++; rate = 0.05; } system("PAUSE"); return 0; }
buyong 2013-05-26
  • 打赏
  • 举报
回复
for(rate=0.05;rate<=0.1;rate=rate+0.01)
Code_Talk 2013-05-26
  • 打赏
  • 举报
回复
rate值得问题,第一次for循环退出后就再也进不到for循环中了。
长安青阳子 2013-05-26
  • 打赏
  • 举报
回复
我记得浮点变量不能像整型变量那样比较 应该用|x|<T
hugett 2013-05-26
  • 打赏
  • 举报
回复


/*一个关于银行存款获取收益的程序,利率分别为%5、%6、%7、%8、%9、%10时的收益*/
#include <stdio.h>
#include <math.h>

int main()
{
	float sum;		//sum为n年年底的存款总额
	int n = 1;			//年份
	float rate = 0.05;		//利率
	float  p = 1000.00;			//本金
	printf("年份 \t\t 利率 \t\t 收益\n");
	
	while(n<=10)
	{
		for(rate = 0.05;rate<=0.1;rate=rate+0.01)//每次循环开始前给rate重新赋值。。
		{
			sum = p*pow(1+rate,n);
			printf("%d年账户的利率为%f收益为:%.2f\n",n,rate,sum);
		}
		++n;
	}	

	return 0;
}
AnYidan 2013-05-26
  • 打赏
  • 举报
回复
ls for 循环体中 n 一直没变
绯红女王 2013-05-26
  • 打赏
  • 举报
回复
/*一个关于银行存款获取收益的程序,利率分别为%5、%6、%7、%8、%9、%10时的收益*/
#include <stdio.h>
#include <math.h> 
int main()
{   
	float sum;       
	//sum为n年年底的存款总额  
	int n = 1;          
	//年份   
	float rate = 0.05;       
	//利率  
	float  p = 1000.00;        
    //本金   
	printf("年份 \t\t 利率 \t\t 收益\n"); 
    //这里为什么只能显示第一年的收益,第二年第三……怎么就无法输出了? 
	while(n<=10)   
	{    
		for(;rate<=0.1;rate=rate+0.01)     
		{          
			sum = p*pow(1+rate,n);      
			printf("%d年账户的利率为%f收益为:%.2f\n",n,rate,sum);
			++n; 
		}       
		 
	}         
	return 0;
}
只爱艾薇儿 2013-05-26
  • 打赏
  • 举报
回复
额 不明白利率是怎么个算法算的 数学没学好。。。 你那个for循环式是在遍历一年中利率分别为%5、%6、%7、%8、%9、%10时的收益的各种情况吧,然后一年的遍历过之后你那个局部变量还是会接着第一年%10的时候的那个rate, 你在++n之后再加个rate=0.05; 更新了rate是不是就达到你想要的那个算法的逻辑了吗让第二年的再从%5到%10遍历去
bewinged 2013-05-26
  • 打赏
  • 举报
回复

/*一个关于银行存款获取收益的程序,利率分别为%5、%6、%7、%8、%9、%10时的收益*/
#include <stdio.h>
#include <math.h>

int main()
{
	float sum;		//sum为n年年底的存款总额
	int n = 1;			//年份
	float rate = 0.05;		//利率
	float  p = 1000.00;			//本金
	printf("年份 \t\t 利率 \t\t 收益\n");
	
//这里为什么只能显示第一年的收益,第二年第三……怎么就无法输出了?
	while(n<=10)
	{
		for(;rate<=0.1;rate=rate+0.01)
		{
			sum = p*pow(1+rate,n);
			printf("%d年账户的利率为%f收益为:%.2f\n",n++,rate,sum);
		}
		//++n;
	}	
while(1);
	return 0;
}
青松2 2013-05-26
  • 打赏
  • 举报
回复
只输出第一年不是很正常吗? 你的输出字符的语句只有在n=1的时候才运行了,之后rate因为已经大于0.1,函数体的语句不会再被执行了

69,364

社区成员

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

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