《使用Linux环境下C语言编程位视图实现500行500列的实验.doc》由会员分享,可在线阅读,更多相关《使用Linux环境下C语言编程位视图实现500行500列的实验.doc(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、使用Linux环境下C语言编程,实现随机数的产生和数组的初始化。具体的实例如下。位示图方法模拟磁盘块的分配与回收。题目的描述:1. 要求在LINUX环境用C语言编程2. 假设有一个500行500列的矩阵来表示磁盘块,状态位是1表示已经分配出去,状态位是0表示空闲块3. 给这个矩阵用随机函数初始化,让其布满0和14. 写程序统计有多少个空闲块?5. 有一个程序文件要申请20个磁盘块,能否分配?如果可以分配,给出分配块的块号地址,块号=字号500+位号,并修改位示图,块号从0开始编址。6. 要回收第300块和第580块,如何实现?给出位示图修改的程序#include #include #inclu
2、de #define row 500#define col 500unsigned int new_rand () int fd; unsigned int n = 0; fd = open (/dev/urandom, O_RDONLY); if (fd 0) read (fd, &n, sizeof (n); close (fd); return n; int statistics_free(unsigned int wst)int sum_free=0;/记录空闲块个数,并初始化int i_row=0;int i_col=0;for(;i_rowrow;i_row+)for(i_col=
3、0;i_col 0) unsigned int r; int i; for (i = 0; i 512; i+) read (fd, &r, sizeof (r); ticks += r; close (fd); srand (ticks); unsigned int wstrowcol; /初始化数组为0,1 for(;i_rowrow;i_row+) for(i_col=0;i_colstatistics_free(wst)printf(The space dont enough);return;printf(The space address like this:n);for(;i_ro
4、wrow;i_row+)for(i_col=0;i_col0&wsti_rowi_col=0)wsti_rowi_col=1;ask-;/计算当前的分配块号的地址address=i_row*row+i_col;printf(%d ,address);else if(ask=0)printf(nThe ask had request,the array is changed:n);for(t_row=0;t_rowrow;t_row+)for(t_col=0;t_colrow-1)printf(Your ask to free space dont find.);return;wstt_rowt_col=0;printf(nThe ask had request,the array is changed:n);for(r_row=0;r_rowrow;r_row+)for(r_col=0;r_colcol;r_col+)printf(%d ,wstr_rowr_col);printf(n);printf(n); 部分参考资料来自:3