📄 先进先出算法1.c
字号:
main ()
{
int cunchufangwenyemian[4];/*存储访问的页面*/
int cunchujisuanguocheng[3][4];/*存储计算过程;*/
int cunchushifoumingzhong[4];/*存储是否被命中*/
int lie,hang;/*循环变量列,行*/
int shifoumingzhong;/*在前一列的位置,没有则为0;*/
int wenmenyemiangeshu=4;/*访问页面的个数*/
/*第一步,初始化*/
/*输入访问的页面,存到存储访问的页面的数组中*/
for (lie=0;lie<4;lie++)
{
printf("\n请输入第%d个页面:",lie);
scanf("%d",&cunchufangwenyemian[lie]);
}
/*初始化计算过程数组*/
for (lie=0;lie<4;lie++)
{
for(hang=0;hang<3;hang++)
{
cunchujisuanguocheng[hang][lie]=-1;
}
}
/*初始化是否没有命中的数组*/
for (lie=0;lie<4;lie++)
{
cunchushifoumingzhong[lie]=0;
}
/*第二步,计算*/
/*察看是否命中*/
for (wenmenyemiangeshu=0;wenmenyemiangeshu<4;wenmenyemiangeshu++)
{
/*对于某一列进行处理*/
lie=wenmenyemiangeshu;
if (lie==0) /*如果为第一列*/
{
cunchujisuanguocheng[0][lie]= cunchufangwenyemian[lie]; /*将页面落下来*/
cunchushifoumingzhong[0]=0; /*是否命中为0,不命中*/
} else
{/*如果不为第一列*/
shifoumingzhong=0; /*假设没命中*/
for(hang=0;hang<3;hang++)
{
if ( cunchujisuanguocheng[hang][lie-1]== cunchufangwenyemian[lie])
{
shifoumingzhong=hang+1;/*如果相同,则是否命中为命中的位置*/
}
}
cunchushifoumingzhong[lie]=shifoumingzhong;/*存储命中位置*/
}
if (lie!=0)
{
if ((shifoumingzhong!=0))/*是否命中 */
{/*如果命中,则不变*/
for(hang=0;hang<3;hang++)
{
cunchujisuanguocheng[hang][lie]=cunchujisuanguocheng[hang][lie-1];/*将上一列复制过来*/
}
} else
{/*如果没有命中,则向下移一位,新的进来*/
for(hang=2;hang>0;hang--)
{
cunchujisuanguocheng[hang][lie]= cunchujisuanguocheng[hang-1][lie-1];/*将上一列逐个下移复制过来*/
}
cunchujisuanguocheng[0][lie]=cunchufangwenyemian[lie];/*最上面的等于新进来的*/
}
}
}
/*第三步,输出*/ /*输出访问序列*/
for (lie=0;lie<4;lie++)
{
printf("%d ",cunchufangwenyemian[lie]);
}
printf("\n"); /*输出计算过程*/
for (hang=0;hang<3;hang++)
{
for(lie=0;lie<4;lie++)
{
printf("%d ",cunchujisuanguocheng[hang][lie]);
}
printf("\n");
} /*输出是否命中*/
for (lie=0;lie<4;lie++)
{
printf("%d ",cunchushifoumingzhong[lie]);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -