电梯的c语言数组题目,求解

5.电梯
正在建设的工科楼E座将会成为校内最高建筑,假设该建筑内只有一个电梯。现在有一个由N个正整数组成的请求列表,每个数字表明了电梯将依次停留的楼层顺序。电梯每上行1层将花费6秒,下行1层将花费4秒。电梯在每一层停留一次,将花费5秒。
对于一个给定的请求列表,请计算出按照顺序途径每一层楼所花费的总时间。电梯一开始停留在第0层,并且在完成请求队列之后不需要返回地面(第0层)。
输入
输入共2行。第一行为一个正整数N,表示请求队列中需要经过的楼层数目;第二行为N个正整数,表示电梯依次经过的楼层数,每个数都少于30。
输出
花费的总时间
样例输入
3
2 3 1
样例输出
  41

#include <stdio.h>
#define MAX 30
int main()
{
    int n, pf, f, t=0;

    pf = f = 0;
    scanf("%d", &n);
    while(n--)
    {
        while(1)
        {
            scanf("%d", &f);
            if(f>MAX)
                printf("Too big floor number, input it again.\n");
            else
                break;
        }

        if(f >= pf) //上行
            t += (f-pf)*6+5;
        else        //下行
            t += (pf-f)*4+5;
        pf = f;
    }
    printf("%d",t);
}

 

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-10
int main()
{
//此处忽略将输入读取到数组中的步骤
int floors[] = {2,3,1}; //输入楼层数据
int allTimes = 0; //设定总消耗时间

//设定电梯前一次所在楼层,初始为0
int lastFloor = 0;

//开始跟随电梯遍历每个楼层
int arrayCount = sizeof(floors)/sizeof(int);//计算数组长度
for(int i=0;i<arrayCount;i++){
//每次移动产生的时间消耗为移动的时间+1次停留消耗的时间
int s = floors[i]-lastFloor;
if(s>0){ //上升
allTimes += s*6 + 5;
}else {
allTimes += s*4 + 5;
}
}

printf("最终消耗的总时间为:%d",allTimes);

}

//注意:本处没有考虑 错误和异常输入的检测,也没有进行常量的提取,方法的模块化等工作,只是给出一个完整的实现思路。代码可运行!

QQ    : 905049286     邮箱:[email protected]

第2个回答  2014-01-10
看完我就懵了
相似回答