一、题目链接
http://noi.openjudge.cn/ch0106/03/
二、解题思路(Java)
◎ 方法public double cost(double[] price, int[] number)处理所有业务逻辑:
→ 参数price为double类型的数组,存储每种书的单价;
→ 参数number为int类型的数组,存储每种书的采购量;
→ cost方法返回非负浮点数,代表购书应付的总费用;
◎ 定义double类型的浮点数ans,代表购书应付的总费用,初始时ans为0;
◎ 定义int类型的整数n,代表购书的种类,令n = price.length;
◎ 从第一种书开始,到最后一种书为止,利用循环i处理如下:
→ 令ans = ans + price[i] * number[i],也即将当前第i种书的购书费用累加到ans上;
循环i结束后,ans中存储了购书应付的总费用,返回ans;
◎ 在main方法中调用cost方法,注入相应的参数后即可获得计算结果,保留1位小数将其输出。
三、解题思路(C++)
◎ 定义并初始化double类型的数组price[10],用于存储每种书的单价,其中的10个元素按题目要求设定;
◎ 定义int类型的数组number[10],用于存储每种书的采购量;
◎ 定义double类型的浮点数ans,代表购书应付的总费用,初始时ans为0;
◎ 从第一种书开始,到最后一种书为止,利用循环i处理如下:
→ 首先,输入当前第i种书的采购量number[i];
→ 其次,令ans = ans + price[i] * number[i],也即将当前第i种书的购书费用累加到ans上;
循环i结束后,ans中存储了购书应付的总费用;
◎ 保留1位小数输出ans。
四、Java程序
import java.util.Scanner;
public class Main {
public double cost(double[] price, int[] number) {
double ans = 0;
int n = price.length;
for (int i = 0; i < n; i++) {
ans = ans + price[i] * number[i];
}
return ans;
}
public static void main(String[] args) {
Main test = new Main();
Scanner input = new Scanner(System.in);
int N = 10;
double[] price = {28.9, 32.7, 45.6, 78, 35, 86.2, 27.8, 43, 56, 65};
int[] number = new int[N];
for (int i = 0; i < N; i++) {
number[i] = input.nextInt();
}
System.out.printf("%.1f", test.cost(price, number));
}
}
五、C++程序
#include <iostream>
using namespace std;
int main()
{
double price[10] = {28.9, 32.7, 45.6, 78, 35, 86.2, 27.8, 43, 56, 65};
int number[10];
double ans = 0;
for (int i = 0; i < 10; i++)
{
cin >> number[i];
ans = ans + price[i] * number[i];
}
printf("%.1f", ans);
return 0;
}