L1-043 阅览室 (C语言)
生活随笔
收集整理的這篇文章主要介紹了
L1-043 阅览室 (C语言)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
天梯圖書閱覽室請你編寫一個簡單的圖書借閱統計程序。當讀者借書時,管理員輸入書號并按下S鍵,程序開始計時;當讀者還書時,管理員輸入書號并按下E鍵,程序結束計時。書號為不超過1000的正整數。當管理員將0作為書號輸入時,表示一天工作結束,你的程序應輸出當天的讀者借書次數和平均閱讀時間。
注意:由于線路偶爾會有故障,可能出現不完整的紀錄,即只有S沒有E,或者只有E沒有S的紀錄,系統應能自動忽略這種無效紀錄。另外,題目保證書號是書的唯一標識,同一本書在任何時間區間內只可能被一位讀者借閱。
輸入格式:
輸入在第一行給出一個正整數N(≤10),隨后給出N天的紀錄。每天的紀錄由若干次借閱操作組成,每次操作占一行,格式為:
書號([1, 1000]內的整數)?鍵值(S或E)?發生時間(hh:mm,其中hh是[0,23]內的整數,mm是[0, 59]內整數)
每一天的紀錄保證按時間遞增的順序給出。
輸出格式:
對每天的紀錄,在一行中輸出當天的讀者借書次數和平均閱讀時間(以分鐘為單位的精確到個位的整數時間)。
輸入樣例:
3 1 S 08:10 2 S 08:35 1 E 10:00 2 E 13:16 0 S 17:00 0 S 17:00 3 E 08:10 1 S 08:20 2 S 09:00 1 E 09:20 0 E 17:00輸出樣例:
2 196 0 0 1 60分析: 首先我們要清楚:每一天數據都要清零,在輸入數據時可以使用while(多組輸入),防止第一次的 書號已經為0的情況;在借出和借入是進行標記。
#include <stdio.h> #include <string.h> int main() {int x,y,c,i,j,sum=0,s=0,n,b[1010];char a[5];scanf("%d",&n);for(i=0;i<1005;i++) b[i]=-1;for(j=1;j<=n;j++){while(1){scanf("%d %s %d:%d",&x,a,&y,&c);if(x==0){if(s!=0)printf("%d %.0f\n",s,(double)sum/s);elseprintf("0 0\n");sum=0;s=0;break;}else{if(a[0]=='S') b[x]=y*60+z;else if(a[0]=='E'&&b[x]!=-1){s++;sum=sum+y*60+c-b[x] ;b[x]=-1;}}}}return 0; }?
總結
以上是生活随笔為你收集整理的L1-043 阅览室 (C语言)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Word 高效办公,三步搞定活动策划书排
- 下一篇: 简单实现电影院选座效果