下面代码是设计出的根据员工考核发工资的代码,代码和结果如下,分析一下代码中的循环结构,以及循环结构中break和continue的作用是什么呢?

问题描述:

下面代码是设计出的根据员工考核发工资的代码,代码和结果如下,分析一下代码中的循环结构,以及循环结构中break和continue的作用是什么呢?

// Created by 黑马程序员.
#include "iostream"
#include "random"
using namespace std;

/**
 * 某公司,账户余额有1W元,给20名员工发工资。
 * 员工编号从1到20,从编号1开始,依次领取工资,每人可领取1000元
 * 领工资时,财务判断员工的绩效分(1-10)(随机生成),如果低于5,不发工资,换下一位
 * 如果工资发完了,结束发工资。
 *
 * 提示:
 * 使用循环对员工依次发放工资
 * continue用于跳过员工,break直接结束发工资
 */

int get_random_num(int min, int max)
{
    // 创建一个随机数生成器
    random_device rd;
    mt19937 gen(rd());


    // 定义一个均匀分布的整数范围
    uniform_int_distribution<> dis(min, max);

    // 生成一个随机数并输出
    int random_number = dis(gen);
    return random_number;
}


int main()
{
    // 1. 定义一个变量,记录余额
    int money = 10000;

    // 2. for循环进入发工资流程
    for (int id = 1; id <= 20; id++)
    {
        // 如果工资发完了,结束发工资
        if (money <= 0)
        {
            cout << "工资发放完成,下一个月在来。" << endl;
            break;
        }

        // 随机得到绩效分
        int score = get_random_num(1, 10);
        if (score < 5)
        {
            cout << "不好意思,员工:" << id << ",绩效分:" << score << ",小于5分,不发工资,下一位" << endl;
            continue;
        }

        // 开始发工资了
        money -= 1000;
        cout << "员工:" << id << "领取工资1000,当前余额剩余:" << money << "元" << endl;

    }

    return 0;
}
D:\CLion_code\cmake-build-debug\CLion_code.exe
员工:1领取工资1000,当前余额剩余:9000元
不好意思,员工:2,绩效分:1,小于5分,不发工资,下一位
不好意思,员工:3,绩效分:4,小于5分,不发工资,下一位
员工:4领取工资1000,当前余额剩余:8000元
员工:5领取工资1000,当前余额剩余:7000元
员工:6领取工资1000,当前余额剩余:6000元
不好意思,员工:7,绩效分:1,小于5分,不发工资,下一位
不好意思,员工:8,绩效分:4,小于5分,不发工资,下一位
员工:9领取工资1000,当前余额剩余:5000元
不好意思,员工:10,绩效分:2,小于5分,不发工资,下一位
员工:11领取工资1000,当前余额剩余:4000元
员工:12领取工资1000,当前余额剩余:3000元
员工:13领取工资1000,当前余额剩余:2000元
员工:14领取工资1000,当前余额剩余:1000元
员工:15领取工资1000,当前余额剩余:0元
工资发放完成,下一个月在来。

Process finished with exit code 0

 

问题解答:

代码分析

这段代码模拟了一个公司发放员工工资的过程,根据员工的绩效分数决定是否发放工资。程序使用了一个for循环来遍历每个员工,判断他们是否能领到工资,并通过continuebreak控制循环的执行。

循环结构

  • for循环

    • 该循环从员工编号1开始,依次递增到编号20。
    • 每次循环代表给一个员工发工资的过程。
    • 如果工资余额为0,循环终止,停止发放工资。
  • continue语句

    • 当员工的绩效分数低于5时,continue语句被触发。
    • continue会立即跳过当前循环的剩余部分,直接进入下一次循环(即跳过发工资的步骤),使得该员工未能领取工资。
  • break语句

    • 当公司账户的余额不足以发放下一笔工资时(即余额小于等于0),break语句被触发。
    • break会立即终止整个for循环,结束发放工资的过程。

代码执行流程

  1. 初始化余额

    • 初始余额为10000元。
  2. 开始循环发放工资

    • 从员工1开始,逐个检查每个员工的绩效分数。
    • 如果员工绩效分数小于5,则输出一条信息表示该员工未能领取工资,并直接进入下一位员工的考核 (continue作用)。
    • 如果员工绩效分数大于或等于5,则扣除1000元工资,并输出当前员工领取工资的信息。
    • 如果在发放过程中余额降至0元或以下,输出结束发工资的消息,并立即停止发放 (break作用)。

输出分析

根据代码的执行,程序输出了员工编号和他们的绩效分数,并根据绩效分数判断是否发放工资。以下是代码的一部分输出结果分析:

  • 员工1:绩效分数满足条件,成功领取工资,余额减少到9000元。
  • 员工2、3:绩效分数不符合条件,未能领取工资。
  • 员工4到15:符合条件的员工依次领取工资,直到余额为0。

当余额为0时,程序输出“工资发放完成,下一个月再来。”并结束程序。

breakcontinue的作用

  • break:用于立即终止循环,停止发放工资。这在余额不足的情况下发挥作用,防止继续执行不必要的操作。
  • continue:用于跳过当前循环的剩余部分,直接进入下一次循环。这里用于跳过不符合绩效分数要求的员工,使他们无法领取工资。

总结

这段代码通过for循环、breakcontinue语句有效地控制了员工工资的发放过程,保证了根据绩效分数发放工资,并在余额不足时及时终止发放。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神笔馬良

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值