操作系统中pv操作用c语言,操作系统,C语言

操作系统

一、选择题(每小题 1.5 分,共 15 分)

1、操作系统有多种类型,允许多个用户将若干个作业提交给计算机集中处

理的操作系统,称为___。

A.批处理操作系统 B.分时操作系统 C.实时操作系统 D.多处理机操作

系统

2、以下解决死锁的方法中,属于死锁避免策略的是___

A.银行家算法 B.资源有序分配法 C.资源分配图化简法 D.撤销进程法

3、进程和程序的本质区别是___

A.存储在内存和外存 B.顺序和非顺序执行机器指令 C.分时使用和独占

使用计算机资源 D.动态和静态特征

4、既考虑了短作业又兼顾了长作业的调度算法是___

A.先进先出调度算法 B.多级反馈调度算法 C.最短作业优先调度 D.定

时轮转法

5、在可变式分区分配方案中,某一作业完成后,系统收回其主存空间,并

与相邻空闲区合并,为此需修改空闲区表,造成空闲区数加 1 的情况是___

A.无上邻空闲区,也无下邻空闲区 B.有上邻空闲区,但无下邻空闲区

C.有下邻空闲区,但无上邻空闲区 D.有上邻空闲区,也有下邻空闲区

6、设备独立性是指用户程序独立于___

A.主机 B.操作系统 C.设备驱动程序 D.物理设备

7、文件系统最基本的目标是

A.按名存取 B.文件共享 C.提高存储空间利用率 D.文件保护

8、OS 向用户提供的接口有很多,通过___用户可以用 open () 打开一

个文件。

A 脱机用户接口 B.联机用户接口 C. 系统调用接口 D.图形用户接口

9、如果某一进程在运行时,因某种原因暂停,此时将脱离运行状态,而进

入___

A.自由状态 B.停止状态 C.阻塞状态 D.静止状态

10、对于记录型信号量,执行一次 signal 操作时,信号量的值为___时进程

应唤醒阻塞队列中进程。

A.大于 0 B.小于 0 C.大于等于 O D.小于等于 0

二填空题 (每空 1 分共 15 分)

1、现代操作系统的主要目标是_________和_________

2、进程由______、______、和______组成,其中______是进程存在的唯一

标识。

3、高级调度又称为_________低级调度又称为_________

4、分页系统中,页表的作用是实现_________到_________的转换。

5、对文件的访问有_________和_________两种方式。

6、DMA 是指允许_________和_________之间直接交换数据的设备。

7、死锁产生的主要原因是资源竞争和_________。

三、简答题(每题 5 分,共 25 分)

1、进程同步需要遵序的原则是什么?

2、死锁产生的必要条件?

3、简述分页和分段的区别。

4、根据缓冲区的数目和使用方式不同,可以把缓冲分成哪几种类型?

5、什么是虚拟存储器?

四、综合题(每题 10 分,共 20 分)

1、有 3 个进程 PA、PB 和 PC 协作解决文件打印问题。PA 将文件记录从磁盘读入主存的缓冲区 1 每执行一次读一个记录;PB 将缓神区 1 的内容复制到缓冲区 2 每执行一次复制一个记录;PC 将缓冲区的内容打印出来,每执行一次打印一个记录。缓冲区的大小和一个记录大小一样。三个进程执行的过程已给出,根据所定义的信号量,把应执行的 PV 操作填入下属方框中,以保证文件的正确打印。

试问:

(1) 该状态是否安全?

(2) 当进程 P2 提出请求 Request(1,2,2,2)后,系统能否将资源分配给它?

(3) 如果系统立即满足 P2 的上述请求,则系统是否立即进入死锁状态?

C 语言

一、选择题(本大题共 20 小题,每题 1 分,共 20 分。在每小题给出的四个选项

中,只有一项是符合题目要求的)

1.下列合法的变量名为

A.3a B.If C.name&1 D.time_1

2.C 语言程序最基本的构成单位是

A.语句 B.函数 C.源程序 D.子程序

3.下列变量的定义中,合法的是

A.int a;b;c; B.int a,b,float C; C.int a,b;float c; D.int a;b,float c;

4.C 语言中,要求运算对象必须为整型的运算符是

A./ B.% C.+ D.*

5.”a”在 C 语言中表示

A.字符串常量 B.函数 C.变量 D.字符常量

6.下列常用转义字符中不正确的是

A.\a B.\t C.\012 D.\z55

7.设有定义 int a,b; 如果要通过 scanf("%d%d”,&a,&b) 语句给变量 a,b

分别得到 10 和 5,下面错误的输入形式

A.10,5 B.10 5 C.105 D.10 5

8.若 a 的原值为 4,则表达式 a*=a-=3 运算后,a 的值是

A.1 B.3 C.4 D.13

9.有数学表达式(x≠y)且(y≥z),则对应的 C 表达式为

A.x≠y| (y>=z)

B.(x!=y)&&(y>=z)

C.(x<>y)||(y>=z)

D. x≠y, y≥z

10.设有定义 char x='6'; 则(x-‘0' )的数据类型为

A,char B.int C.float D.double

11.若有说明: int a[10];则对 a 数组元素的正确引用是

A.a[6-5] B.a(8) C.a[3.5] D.a[10]

12.有如下说明:

int a[10]={1,2,3,4,5,6,7,8,10},*p=a;则数值为 9 的表达式是

A.*(p+8) B.*p+9 C.p+8 D.*p+=9

13.下面程序段的运行结果是

char c[5]=(‘1','2’,\0',’z’,’\0' );

printf(“%$”,c );

A.’1”2' B.12Z C.12 D.“12Z”

14.以下不正确的字符串赋值语句是

A.char *s;s=”1357”; B.char s[ ]=”1357” ; C.char s[10];s=”1357”;

D.char*s="1357";

15.字符串”a\x2 1\\\tp\202q"的长度是

A.16 B.15 C.9 D.7

16.以下正确的函数定义开试是

A.float fun(int x;int y)

B.float fun(int x,int y)

C.float fun(int x;int y);

D.flcat fun(int x,y)

17,函数 f 的返回值类型是

A.与参数 x 的类型相同 B.void 类型 C.int 类型 D.无法确定

f(float x)

{prinf("%d\n",x*x);

}

18.若有如下宏定义:

#define N 2

#define Y(n) N+2 *n

则执行赋值语句 z=2*(N+Y(3)); 后的结果是

A.表达式有误 B.z=30 C.z=20 D.z 无确定值

19.有以下程序

#include

Void main()

{char k; int i;

For(i==1;i<3;i++)

{scanf(“%c”,&k)

Switch(k)

{case’0’:printf(“another\n”);

Case’1’:printf(“number\n”);

}

}

}

程序运行时,从键盘输入:10,程序执行后的输出结果是

A. another B.another C.another D.number

number number number another

another number number

20.以下程序的输出结果是

A-1 B.O C.1 D.2

#include

void main()

{int f(int,int);

int i=2,p;

p=f(i,i=1)

printf("%d",p);

}

int f(int a,int b)

{ int c;

c=a;

if(a>b) c=l;

else if(a==b) c=0;

else c=-1;

return(c);

二、填空题(本大题共 16 小题,每空 1 分,共 16 分)

1.一个 c 程序总是从_________函数开始运行的。

2.结构化程序设计的三种基本结构包括顺序结构、选择结构和______结构。

3.x=5,y=6,则(--x)*(y++)的值为_______

4.复合的赋值表达式 x*=y+5 可展开为_________。

5.写出一个数 m 既能被 3 整除又能被 4 整除的逻辑表达式_______。

6.字符串”hello”在内存中占_______字节的存储空间。

7.下列程序段输出结果_______。

x=9;

while(>7)

{

printf("*");

x--;

}

8.凡是函数中未指定存储类型的局部变量,其默认的存储类型为_________。

9.当调用函数时,实参是一个数组名,则向被调函数传递的是_________。

10.已知字符 B 的 ACSII 码值为 66,以下语句的输出结果是_________。

char ch='C';

perintf("%c%d\n",ch,ch);

11.下列程序的输出结果是_________。

#include

void main()

{

char ch='B’;

if(ch>='A'&&ch<=‘Z’)

ch=ch+32;

printf("%c",ch);

}

12.下列程序的运行结果是_________。

#include

void main()

{

int a[3][3]={1,2,3,4,5,6,7,8,9},I,s=1;

for(i=0;i<=2;i++)

s=s*a[i][i];

printf("s=%d\n",s);

}

13.下列程序的运行结果是_______

include

void main( )

{

int i,j,temp;

int a[]={9,8,7,6,5,4,3,2,1,0}

for(i=Qj=9;i

{temp=a[i];a[i]=a[j];a[j]=temp;}

for(j=0;j<10;j++)

printf("%2d",a[j]);

}

14.下列程序的运行结果是________

#include

void main()

{ char s[]="chianren"

int i=5;

printf("%s\n",s+i);

}

15.下列程序的运行结果是________

#include

void fun( )

{

auto int b=0;

static int c=5;

++b;

c--;

printf("%d",b-c);

}

void main( )

{ int i;

for(i=0;i<2;i++)

fun();

}

16.下列程序的输出结果是________

#include

Void f(int v,int w)

{ int t;

t=v;v=w;w=t;

}

void main( )

{ int x=4,y=6,z=5;

if(x>y) f(x,y);

else if(y>z) f(y,z);

else if(x,z);

printf(“%d,%d,%d\n”,x,y,z);

}

三、程序填空(本大题共 2 小题,每空 2 分,共 14 分)

1.字符串数组 a 和 b 中存放由小到大排列的有序字符串。下面程序实现将数组 a

和 b 合并为数组 c,使合并后的数组 c 仍保持有序,并输出数组 c 的值。在划线

的位置填上相关内容,实现上述功能。

#include

#include

#defire M 4

#defire N 6

main()

{

static char*a[N]={"apple",“coconut",“lemcn","me1on};

static char *b[N]={ "banana",“loquat","mango",“crange","peach”,

“plum" };

char *c[M+N];

int ia=0,ib=0,ig=0;

while (ia

{

if(stremp(a[ia],b[ib]>0) c[ic]=b[ib++];

else c[ic]=a[_______];

ic++;

}

While (ia

While (ib

For(ic=0;ic<_______ printf>

}

下面程序读入100个整数到数组age中, 然后输出下标为偶数且能被2整除的数。

请在下划线处填上相关内容。

main()

{

int i,age[100],*p;

for(i=O;i<100;i++) scanf(“%d”, _______);

p=age;

while(p

{

If(_______) printf(“%d\,”,*p);

P=_______;

}

printf(“%d\n”,aver/10);

}

3.若要使得下面程序输出 XAABXX,请在下划线处填上相关内容。

main ()

{

int a[5]={1,2,3,4,1};

int i;

for (i=0;i<5;i++)

{

switch(_______)

{

case 2:

case 3: putchar(‘A'); _______;

case 4:

case 5: putchar(‘B’);

default: putchar(‘x’);

}

}

}

四、程序设计题(本大题共 3 小题,共 25 分,第 1、2 题每题 8 分,第 3 题 9 分)

1.求“1+1/2+2/3+3/5/8+/..的和 sum,要求输出 sum 不小于 4 时的各项连加式。

2.求 s=a+aa+aaa+....+aaa.....a 之和,其中 a 是一个数字,n 表示 a 的位数。

例如: 2+22+222+2222+22222 (此时 n=5,a=2)

3.递归算法求解并输出斐波那契数列 3~10 项.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值