学习视频课程
程序题(C语言实现)
热身题
实现思路:
打开输入输出文件,用fgetc和fputc函数逐字符将文件内容写到output.txt中,最后关闭这两个文件
实现结果:
output文件里和Request一样,有了好多好多的记录。
基本题
实现思路:
1.定义一个结构体数组,用fscanf将文件读入并存入结构体数组。
2.统计所有发送方发送的总信息大小,并将结果存入另一个结构体数组。
3.循环判断超出阈值的人数和名字,并将名字存入一个二维数组(为了先输出黑客的数量),之后按要求输出人数和分别的名字。
实现结果:
成功找出了5个黑客,分别是gmhq,dxjr,cftm,mebk,cnkz
开放题
1.吐槽:
方法一要求把所有请求和对应的信息大小都存下来,占用很多内存,而且其中的服务器名bob更是重复了一万次...把黑客名存进黑名单也很麻烦,而且输出有先输出人数再输出名字的要求,若反过来能舒服不少。
2.我的方法:
- 概述:
不保存所有请求,但保存整理后每个发送方及其发送的信息总大小(发送方不重复)。
每次读入文件的一行,然后判断这个发送方之前是否发送过,若没有则为其创建一个记录来保存他发送的信息总大小。之后累计该发送方发送的信息总大小,并判断他发送的信息总量是否超过了阈值,若超过则输出他的名字,并将其标记为黑客,总黑客人数加一。最后关闭文件,输出黑客总数。 - 优点:
只需要一个结构体一个函数,更加简练。占用内存更少而且运行速度有所提高。并且总请求数量和黑客数量都支持小于一万的任意正整数,使程序更为灵活。 - 缺点:
都放在同一个函数层次不够分明,不太好理解。没有严格按照题目要求,改为先输出黑客名字再输出总个数,但问题不大。依然无法支持任意正整数的请求数量,最高只能处理一万个请求。
3.实现: