题目描述 假设你身为一个台电工程师,你正要为 GOGO 百货的电梯设计一套电费计算系统,来计算GOGO 百货的电梯每天所耗的电费是多少。已知电梯所耗的电力会和它所运作的楼层成正比,但是电梯下楼比上楼要省电。所以想请你根据下面这个规则,设计一套电费计算系统。 (1) 电梯上楼时,每经过一个楼层,要花电费 20 元。 (2) 电梯下楼时,每经过一个楼层,要花电费 10 元。 (3) 你可以假设电梯停在某一个楼层时不会耗电。 举例来说:今天有一个电梯从2 楼到8 楼再到5 楼,则所耗的电费为:从2楼到8 楼,所耗的电费是(8-2) x 20 = 120 元。电梯从8 楼到5 楼,所耗的电费是(8-5) x 10 = 30 元。所以总共花了150 元。
输入描述 输入文件中会有多笔数据,第一行是一个整数 N(1,用来表示某一天中电梯所停过的楼层数。第二行是一组以空白分隔的N 个数字,分别表示电梯先后停过的楼层。 N=0 的时候,程序结束。 输入测资中的电梯楼层最高不会超过 101 楼。
输出描述 请根据电梯上下运作的楼层,计算出在一日中电梯运作所花的电费。(为了节能减碳,每日电费最高不会超过10,000 元。)
输入样例 3 2 8 5 7 2 9 7 3 4 6 1 0
输出样例 150 310 我的代码1: #include <stdio.h> void per_layer(int* money, int a, int b)//计算几钱 { int n = 0; n = a - b; if (n > 0) *money = n * 10; else { n = b - a; money = n * 20; } } int per_time(int a, int len)//计算钱数总和 { int money = 0; int i = 0; int ret = 0; for (i = 0; i < (len - 1); i++)// { per_layer(&money, a[i], a[i + 1]); ret += money; }
return ret;//返回ret//钱数总和
}
int main() { int nArray[1000]; int Si[101]; int i = 0; int n = 0; int j = 0; while (scanf("%d", &n), n != 0) { while (i != n) { scanf("%d", &(Si[i])); i++; } i = 0; nArray[j++] = per_time(Si, n);//在输入的同时将数据导入函数,进行计算; }
for (i = 0; i < j; i++)
{
printf("%d\n", nArray[i]);
}
return 0;
} 但是我的代码2: #include<stdio.h> #define N 1000 int main() { int n; int a[N]; int i = 0, j = 0; int sum = 0;
while (scanf("%d", &n),n!=0)
{
while (i != n)
{
scanf("%d", &a[i]);
}
i = 0;
j++;
}
for (i = 0; i < n - 1; i++) { if (a[i] > a[i + 1]) { sum = sum + (a[i] - a[i + 1]) * 10; } if (a[i] < a[i + 1]) { sum = sum + (a[i + 1] - a[i]) * 20; } } for (i = 0; i < j; i++) { printf("%d\n", sum); }
return 0; } 却不能有效输入输出; 有大佬指点迷津吗?