永发信息网

【C语言编程题】电梯时间问题

答案:3  悬赏:60  手机版
解决时间 2021-02-27 14:45
  • 提问者网友:捧腹剧
  • 2021-02-27 11:19
某城市最高的楼只有一部电梯。该电梯和一般电梯不同的是它依照输入楼层数的先后次序运行。电梯最初在0层。运行完一个输入序列后就停止在该楼层,不返回0层。编写程序计算电梯运行一个序列的时间。每次都假设电梯在0层开始,无论上一次运行到几层。电梯每上1层需要6秒。每下1层需要4秒。如在某层停留,无论上下人多少,均停留5秒。
输入:程序可以输入多行。每行的第一个数N指示后面将有N个楼层的序列。楼层的值大于等于1,小于100。N=0表示结束输入。
输出:计算每个序列电梯运行的时间。

输入:

1 2 3 2 3 1 0

输出:

17 41
最佳答案
  • 五星知识达人网友:一秋
  • 2021-02-27 11:59

#include<stdio.h>
#include<string.h>
int main()
{
int a[100];
int b, t, i;//b为层数差
int sum = 0;
a[0] = 0;
//sum = 0;
for (i = 1; i <= 100; i++)
{
scanf("%d", &a[i]);
if ((a[i] == '\n')||(a[i]==0))
break;
b = a[i] - a[i-1];
//printf("%d\n", b);
if (b > 0)
t = b * 6;
else t = b * (-4);
sum += (t + 5);
}
printf("%d", sum);
return 0;
}
全部回答
  • 1楼网友:罪歌
  • 2021-02-27 14:32
#include <stdio.h> using namespace std; int i,n,x,ans,sum; int main(){ while(1){ scanf("%d",&n); if(n==0) break; sum=ans=0; for(i=1;i<=n;i++){ scanf("%d",&x); //printf("%d %d\n",sum,ans); if(x>ans) sum+=(x-ans)*6; else sum+=(ans-x)*4; ans=x; sum+=5; //printf("%d %d\n",sum,ans); } printf("%d\n",sum); } return 0; } 望采纳,谢谢
  • 2楼网友:duile
  • 2021-02-27 13:18
这个问题主要还是一个物理题,相信都坐电梯,但没有仔细研究,它的运行过程就是一个需求: 1、按下x楼层,并记录按下的时间顺序;1.1、当前电梯不在此楼层;1.2、电梯在此楼层; 2、若电梯不在此楼层,先运行至此楼层开门,否则直接开门,消除请求信息; 3、电梯先加速,再匀速,再减速至x楼层; 4、如果去x楼层的途中,遇到有同向的楼层按下,则先停靠在该楼层,然后再进行步骤3; 5、运行至x楼层后,消除当前请求x楼层信息,如果有其他楼层已经按下,则转到最先按下的楼层的方向(中途有其他的请求,顺便带上),如果没有请求,则停止在x楼,等待! 6、两部电梯的话,主要考虑哪个有空闲,只要空闲就优先执行重复以上1~5步骤。 数据结构的话主要有:电梯当前所在楼层,目标楼层x,中途请求系列,是否已完成; 问题是属于比较复杂的那种,还是要自己多思考思考怎么写文档才是,越详细越好,想清楚了,实现应该是比较简单的!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯