写在前面: 本文为学习《现代操作系统》(第4版)的记录,如有错误,请指正交流。

文章目录

  • 上半部分 1-22题
  • 下半部分 23~42题
  • 编程题部分(略)

上半部分 1-22题


解答
You can go up and down the tree as often as you want using ‘‘…’’. Some of the many paths are
/etc/passwd
/./etc/passwd
/././etc/passwd
/./././etc/passwd
/etc/…/etc/passwd
/etc/…/etc/…/etc/passwd
/etc/…/etc/…/etc/…/etc/passwd
/etc/…/etc/…/etc/…/etc/…/etc/passwd


解答:

Windows的方法是使用文件扩展名。每个扩展名对应于一个文件类型和一些处理该类型的程序。

另一种方法是记住是哪个程序创建了文件并运行该程序。Macintosh就是这样工作的。

The Windows way is to use the file extension. Each extension corresponds to a file type and to some program that handles that type. Another way is to remember which program created the file and run that program. The Macintosh works this way.

解答:

这些系统直接将程序加载到内存中,并从字0(魔数)开始执行。为了避免试图将文件头作为代码执行,魔数是一个分支指令,目标地址正好位于文件头的正上方。这样就可以直接将二进制文件读入新进程的地址空间,并在0运行它,甚至不用知道文件头有多大。笔者注:换句话说,魔数为了跳过文件头,直接跳转到代码部分执行。

These systems loaded the program directly in memory and began executing at word 0, which was the magic number. To avoid trying to execute the header as code, the magic number was a BRANCH instruction with a target address just above the header. In this way it was possible to read the binary file directly into the new process’ address space and run it at 0, without even knowing how big the header was.

解答:

首先,如果没有打开,每次读取时都需要指定要打开的文件的名称。然后,系统将必须为它获取i节点,尽管它可以被缓存。一个很快出现的问题是何时将i节点存回磁盘。不过,它可能会超时。这会有点笨拙,但可能会奏效。

笔者注: 每次读取都要制定文件名称,系统需要为它获取i结点;存回磁盘可能超时。

这里复习一下open 调用的目的: 把文件属性和磁盘地址表装入内存,便于后续调用的快速访问。

i结点的作用是什么呢? i结点 里出来文件属性和文件块的磁盘地址,给定i结点,就能找到文件的所有块。

To start with, if there were no open, on every read it would be necessary to specify the name of the file to be opened. The system would then have to fetch the i-node for it, although that could be cached. One issue that quickly arises is when to flush the i-node back to disk. It could time out, however. It would be a bit clumsy, but it might work.

解答:不。如果你想再次读取文件,只需随机访问字节0。

笔者补充:顺序存储有一个回绕操作,是因为要访问前面的地址时,需要返回到起点(回绕)从头开始遍历。

No. If you want to read the file again, just randomly access byte 0.

解答:

rename调用不会更改创建时间或上次修改的时间,但创建新文件会使它获得当前时间,即创建时间和上次修改时间都会发生改变。另外,如果磁盘快满了,复制可能会失败。

Yes. The rename call does not change the creation time or the time of last modification, but creating a new file causes it to get the current time as both the creation time and the time of last modification. Also, if the disk is nearly full, the copy might fail.


解答:(思考思考)

文件的映射部分必须从页边界开始,长度为整数页。每个映射页都将文件本身用作后备存储。未映射内存使用暂存文件或分区作为备份存储。

The mapped portion of the file must start at a page boundary and be an integral number of pages in length. Each mapped page uses the file itself as backing store. Unmapped memory uses a scratch file or partition as backing store.


解答:(思考思考)
文件命名的时候使用 路径!!! 妙啊。

使用文件名,如/usr/ast/file。虽然它看起来像是一个层次化的路径名,但实际上它只是一个包含嵌入斜杠的名称。

Use file names such as /usr/ast/file. While it looks like a hierarchical path name, it is really just a single name containing embedded slashes.


解答:(思考思考)

一种方法是向read系统调用添加一个额外的参数,该参数指示要从哪个地址读取。实际上,每次读取都有可能在文件中执行查找。这种方案的缺点是(1)在每次读取调用中都会增加一个参数,(2)要求用户跟踪文件指针的位置。

One way is to add an extra parameter to the read system call that tells what address to read from. In effect, every read then has a potential for doing a seek within the file. The disadvantages of this scheme are (1) an extra parameter in every read call, and (2) requiring the user to keep track of where the file pointer is.


解答
". ."组件将搜索移动到/usr,因此…/ast将其放入/usr/ast中。
因此…/ast/x与/usr/ast/x相同。

The dotdot component moves the search to /usr, so …/ast puts it in /usr/ast.
Thus …/ast/x is the same as /usr/ast/x.

11

解答

由于浪费的存储在分配单元(文件)之间,而不是在它们内部,这是外部碎片。它与交换系统或使用纯分段的系统发生的主存外部碎片化完全相似。

Since the wasted storage is between the allocation units (files), not inside them, this is external fragmentation. It is precisely analogous to the external fragmentation of main memory that occurs with a swapping system or a system using pure segmentation.

解答

如果一个数据块在一个连续的分配系统中被损坏,那么只有这个块会受到影响;文件的其余块可以被读取。在链接分配的情况下,无法读取损坏的块;此外,有关从该损坏块开始的所有块的位置数据也将丢失。在索引分配的情况下,只影响损坏的数据块。

If a data block gets corrupted in a contiguous allocation system, then only this block is affected; the remainder of the file’s blocks can be read. In the case of linked allocation, the corrupted block cannot be read; also, location data about all blocks starting from this corrupted block is lost. In case of indexed allocation,only the corrupted data block is affected.


解答

开始传输需要9毫秒。以80 MB/秒的传输速率读取2^13字节需要0.0977毫秒,总共9.0977毫秒。写回去还需要9.0977毫秒。因此,复制一个文件需要18.1954毫秒。压缩16 GB磁盘的一半需要复制8GB的存储空间,即2^20个文件。在每个文件18.1954毫秒时,这需要19079.25秒,即5.3个小时。很明显,在每次删除文件后压缩磁盘不是一个好主意。

It takes 9 msec to start the transfer. To read 2^13 bytes at a transfer rate of 80 MB/sec requires 0.0977 msec, for a total of 9.0977 msec. Writing it back takes another 9.0977 msec. Thus, copying a file takes 18.1954 msec. To compact half of a 16-GB disk would involve copying 8 GB of storage, which is 2^20 files. At 18.1954 msec per file, this takes 19,079.25 sec, which is 5.3 hours.Clearly, compacting the disk after every file removal is not a great idea.

解答:
如果做得对,是有用的。在压缩时,每个文件都应该组织起来,使其所有的块都是连续的,以便快速访问。Windows有一个程序可以对磁盘进行碎片整理和重新组织。鼓励用户定期运行它以提高系统性能。但考虑到它需要多长时间,一个月运行一次可能是一个不错的频率。

If done right, yes. While compacting, each file should be organized so that all of its blocks are consecutive, for fast access. Windows has a program that defragments and reorganizes the disk. Users are encouraged to run it periodically to improve system performance. But given how long it takes, running once a month might be a good frequency.

解答
数码照相机按顺序在非易失性存储介质(例如,闪存)上记录一些照片。当相机复位时,介质被清空。此后,按顺序一次记录一张照片,直到介质已满,此时将照片上载到硬盘上。对于这个应用来说,摄像机内部的一个连续的文件系统(例如图片存储介质)是理想的。

A digital still camera records some number of photographs in sequence on a nonvolatile storage medium (e.g., flash memory). When the camera is reset, the medium is emptied. Thereafter, pictures are recorded one at a time in sequence until the medium is full, at which time they are uploaded to a hard disk. For this application, a contiguous file system inside the camera (e.g., on the picture storage medium) is ideal.

解答:(没看懂啊)

自己做:
10个直接地址, 1024KB /4B=256K个间接地址, 总共 256*1024+10=262154 个块, 文件最大是 262154 * 1024KB =256GB

以下是原答案:

这题答案好像不对!!!数据不对。

间接块可以保存128个磁盘地址。加上10个直接磁盘地址,最大文件有138个块。因为每个块是1MB,所以最大的文件是138MB。

The indirect block can hold 128 disk addresses. Together with the 10 direct disk addresses, the maximum file has 138 blocks. Since each block is 1 MB, the largest file is 138 MB.

解答

对于随机访问,table/indexed和continuous都是合适的,而linkedallocation则不是,因为它通常需要对一个给定的记录进行多次磁盘读取。

For random access, table/indexed and contiguous will be both appropriate, while linked allocation is not ,as it typically requires multiple disk reads for a given record.

解答

由于文件大小变化很大,连续分配将是低效的,当文件增大时需要重新分配磁盘空间,当文件缩小时压缩空闲块。链接和表/索引分配都是有效的;在这两者之间,表/索引分配对于随机访问场景将更有效。

Since the file size changes a lot, contiguous allocation will be inefficient requiring reallocation of disk space as the file grows in size and compaction of free blocks as the file shrinks in size. Both linked and table/indexed allocation will be efficient; between the two, table/indexed allocation will be more efficient for random-access scenarios.


解答

必须有一种方法来指示地址块指针保存数据。如果属性中有一点剩余空间,就可以使用它。这就把所有九个指针都留给了数据。如果每个指针都是k字节,则存储的文件最长可达9k字节。如果属性中没有剩余的位,则第一个磁盘地址可以保存一个无效地址,以将以下字节标记为数据而不是指针。在这种情况下,最大文件是8k字节。

There must be a way to signal that the address-block pointers hold data, rather than pointers. If there is a bit left over somewhere among the attributes, it can be used. This leaves all nine pointers for data. If the pointers are k bytes each, the stored file could be up to 9k bytes long. If no bit is left over among the attributes, the first disk address can hold an invalid address to mark the following bytes as data rather than pointers. In that case, the maximum file is 8k bytes.

解答

埃莉诺说得对。在表中同时拥有两个i-node副本是一个灾难,除非这两个副本都是只读的。最坏的情况是两者同时更新。当i节点被写回磁盘时,无论哪个最后写入的节点都将删除另一个节点所做的更改,磁盘块将丢失。

Elinor is right. Having two copies of the i-node in the table at the same time is a disaster, unless both are read only. The worst case is when both are being updated simultaneously. When the i-nodes are written back to the disk, whichever one gets written last will erase the changes made by the other one, and disk blocks will be lost.

解答

硬链接不需要任何额外的磁盘空间,只需要i节点中的一个计数器来跟踪有多少磁盘空间。符号链接需要空间来存储指向的文件名。

符号链接可以指向其他计算机上的文件,甚至可以通过Internet。硬链接仅限于指向自己分区内的文件。

Hard links do not require any extra disk space, just a counter in the i-node to keep track of how many there are. Symbolic links need space to store the name of the file pointed to. Symbolic links can point to files on other machines,ev en over the Internet. Hard links are restricted to pointing to files within their own partition.

解答

给定文件的硬链接的所有目录项都指向单个i节点

在软链接的情况下,为软链接创建一个新的i节点,该i节点基本上指向要链接的原始文件。

A single i-node is pointed to by all directory entries of hard links for a given file. In the case of soft-links, a new i-node is created for the soft link and this i-node essentially points to the original file being linked.

下半部分 23~42题

解答

磁盘上的块数=4 TB/4 KB=2^30个。因此,每个块地址可以是32位(4字节),最接近的2次幂。因此,每个块可以存储4KB/4B=1024个地址。

笔者理解: 最接近的2次幂,是最小的能够满足寻址的位数。 算出来每个块地址的大小是4B, 一个块大小 是4KB , 问:一个块可以存放多少地址? 小学数学。

The number of blocks on the disk = 4 TB / 4 KB = 2^30. Thus, each block address can be 32 bits (4 bytes), the nearest power of 2. Thus, each block can store 4 KB / 4 = 1024 addresses.

解答

位图需要B位。自由列表需要DF位。如果DF<B,则空闲列表需要更少的比特。或者,如果F/B<1/D,则空闲列表更短,其中F/B是空闲块的分数对于16位磁盘地址,如果有6%(1/16=6.25%)或更少的磁盘可用,可用列表会更短。

评注:只要磁盘快满的时候,空闲块链表方案需要的块才比位图少。

The bitmap requires B bits. The free list requires DF bits. The free list requires fewer bits if DF < B. Alternatively, the free list is shorter if F/B < 1/D, where F/B is the fraction of blocks free. For 16-bit disk addresses, the free list is shorter if 6% or less of the disk is free.

解答

The beginning of the bitmap looks like:
(a) After writing file B: 1111 1111 1111 0000
(b) After deleting file A: 1000 0001 1111 0000
( c) After writing file C: 1111 1111 1111 1100
(d) After deleting file B: 1111 1110 0000 1100

评注:本题可以看出 每次需要写入文件时,都是从最小编号的盘块开始寻找空闲块,比如这里的C.

解答

这根本不是一个严重的问题。修复很简单,只是需要时间。恢复算法是将所有文件中的所有块弄一个列表,并将剩下的地方作为新的空闲列表。

在UNIX中,这可以通过扫描所有i节点来完成。

在FAT文件系统中,由于没有空闲列表,所以不会出现问题。但即使有,要恢复它所要做的就是扫描FAT,寻找空闲的条目。

It is not a serious problem at all. Repair is straightforward; it just takes time. The recovery algorithm is to make a list of all the blocks in all the files and take the complement as the new free list. In UNIX this can be done by scanning all the i-nodes. In the FAT file system, the problem cannot occur because there is no free list. But even if there were, all that would have to be done to recover it is to scan the FAT looking for free entries.

解答
奥利的论文可能没有如他希望那样被备份。备份程序可能跳过当前打开以供写入的文件,因为该文件中的数据状态可能不确定。

简写:正在打开的文件没有被备份

Ollie’s thesis may not be backed up as reliably as he might wish. A backup program may pass over a file that is currently open for writing, as the state of the data in such a file may be indeterminate.


解答

它们必须跟踪磁盘上的文件中最后一次转储的时间。每次转储时,都会向该文件追加一个条目。在最后一次读取文件时记录转储。从那时起更改的任何文件都将被转储。

They must keep track of the time of the last dump in a file on disk. At every dump, an entry is appended to this file. At dump time, the file is read and the time of the last entry noted. Any file changed since that time is dumped.

解答

In (a) and (b), 21 would not be marked. In ©, there would be no change. In
(d), 21 would not be marked.

解答

许多UNIX文件都很短。如果整个文件与i 结点放在同一个块中,那么只需要一个磁盘访问来读取该文件,而不是像现在这样需要两个磁盘访问。即使是较长的文件也会有收益,因为需要的磁盘访问次数会减少一次

Many UNIX files are short. If the entire file fits in the same block as the inode, only one disk access would be needed to read the file, instead of two, as is presently the case. Even for longer files there would be a gain, since one fewer disk accesses would be needed.

问题:这个问题如何纠正?

解答

它不应该发生,但由于某个地方的错误,它可能发生。这意味着某些块出现在两个文件中,也出现在空闲列表中两次。

修复错误的第一步是从空闲列表中删除这两个副本。

下一步必须获取一个空闲块,并在那里复制出现问题的块的内容。

最后,块在其中一个文件中的出现应该更改为引用新获取的块副本。在这一点上,系统再次保持一致。

It should not happen, but due to a bug somewhere it could happen. It means that some block occurs in two files and also twice in the free list. The first step in repairing the error is to remove both copies from the free list. Next a free block has to be acquired and the contents of the sick block copied there. Finally, the occurrence of the block in one of the files should be changed to refer to the newly acquired copy of the block. At this point the system is once again consistent.

解答
分成两部分即可,命中时花费时间h* 1ms,没有命中时需要到磁盘上读取 ,花费时间为(1-h)*40ms

The time needed is h + 40 × (1 − h). The plot is just a straight line.

解答

在这种情况下,最好使用通写高速缓存,因为它会在更新缓存的同时将数据写入硬盘驱动器。这将确保更新的文件始终位于外部硬盘驱动器上,即使用户在磁盘同步完成之前意外拔掉了硬盘驱动器(USB)。

In this case, it is better to use a write-through cache since it writes data to the hard drive while also updating the cache. This will ensure that the updated file is always on the external hard drive even if the user accidentally removes the hard drive before disk sync is completed.

解答
块提前读 不管用,因为 这种情况大多不是顺序存储。

The block read-ahead technique reads blocks sequentially, ahead of their use, in order to improve performance. In this application, the records will likely not be accessed sequentially since the user can input any student ID at a given instant. Thus, the read-ahead technique will not be very useful in this scenario.

解答

实质是两个链表,以-1结尾。

The blocks allotted to f1 are: 22, 19, 15, 17, 21.
The blocks allotted to f2 are: 16, 23, 14, 18, 20.

解答:
磁盘读取时间= 寻道时间+旋转延迟+传送时间 ,其中旋转延迟= 1/2*转一圈的时间

rpm是Revolutions Per Minute的缩写,即转每分,表示设备每分钟的旋转次数,题目中是15000 rpm(转/分钟), 除以60得到 250 转/秒 则 1/250 *1000 = 4ms /转

自己来做:

在15000转/分时,磁盘需要4毫秒才能转一圈。读取k字节的平均访问时间(毫秒)是8+2+(k/262144)×4。对于1kb、2kb和4kb的块,访问时间分别约为10.0153毫秒、10.0305毫秒和10.0610毫秒(几乎没有任何不同)。这些速率分别为99.8472kb/sec、199.3919kb/sec和397.5748kb/sec。

经过计算得到的结果,传输速率和磁盘块大小正相关,多多少少符合下图虚线 磁盘数据率–块大小关系图。

注:
答案给的解析:其中假设磁盘平均寻道时间是6ms,转速是15000rpm,每道 1048576 字节,和这道题有出入,其实算是另外一道题目。

在15000转/分时,磁盘需要4毫秒才能转一圈。读取k字节的平均访问时间(毫秒)是6+2+(k/1048576)×4。对于1kb、2kb和4kb的块,访问时间分别约为6.0039毫秒、6.0078毫秒和6.0156毫秒(几乎没有任何不同)。这些速率分别为170.556kb/sec、340.890kb/sec和680.896kb/sec。

At 15,000 rpm, the disk takes 4 msec to go around once. The average access time (in msec) to read k bytes is then 6 + 2 + (k/1, 048, 576) × 4. For blocks of 1 KB, 2 KB, and 4 KB, the access times are about 6.0039 msec, 6.0078 msec, and 6.0156 msec, respectively (hardly any different). These give rates of about 170.556 KB/sec, 340.890 KB/sec, and 680.896 KB/sec, respectively.

解答
自己做:
50% ,真正的系统所浪费的空间比这个小,因为实际文件大小 存在很大大文件。

注:答案给的是其他的数据计算的结果,块的大小为4KB。
如果所有文件都是1KB,那么每个4KB块将包含一个文件和3KB浪费的空间。不允许尝试将两个文件放入一个块中,因为用来跟踪数据的单位是块,而不是半块。这导致75%浪费空间。实际上,每个文件系统都有大文件以及很多小文件,这些文件使用磁盘的效率更高。例如,考虑到空间效率,32769字节的文件将使用9个磁盘块进行存储其中32769/36864个,占89%。

If all files were 1 KB, then each 4-KB block would contain one file and 3 KB of wasted space. Trying to put two files in a block is not allowed because the unit used to keep track of data is the block, not the semiblock. This leads to 75% wasted space. In practice, every file system has large files as well as many small ones, and these files use the disk much more efficiently. For example, a 32,769-byte file would use 9 disk blocks for storage, given a space efficiency of 32,769/36,864, which is about 89%.

解答

间接块可以保存1024个地址(每个间接块 大小 4KB,指针地址值4B,一个间接块可以有 4KB/4B=1K=1024个地址)。加上10个直接地址,总共有1034个地址。因为每个文件都指向一个4KB的磁盘块,所以最大的文件是4235264字节

The indirect block can hold 1024 addresses. Added to the 10 direct addresses,there are 1034 addresses in all. Since each one points to a 4-KB disk block, the largest file is 4,235,264 bytes

解答

它将所有文件长度之和限制为不大于磁盘。这不是一个非常严重的限制。如果这些文件总的比磁盘大,就没有地方将它们全部存储在磁盘上。

It constrains the sum of all the file lengths to being no larger than the disk. This is not a very serious constraint. If the files were collectively larger than the disk, there would be no place to store all of them on the disk.

解答

i节点有10个指针。单个间接块包含1024个指针。双间接块有1024 ^2个指针。三重间接块有1024 ^3个指针。加起来,我们得到的最大文件大小为1074791434个块,大约是4100.0039GB=4.0039TB

The i-node holds 10 pointers. The single indirect block holds 1024 pointers. The double indirect block is good for 1024^2 pointers. The triple indirect block is good for 1024^3 pointers. Adding these up, we get a maximum file size of 1,074,791,434 blocks, which is about 16.06 GB.

解答

The following disk reads are needed:
directory for /
i-node for /usr
directory for /usr
i-node for /usr/ast
directory for /usr/ast
i-node for /usr/ast/courses
directory for /usr/ast/courses
i-node for /usr/ast/courses/os
directory for /usr/ast/courses/os
i-node for /usr/ast/courses/os/handout.t
In total, 10 disk reads are required.


解答

一些优点如下。

首先,没有磁盘空间浪费在未使用的i节点上。

其次,不可能耗尽i节点。

第三,由于i节点和初始数据可以在一次操作中读取,所以需要较少的磁盘移动。

一些缺点如下。

首先,目录条目现在需要一个32位的磁盘地址,而不是16位的i节点号。

其次,整个磁盘将用于不包含数据的文件(空文件、设备文件)。

第三,由于需要为每个i节点读取整个块,而且i节点将分散在整个磁盘上,因此文件系统完整性检查的速度将变慢。

第四,由于i节点的原因,那些大小经过精心设计以适合块大小的文件将不再适合块大小,从而扰乱了性能

Some pros are as follows. First, no disk space is wasted on unused i-nodes. Second, it is not possible to run out of i-nodes. Third, less disk movement is needed since the i-node and the initial data can be read in one operation. Some cons are as follows. First, directory entries will now need a 32-bit disk address instead of a 16-bit i-node number. Second, an entire disk will be used even for files which contain no data (empty files, device files). Third, file system integrity checks will be slower because of the need to read an entire block for each i-node and because i-nodes will be scattered all over the disk.Fourth, files whose size has been carefully designed to fit the block size will no longer fit the block size due to the i-node, messing up performance

编程题部分(略)






《现代操作系统》(第4版)文件系统 课后习题解答相关推荐

  1. 计算机操作系统【慕课版】课后习题解答

    第三章 处理机调度与死锁 一.简答题 1.高级调度与低级调度的主要任务是什么?为什么要引入中级调度? 1)高级调度的主要任务是将外存的作业调入内存,又称作业调度: 低级调度的主要任务数为内存中处于就绪 ...

  2. 《视觉SLAM十四讲 第二版》课后习题

    本文为<视觉SLAM十四讲>(第二版)的课后习题解答,为本人学习时参考着网上的资源所写的答案,可能有所纰漏,希望大家指出. 文章目录 第1讲 预备知识 第2讲 初始SLAM 第3讲 三维空 ...

  3. [Operating.System.Concepts(9th,2012.12)].Abraham.Silberschatz.文字版(恐龙书——操作系统概念 原书第九版)课后习题 参考答案

    目录 Chap01 导论 Chap02 OS结构 Chap03 进程 Chap04 线程 Chap05 同步(Synchronization) Chap06 CPU调度 Chap07 死锁 Chap0 ...

  4. Web程序设计—ASP.NET实用网站开发(第三版)课后习题答案

    Web程序设计-ASP.NET实用网站开发(第三版)课后习题答案 (沈士根.叶晓彤编著-清华大学出版社) 第一章 一.填空题: 1.NET Framework 主要包括 (CLR)和(.NET Fra ...

  5. C语言程序设计教程(第三版)课后习题5.7

    C语言程序设计教程(第三版)课后习题5.7 语言学习从菜鸟开始 描述 给出一个不多于5位的整数,要求1.求出它是几位数2.分别输出每一位数字3.按逆序输出各位数字,例如原数为321,应输出123 输入 ...

  6. C语言程序设计教程(第三版)课后习题6.1

    C语言程序设计教程(第三版)课后习题6.1 语言学习从菜鸟开始 描述 输入两个正整数m和n,求其最大公约数和最小公倍数. 输入 两个整数 输出 最大公约数,最小公倍数 输入样例 1 5 7 输出样例 ...

  7. 琼斯是计算体心立方弹性模量_固体物理 课后习题解答(黄昆版)第二章

    固体物理 课后习题解答(黄昆版)第二章 (5页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 4.9 积分 ???????????? 黄昆 固体物理 习题解 ...

  8. 数据结构(C语言版 第2版)课后习题答案 严蔚敏 等 编著

    数据结构(C语言版 第2版)课后习题答案 严蔚敏 等 编著,仅供参考,还是自己认真做了再看 第1章  绪论 5.选择题 (1)在数据结构中,从逻辑上可以把数据结构分成(  C ). A.动态结构和静态 ...

  9. 1097: C语言程序设计教程(第三版)课后习题10.4

    1097: C语言程序设计教程(第三版)课后习题10.4 1.描述 有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数,见图.写一函数:实现以上功能,在主函数中输入n个数和输出调整后的 ...

最新文章

  1. Java数组常用操作,创建,比较,排序,检索,打印数组;copyOf,equals,sort,toString
  2. 《C++ 开发从入门到精通》——1.3 使用Visual Studio 2010
  3. Centos 安装Eclipse报错java.lang.UnsatisfiedLinkError: Could not load SWT library
  4. Poj 1011 UVA - 307 Sticks
  5. 触发器及其应用实验报告总结_双面喷绘材料的分类及其应用,超全总结!(建议收藏)...
  6. SpringIOC原理
  7. hdu 5233 Gunner II
  8. 三、RabbitMQ消息发布时的权衡
  9. 布丰投针试验的仿真和误差估计
  10. Python IO模型
  11. 一款免费在线文字识别(OCR)工具
  12. sersync+rsync的热备份研究(热备+断点续传)
  13. uniapp中后端返回的数字字符串如何在页面快速计算
  14. BIGEMAP下载等高线(高程)使用教程
  15. python需要cpu还是显卡问题_如果研究深度学习方向,是CPU更重要还是显卡更重要?...
  16. 活动实录 | 京东金融PE谈如何颠覆应用运维认知
  17. SVN 已提交版本回退
  18. 前端学习之路---CSS
  19. 虚拟机Hadoop localhost:8080无法打开解决办法
  20. IOC/DI与AOP概念的理解

热门文章

  1. 常见的java异常——java.lang.IllegalStateException: Ambiguous handler methods mapped for HTTP path...
  2. [团队项目]后续安排 Github
  3. 《构建之法》之第8、9、10章读后感
  4. 网站安全扫描工具--Netsparker的使用
  5. linux 文泉驿正黑字体,文泉驿字体系列打包下载-文泉驿字体下载-西西软件下载...
  6. python代码阅读技巧_30个Python程序员需要知道的编程技巧,可以让你的工作事半功倍!...
  7. html灵活响应 图片设置,jQuery轻量级响应式图片轮播插件ResponsiveSlides.js(仅1kb)
  8. 使用pyinstaller打包python_使用pyinstaller打包Python项目,python
  9. 【Matlab】利用 LMI 解矩阵不等式方程
  10. shell排序-c语言