请问为什么无法进入循环,始终输出值为1
/*题目:已知2021年中国GDP总量为美国的77%,若中国GDP增速保持为6%,美国GDP增速保持为2%(2019年数据),编程计算需要多久中国GDP将超过美国?*/
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int year=1;
double USA=1,CHN=0.77,m=1+0.06,n=1+0.02;
for(;0.77*CHN>USA;year++)
{
pow(m,year);
CHN=m;
pow(n,year);
USA=n;
}
cout<<"中国的GDP需要"<<year<<"年超过美国"<<endl;
} 一个小数乘以一个小数能比1还大吗?怎么进入循环体 1.pow是需要返回值的,你这里应该是这样吧
CHN= pow(m,year);
USA= pow(n,year);
2、你的for条件是 【0.77 *cn > us】 这不是一下子就退出了吗
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int year=1;
double USA=1,CHN=0.77,m=1+0.06,n=1+0.02;
for(;CHN<USA;year++)
{
CHN= pow(m,year);
USA= pow(n,year);
}
cout<<"中国的GDP需要"<<year<<"年超过美国"<<endl;
return 0;
} 大马强 发表于 2022-3-20 23:03
1.pow是需要返回值的,你这里应该是这样吧
2、你的for条件是 【0.77 *cn > us】 这不是一下子就退出了吗 ...
不对呀,你咋用pow呢
我觉得是这样的
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int year=1;
double USA=1,CHN=0.77,m=1+0.06,n=1+0.02;
for(;CHN<USA;year++)
{
CHN= CHN * m;
USA= USA * n;
}
cout<<"中国的GDP需要"<<year<<"年超过美国"<<endl;
return 0;
} 这样?{:10_277:}{:10_277:}
#include <stdio.h>
typedef struct {
float monetary, speed;
}GDP;
void f(GDP* Country) {
Country->monetary = Country->monetary + (Country->monetary * Country->speed);
}
int main() {
GDP China = { 0.77, 0.06 };
GDP US = { 1., 0.02 };
int N = 0;
while (China.monetary < US.monetary)
{
f(&China);
f(&US);
N++;
printf("year %d: GDP China: %.2f, GDP US: %.2f\n", N, China.monetary, US.monetary);
}
printf("%d", N);
return 0;
}year 1: GDP China: 0.82, GDP US: 1.02
year 2: GDP China: 0.87, GDP US: 1.04
year 3: GDP China: 0.92, GDP US: 1.06
year 4: GDP China: 0.97, GDP US: 1.08
year 5: GDP China: 1.03, GDP US: 1.10
year 6: GDP China: 1.09, GDP US: 1.13
year 7: GDP China: 1.16, GDP US: 1.15
7
页:
[1]