买房子问题(break,continue,return的区别)

问题描述:

  • 蒜头君从现在开始工作,年薪 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并没有打印出来

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值