问题描述:
- 蒜头君从现在开始工作,年薪 NN 万。他希望在蒜厂附近买一套 6060 平米的房子,现在价格是 200200 万。假设房子价格以每年百分之 KK 增长,并且蒜头君未来年薪不变,且不吃不喝,不用交税,每年所得 NN 万全都积攒起来,问第几年能够买下这套房子?(第一年年薪 NN 万,房价 200200 万)
- 输入格式
- 一行,包含两个正整数 N(10 \le N \le 50)N(10≤N≤50),K(1 \le K \le 20)K(1≤K≤20),中间用单个空格隔开。
- 输出格式
- 如果在第 2020 年或者之前就能买下这套房子,则输出一个整数 MM,表示最早需要在第 MM 年能买下;否则输出
"Impossible"
。 - 输出时每行末尾的多余空格,不影响答案正确性
- 样例输入
-
50 10
-
样例输出
8
代码:
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <string>
using namespace std;
int main() {
int n; //年薪
int k; //年利率
cin >> n >> k;
double sum = 0;//年薪之和
int m = 0; //m年
double price = 200;//房价
for (int m = 1; m <= 20; m++) {
sum = sum + n;
if (sum >= price) {
cout << m;
return 0; //返回值在里面,在外面会出错 多输出一个impossible
}
price = price * (1 + k / 100.0);
}
cout << "Impossible";
//return 0;
}
注 :return 0,break,continue的作用
简要:break是跳出当前整个循环语句,而continue是跳过当前循环的某一个条件语句的动作,return则是跳出当前函数而不往下继续执行
详细:
break: 此语句导致程序终止包含它的循环,并进行程序的下一阶段(整个循环后面的语句),即,不是跳到下一个循环周期而是退出循环。如果break语句包含在嵌套循环里,它只跳出最里面的循环。
如下代码
1 2 3 4 5 6 7 8 9 10 | public class Test { public static void main(String[] args) { for ( int i= 0 ; i< 10 ; i++){ if (i== 5 ){ break ; } System.out.print(i+ " " ); } } } |
可以看到程序输出了01234到5的时候跳出了循环
continue:循环语句里有此语句时,程序运行到此语句时,不在执行循环体里continue后面的语句而是跳到下一个循环入口处执行下一个循环。
把break改为continue
1 2 3 4 5 6 7 8 9 10 | public class Test { public static void main(String[] args) { for ( int i= 0 ; i< 10 ; i++){ if (i== 5 ){ continue ; } System.out.print(i+ " " ); } } } |
可以看到只有5没有输出,也即当i=5时没有执行打印操作,直接到下一次循环
而return是表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,由return后面的参数指定。return后函数就结束了,后面的语句不再执行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public class Test { public static void fun(){ for ( int i= 0 ; i< 10 ; i++){ if (i== 5 ){ return ; } System.out.print(i+ " " ); } System.out.println( "hello" ); } public static void main(String[] args) { fun(); } } |
可以看到后面的hello并没有打印出来
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)