matlab中某公司员工的工资计算方法如下。 (1)工作时数超过120h者,超过部分加发15%。 (2)工作时数低于60h者,扣掉700元。 (3)其余按每小时84元计发。 试编程按输入的工号和员工的工时数,计算应发工资。
时间: 2023-12-14 11:37:31 浏览: 20
下面是一种可能的实现方式:
```matlab
% 输入工号和工作时数
employee_id = input('请输入员工工号:');
working_hours = input('请输入员工工作时数:');
% 计算工资
if working_hours > 120
salary = 120 * 84 + (working_hours - 120) * 84 * 1.15;
elseif working_hours < 60
salary = working_hours * 84 - 700;
else
salary = working_hours * 84;
end
% 输出结果
fprintf('员工%d的工资为%.2f元。\n', employee_id, salary);
```
这个程序会先让用户输入员工的工号和工作时数,然后根据上述三个条件计算出应发工资,最后输出结果。注意,这个程序假设每小时工资为84元,如果实际情况不是这样,需要相应地修改程序中的常量。
相关问题
CODES SEGMENT ASSUME CS:CODES START: MOV DS,AX MOV AH,00H MOV AL,13H INT 10H MOV DX,40 AGAIN: MOV CX,0 AGAIN_X: PUSH CX PUSH DX CMP CX,80 JB XBELOW SUB CX,80 JMP XSQUARE XBELOW: MOV BX,80 SUB BX,CX MOV CX,BX XSQUARE: MOV AX,CX MUL CX MOV CX,AX AGAIN_Y: POP DX PUSH DX CMP DX,120 JB YBELOW SUB DX,120 JMP YSQUARE YBELOW: MOV BX,120 SUB BX,DX MOV DX,BX YSQUARE: MOV AX,DX MUL DX MOV DX,AX HANDLE: ADD CX,DX MOV BX,CX POP DX POP CX CMP BX,6400 JA LAST MOV AH,0CH MOV AL,3 INT 10H LAST: INC CX CMP CX,160 JB AGAIN_X INC DX CMP DX,310 JB AGAIN MOV AH,4CH INT 21H CODES ENDS END START对以上代码做出注释
下面是对代码的详细注释:
```
CODES SEGMENT
ASSUME CS:CODES
START:
MOV DS,AX ; 将DS寄存器设为AX,AX中保存着程序的段地址
MOV AH,00H ; 将AH寄存器设为0
MOV AL,13H ; 将AL寄存器设为13H,设置视频模式为320x200,16色
INT 10H ; BIOS中断,设置视频模式
MOV DX,40 ; 将DX寄存器设为40H,设置Y轴的起始位置为64
AGAIN:
MOV CX,0 ; 将CX寄存器清零
AGAIN_X:
PUSH CX ; 将CX寄存器的值压入堆栈中,保存当前的X轴位置
PUSH DX ; 将DX寄存器的值压入堆栈中,保存当前的Y轴位置
CMP CX,80 ; 比较CX寄存器的值和80H
JB XBELOW ; 如果CX小于80H,则跳转到XBELOW标签处
SUB CX,80 ; 如果CX大于等于80H,则将CX寄存器的值减去80H
JMP XSQUARE ; 跳转到XSQUARE标签处
XBELOW:
MOV BX,80 ; 如果CX小于80H,则将BX寄存器设为80H
SUB BX,CX ; 计算出需要向左移动的像素数
MOV CX,BX ; 将CX寄存器设为BX寄存器的值
XSQUARE:
MOV AX,CX ; 将AX寄存器设为CX寄存器的值
MUL CX ; 将AX和CX寄存器中的值相乘,结果保存在AX寄存器中
MOV CX,AX ; 将CX寄存器设为AX寄存器中的值
AGAIN_Y:
POP DX ; 弹出堆栈中保存的Y轴位置,恢复之前保存的值
PUSH DX ; 将Y轴位置再次压入堆栈中,保存当前的Y轴位置
CMP DX,120 ; 比较DX寄存器的值和120H
JB YBELOW ; 如果DX小于120H,则跳转到YBELOW标签处
SUB DX,120 ; 如果DX大于等于120H,则将DX寄存器的值减去120H
JMP YSQUARE ; 跳转到YSQUARE标签处
YBELOW:
MOV BX,120 ; 如果DX小于120H,则将BX寄存器设为120H
SUB BX,DX ; 计算出需要向上移动的像素数
MOV DX,BX ; 将DX寄存器设为BX寄存器的值
YSQUARE:
MOV AX,DX ; 将AX寄存器设为DX寄存器的值
MUL DX ; 将AX和DX寄存器中的值相乘,结果保存在AX寄存器中
MOV DX,AX ; 将DX寄存器设为AX寄存器中的值
HANDLE:
ADD CX,DX ; 将CX和DX寄存器中的值相加,得到当前像素的地址
MOV BX,CX ; 将BX寄存器设为当前像素的地址
POP DX ; 弹出堆栈中保存的Y轴位置,恢复之前保存的值
POP CX ; 弹出堆栈中保存的X轴位置,恢复之前保存的值
CMP BX,6400 ; 比较BX寄存器的值和6400H
JA LAST ; 如果BX大于6400H,则跳转到LAST标签处,结束程序
MOV AH,0CH ; 将AH寄存器设为0CH,设置颜色
MOV AL,3 ; 将AL寄存器设为3,设置颜色为红色
INT 10H ; BIOS中断,显示当前像素
JMP HANDLE ; 跳转到HANDLE标签处,绘制下一个像素
LAST:
INC CX ; CX寄存器加1
CMP CX,160 ; 比较CX寄存器的值和160H
JB AGAIN_X ; 如果CX小于160H,则跳转到AGAIN_X处
INC DX ; DX寄存器加1
CMP DX,310 ; 比较DX寄存器的值和310H
JB AGAIN ; 如果DX小于310H,则跳转到AGAIN处
MOV AH,4CH ; 将AH寄存器设为4CH,结束程序
INT 21H ; DOS中断,结束程序
CODES ENDS
END START
```
陈硕 linux多线程服务端编程 pdf
陈硕的《Linux多线程服务端编程》是一本主要介绍在x86-64 Linux上使用现代C语言编写多线程TCP网络服务程序的技术书籍。这本书重点讲解了一种适应性较强的多线程服务器的编程模型,即one loop per thread。该书讲述了在Linux系统下以native语言编写用户态高性能网络服务程序的方法和技巧。