c语言编写进程的创建与撤销

c语言编写进程的创建与撤销,第1张

struct pb

{int n

int k

int cha}

typedef struct pb PCB

PCB a[10]void creat()

{static int pi=1

int k,l=0,m

printf("plase input n0:")

scanf("%d",&m)

for(k=1k<=10k++)

if (a[k].n==m)

l=1

if (l==1)

{printf("error!\n")

creat()}

else

{a[pi].n=m

printf("\n")

printf("plase input k0:")

scanf("%d",&a[pi].k)

printf("\n")

a[pi++].cha=4}}void destory()

{int i,num,k=0

printf(" plase input destory number:")

scanf("%d",&num)

for(i=1i<=10i++)

if(a[i].n==num) k=i

if(k!=0)

{a[k].n=0a[k].k=0a[k].cha=0}

else

printf("No have this destory number!\n")}void wakeup()

{int i,k,m,l

printf("请输入n0:")

scanf("%d",&m)

for(k=1k<=10k++)

if (a[k].n==m)

l=k

a[l].cha=1 /*唤醒->静止就绪*/}void active()

{int i,k,m,l

printf("请输入n0:")

scanf("%d",&m)

for(k=1k<=10k++)

if (a[k].n==m)

l=k

a[l].cha=3/*激活->活动就绪*/}void dse()

{int i,k,m,l

printf("请输入n0:")

scanf("%d",&m)

for(k=1k<=10k++)

if (a[k].n==m)

l=k

a[l].cha=4 /*阻塞->活动阻塞*/}void swpend()

{int i,k,m,l

printf("请输入n0:")

scanf("%d",&m)

for(k=1k<=10k++)

if (a[k].n==m)

l=k

a[l].cha=2/* 挂起->静止阻塞 */}void look()

{int i

printf("\t\t�pcb n0 k0 cha\n")

for (i=1i<=10i++)

printf("\t\t%d\t%d\t%d\t%d\n",i,a[i].n,a[i].k,a[i].cha)

printf("\t1--静止就绪 2--静止阻塞 3--活动就绪 4--活动阻塞 5--运行\n")}void zt() /* 改变状态*/

{int i,k,m,l

printf("请输入n0:")

scanf("%d",&m)

for(k=1k<=10k++)

if (a[k].n==m)

l=k

printf("请输入当前状态:")

scanf("%d",&a[l].cha)

look()}void yxs() /*改变优先数*/

{int i,k,m,l

printf("请输入此棚春n0:")

scanf("%d",&m)

for(k=1k<=10k++)

if (a[k].n==m)

l=k

printf("请输入优先数:")

scanf("%d",&a[l].k)

look()}main()

{int d

clrscr()

do

{

printf("\t\t*************** CHOICE *****************\n")

printf("\t\t* 1--------------进程创建森耐 *\n")

printf("\t\t* 2--------------进和饥程撤消 *\n")

printf("\t\t* 3--------------阻塞 *\n")

printf("\t\t* 4--------------唤醒 *\n")

printf("\t\t* 5--------------挂起 *\n")

printf("\t\t* 6--------------激活 *\n")

printf("\t\t* 7--------------查看状态 *\n")

printf("\t\t* 8--------------改变状态 *\n")

printf("\t\t* 9--------------改变优先数 *\n")

printf("\t\t* 0--------------退出 *\n")

printf("\t\t****************************************\n")

printf("\t\t�请选择(0-9):")

scanf("%d",&d)

printf("\n")

switch(d)

{

case 1: creat()break

case 2: destory()break

case 3: dse()break

case 4: wakeup()break

case 5: swpend()break

case 6: active()break

case 7:look()break

case 8:zt()break

case 9:yxs()break

case 0: exit(0)

}

}

while(d!=0)

}

没有反应的原因有很多种。比如错误输入,类型错误,代码逻辑错误。不禅运同的情况应该分开分析。

2.

例如 scanf("%lf %lf\n"森慎,&x,&e)

这样的语句在回车后就没有反应,必须输入\n后才会有反应。

因为非输出控制符必须原样输入。\n在scanf函数当中并不是控制符,这里没当成换行贺春梁符使用。用scanf 不要加入“\n”非输入控制符,系统在运行时会自动换行。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12337101.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存