首页 > 编程知识 正文

c语言银行取款编程,c语言取千位数

时间:2023-05-04 01:59:21 阅读:37307 作者:2584

直接上传到代码上了。 两个文件分别是main.c和banker.h main.c

# include stdio.h # include string.h # include ' banker.h '//voidprobealloc (尝试分配进程,资源* RES ) ) Available.C -=res-C; Available.D -=res-D; Allocation[process].A =res-A; Allocation[process].B =res-B; Allocation[process].C =res-C; Allocation[process].D =res-D; Need[process].A -=res-A; Need[process].B -=res-B; Need[process].C -=res-C; Need[process].D -=res-D; //询问分配后感到不安时,回滚分配并返回语音回滚(int process,RESOURCE *res ) { Available.A =res-A; Available.B =res-B; Available.C =res-C; Available.D =res-D; Allocation[process].A -=res-A; Allocation[process].B -=res-B; Allocation[process].C -=res-C; Allocation[process].D -=res-D; Need[process].A =res-A; Need[process].B =res-B; Need[process].C =res-C; Need[process].D =res-D; //安全检查bool SafeCheck () { RESOURCE Work=Available; bool finish [ processes _ number ]={ false,false,false,false}; int i; int j=0; for(I=0; i PROCESSES_NUMBER; I )/if(Finish[I]==false ) /是否有足够的资源分配给此进程if (need [ I ].a=work.aneed [ I ].b=Work.C =Allocation[i].C; Work.D =Allocation[i].D; Finish[i]=true; safe[j ]=i; i=-1; //重新遍历}}//如果所有进程的完成向量为true,则为安全状态,否则为不安全状态for(I=0; i PROCESSES_NUMBER; I ) if(Finish[I]==false ) {返回假; } }返回真; //资源分配请求boolrequest(intprocess,RESOURCE *res ) { //request向量是Need矩阵的对应向量if(RES-a=need(process ) .

equest向量需小于Available向量 if(res->A <= Available.A && res->B <= Available.B && res->C <= Available.C && res->D <= Available.D) { //试探分配 ProbeAlloc(process,res); //如果安全检查成立,则请求成功,否则将分配回滚并返回失败 if(SafeCheck()) { return true; } else { printf("安全性检查失败。原因:系统将进入不安全状态,有可能引起死锁。n"); printf("正在回滚...n"); RollBack(process,res); } } else { printf("安全性检查失败。原因:请求向量大于可利用资源向量。n"); } } else { printf("安全性检查失败。原因:请求向量大于需求向量。n"); } return false;}//输出资源分配表void PrintTable(){ printf("ttt*********资源分配表*********n"); printf("Process Max Allocation Need Availablen"); printf(" A B C D A B C D A B C D A B C Dn"); printf(" P0 %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %dn",Max[0].A,Max[0].B,Max[0].C,Max[0].D,Allocation[0].A,Allocation[0].B,Allocation[0].C,Allocation[0].D,Need[0].A,Need[0].B,Need[0].C,Need[0].D,Available.A,Available.B,Available.C,Available.D); printf(" P1 %d %d %d %d %d %d %d %d %d %d %d %dn",Max[1].A,Max[1].B,Max[1].C,Max[1].D,Allocation[1].A,Allocation[1].B,Allocation[1].C,Allocation[1].D,Need[1].A,Need[1].B,Need[1].C,Need[1].D); printf(" P2 %d %d %d %d %d %d %d %d %d %d %d %dn",Max[2].A,Max[2].B,Max[2].C,Max[2].D,Allocation[2].A,Allocation[2].B,Allocation[2].C,Allocation[2].D,Need[2].A,Need[2].B,Need[2].C,Need[2].D); printf(" P3 %d %d %d %d %d %d %d %d %d %d %d %dn",Max[3].A,Max[3].B,Max[3].C,Max[3].D,Allocation[3].A,Allocation[3].B,Allocation[3].C,Allocation[3].D,Need[3].A,Need[3].B,Need[3].C,Need[3].D); printf(" P4 %d %d %d %d %d %d %d %d %d %d %d %dn",Max[4].A,Max[4].B,Max[4].C,Max[4].D,Allocation[4].A,Allocation[4].B,Allocation[4].C,Allocation[4].D,Need[4].A,Need[4].B,Need[4].C,Need[4].D); printf("n");}int main(){ int ch; printf("先检查初始状态是否安全。n"); if (SafeCheck()) { printf("系统处于安全状态。n"); printf("安全序列是{P%d,P%d,P%d,P%d,P%d}。n",safe[0],safe[1],safe[2],safe[3],safe[4]); } else { printf("系统处于不安全状态。程序将退出...n"); goto over; } do { int process; RESOURCE res; PrintTable(); printf("请依次输入请求分配的进程和对四类资源的请求数量:"); scanf("%d%d%d%d%d",&process,&res.A,&res.B,&res.C,&res.D); if (request(process,&res)) { printf("分配成功。n"); printf("安全序列是{P%d,P%d,P%d,P%d,P%d}。n",safe[0],safe[1],safe[2],safe[3],safe[4]); } else { printf("分配失败。n"); } printf("是否继续分配?(Y/N):"); fflush(stdin); //虽然C标准不支持这种用法,但是VC++支持 ch = getchar(); } while (ch == 'Y' || ch == 'y');over: printf("执行完毕。"); return 0;}

banker.h

#pragma warning(disable:4996)typedef int bool;#define false 0#define true !false//系统中所有进程数量#define PROCESSES_NUMBER 5typedef struct { int A; int B; int C; int D;}RESOURCE;//最大需求矩阵 MaxRESOURCE Max[PROCESSES_NUMBER] ={ {4,1,1,1}, {0,2,1,2}, {4,2,1,0}, {1,1,1,1}, {2,1,1,0}};//已分配资源数矩阵 AllocationRESOURCE Allocation[PROCESSES_NUMBER] ={ {3,0,1,1}, {0,1,0,0}, {1,1,1,0}, {1,1,0,1}, {0,0,0,0}};//需求矩阵RESOURCE Need[PROCESSES_NUMBER] ={ {1,1,0,0}, {0,1,1,2}, {3,1,0,0}, {0,0,1,0}, {2,1,1,0}};//可用资源向量RESOURCE Available = {1,0,2,0};int safe[PROCESSES_NUMBER];

原文链接:https://liuyanzhao.com/2932.html
转载请注明

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。