一名水管工在1月初用100000美元开了一个储蓄账号。他在接下来的12个月里每个月末存入1000美元(从1月末开始)。利息在每个月末结算并添加到账户中(在存入1000美元之前)。月利率取决于结算利息时他账户中的金额A,采用如下方法:
A ≤ 110000 : 1%
110 000 < A ≤ 125000 : 1.5%
A > 125000 : 2%
编写程序,将12个月中每个月末的如下情况显示出来:月份、利率、利息和新的余额。
分析:
由题可知有3种不同的利率,所以我们这里是与要判断每个月的金额符合哪一种条件下的利率(需要运用到if,但是为了避免重复判定我们不能使用if end 要使用if elseif end)。且在每个月末我们都会存入1000美元,所以需要在if外每个月本金加1000美元。
代码如下:
function demo_bank()
s = 100000;
disp('月份 利率 利息 余额');
for i = 1:12
if s <= 110000
temp = s * 0.01;
s = s + temp;
disp(i+" 1% "+temp+" "+s)
elseif (110000 < s) && (s <= 125000)
temp = s * 0.015;
s = s + temp;
disp(i+" 1.5% "+temp+" "+s)
elseif s > 125000
temp = s * 0.02;
s = s + temp;
disp(i+" 2% "+temp+" "+s)
end
s = s + 1000;
end
end
结果如下图:
如果使用if end,代码如下:
function demo_bank()
s = 100000;
disp('月份 利率 利息 余额');
for i = 1:12
if s <= 110000
temp = s * 0.01;
s = s + temp;
disp(i+" 1% "+temp+" "+s)
end
if (110000 < s) && (s <= 125000)
temp = s * 0.015;
s = s + temp;
disp(i+" 1.5% "+temp+" "+s)
end
if s > 125000
temp = s * 0.02;
s = s + temp;
disp(i+" 2% "+temp+" "+s)
end
s = s + 1000;
end
end
结果会出现两个11月,如前面分析所说做了重复判定,如下图: