?? 先進先出算法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 + -