2019寒假訓練營第二次做業

學習視頻課程

學習筆記博客html

程序題(C語言實現)

GitHub上的倉庫git

熱身題

實現思路
打開輸入輸出文件,用fgetc和fputc函數逐字符將文件內容寫到output.txt中,最後關閉這兩個文件github

實現結果
output文件裏和Request同樣,有了好多好多的記錄。數組

基本題

實現思路
1.定義一個結構體數組,用fscanf將文件讀入並存入結構體數組。
2.統計全部發送方發送的總信息大小,並將結果存入另外一個結構體數組。
3.循環判斷超出閾值的人數和名字,並將名字存入一個二維數組(爲了先輸出黑客的數量),以後按要求輸出人數和分別的名字。服務器

實現結果
成功找出了5個黑客,分別是gmhq,dxjr,cftm,mebk,cnkz
函數

開放題

1.吐槽
方法一要求把全部請求和對應的信息大小都存下來,佔用不少內存,並且其中的服務器名bob更是重複了一萬次...把黑客名存進黑名單也很麻煩,並且輸出有先輸出人數再輸出名字的要求,若反過來能舒服很多。學習

2.個人方法視頻

  • 概述:
    不保存全部請求,但保存整理後每一個發送方及其發送的信息總大小(發送方不重複)。
    每次讀入文件的一行,而後判斷這個發送方以前是否發送過,若沒有則爲其建立一個記錄來保存他發送的信息總大小。以後累計該發送方發送的信息總大小,並判斷他發送的信息總量是否超過了閾值,若超過則輸出他的名字,並將其標記爲黑客,總黑客人數加一。最後關閉文件,輸出黑客總數。
  • 優勢:
    只須要一個結構體一個函數,更加簡練。佔用內存更少並且運行速度有所提升。而且總請求數量和黑客數量都支持小於一萬的任意正整數,使程序更爲靈活。
  • 缺點:
    都放在同一個函數層次不夠分明,不太好理解。沒有嚴格按照題目要求,改成先輸出黑客名字再輸出總個數,但問題不大。依然沒法支持任意正整數的請求數量,最高只能處理一萬個請求。

3.實現:htm

相關文章
相關標籤/搜索