利用子程序定义和调用,完成下面要求的程序编制。 编程:商品数组product中按照商品ID(0-9之间)保存的每样商品对应的价格(假设价格为整数),从键盘输入需要购买的一组商品的ID(假设一次性购买商品不超过10件),计算需要购买商品的总价,并显示出来。 要求如下: (1)接收从键盘输入的商品ID,并依次存放于cart数组中。(此功能由input子程序实现,以“回车”符结束。) (2)根据cart中的商品ID,查找product数组中每件商品的单价,并计算总价。(此功能由checkout子程序实现) (3)将总价转换为10进制数从屏幕上显示出来。(此功能由output子程序实现)
时间: 2024-03-13 22:44:25 浏览: 60
好的,以下是实现你要求的完整程序代码(使用Perl语言):
```perl
sub input {
my @cart;
print "请输入需要购买的商品ID(0-9之间),以回车键结束:\n";
while (my $input = <STDIN>) {
chomp $input;
last if $input eq ""; # 输入空行结束
if ($input !~ /^[0-9]$/) {
print "输入无效,请重新输入:\n";
next;
}
push @cart, $input;
if (@cart >= 10) { # 最多输入10件商品
last;
}
}
return @cart;
}
sub checkout {
my ($total_price, @cart) = @_;
my %product = (0 => 10, 1 => 20, 2 => 30, 3 => 40, 4 => 50, 5 => 60, 6 => 70, 7 => 80, 8 => 90, 9 => 100);
foreach my $id (@cart) {
if (exists $product{$id}) {
$total_price += $product{$id};
}
}
return $total_price;
}
sub output {
my $total_price = shift;
printf "您需要支付的总价为:%d\n", $total_price;
}
my @cart = input();
my $total_price = checkout(0, @cart);
output($total_price);
```
程序中定义了三个子程序:input、checkout和output,分别实现了输入购买商品ID、计算总价和输出总价的功能。主程序中先调用input子程序获取输入的购买商品ID,然后将它们传递给checkout子程序计算总价,最后将总价传递给output子程序输出到屏幕上。
注意,程序中使用了哈希表(即Perl中的关联数组)来保存商品ID和单价的对应关系,可以通过修改哈希表中的值来修改商品的单价。如果购买的商品数量较大,可以考虑将哈希表保存到外部文件中,以便进行灵活的修改和管理。
阅读全文