c語言模擬電梯
這個問題主要還是一個物理題,相信都坐電梯,但沒有仔細研究,它的運行過程就是一個需求:
1、按下X樓層,並記錄按下的時間順序;1.1、當前電梯不在此樓層;1.2、電梯在此樓層;
2、若電梯不在此樓層,先運行至此樓層開門,否則直接開門,消除請求信息;
3、電梯先加速,再勻速,再減速至X樓層;
4、如果去X樓層的途中,遇到有同向的樓層按下,則先停靠在該樓層,然後再進行步驟3;
5、運行至X樓層後,消除當前請求X樓層信息,如果有其他樓層已經按下,則轉到最先按下的樓層的方向(中途有其他的請求,順便帶上),如果沒有請求,則停止在X樓,等待!
6、兩部電梯的話,主要考慮哪個有空閑,只要空閑就優先執行重復以上1~5步驟。
數據結構的話主要有:電梯當前所在樓層,目標樓層X,中途請求系列,是否已完成;
問題是屬於比較復雜的那種,還是要自己多思考思考怎麼寫文檔才是,越詳細越好,想清楚了,實現應該是比較簡單的!
⑵ c語言中break和continue的區別
break 語句很重要,用得非常多,初學者一定要掌握。continue 語句雖然沒有 break 語句用得多,但也經常用到,而且不可或缺,需要用到 continue 的時候其他語句是無法替代的。
前面已經介紹過 break 語句,它不僅可以跳出「循環體」,還可以跳出 switch。但事實上,break 也只能用於這兩種情況。break 語句不能用於循環語句和 switch 語句之外的任何其他語句中。
不管是 for 循環,還是 while 循環,或者是 do…while 循環,都可以用 break 跳出來,但是 break 只能跳出一層循環。當有多層循環嵌套的時候,break只能跳出「包裹」它的最裡面的那一層循環,無法一次跳出所有循環。
同樣,在多層 switch 嵌套的程序中,break 也只能跳出其所在的距離它最近的 switch。但多層 switch 嵌套實在是少見。
continue 的用法十分簡單,其作用為結束本次循環,即跳過循環體中下面尚未執行的語句,然後進行下一次是否執行循環的判定。
continue和break的區別
continue 語句和 break 語句的區別是,continue 語句只結束本次循環,而不是終止整個循環。break 語句則是結束整個循環過程,不再判斷執行循環的條件是否成立。而且,continue 只能在循環語句中使用,即只能在 for、while 和 do…while 中使用,除此之外 continue 不能在任何語句中使用。
所以,再次強調:continue 不能在 switch 中使用,除非 switch 在循環體中。此時 continue 表示的也是結束循環體的本次循環,跟 switch 也沒有關系。
例如,下面為使用switch模擬電梯運行的代碼:
# include <stdio.h>
int main(void)
{
int val; //variable的縮寫, 「變數」的意思
printf("請輸入您想去的樓層:");
while (1)
{
scanf("%d", &val);
switch (val)
{
case 1:
printf("1層開!\n");
break; //跳出switch
case 2:
printf("2層開!\n");
break; //跳出switch
case 3:
printf("3層開!\n");
break; //跳出switch
default:
printf("該層不存在, 請重新輸入:");
continue; //結束本次while循環
}
break; //跳出while
}
return 0;
⑶ 關於電梯的C語言應用題求解答
#include<stdio.h>
intmain()
{
intn;
while(~scanf("%d",&n)&&n)
{
intlast=0;
intcur;
intt=0;
while(n--)
{
scanf("%d",&cur);
if(cur>last)t+=cur-last;
elset+=last-cur;
last=cur;
}
printf("%.2lf ",t*5.9);
}
return0;
}
⑷ 【C語言編程題】電梯時間問題
#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;
}
望採納,謝謝