四川省第34次计算机二级c语言.docx

上传人:b****2 文档编号:17771586 上传时间:2023-08-03 格式:DOCX 页数:20 大小:21.14KB
下载 相关 举报
四川省第34次计算机二级c语言.docx_第1页
第1页 / 共20页
四川省第34次计算机二级c语言.docx_第2页
第2页 / 共20页
四川省第34次计算机二级c语言.docx_第3页
第3页 / 共20页
四川省第34次计算机二级c语言.docx_第4页
第4页 / 共20页
四川省第34次计算机二级c语言.docx_第5页
第5页 / 共20页
四川省第34次计算机二级c语言.docx_第6页
第6页 / 共20页
四川省第34次计算机二级c语言.docx_第7页
第7页 / 共20页
四川省第34次计算机二级c语言.docx_第8页
第8页 / 共20页
四川省第34次计算机二级c语言.docx_第9页
第9页 / 共20页
四川省第34次计算机二级c语言.docx_第10页
第10页 / 共20页
四川省第34次计算机二级c语言.docx_第11页
第11页 / 共20页
四川省第34次计算机二级c语言.docx_第12页
第12页 / 共20页
四川省第34次计算机二级c语言.docx_第13页
第13页 / 共20页
四川省第34次计算机二级c语言.docx_第14页
第14页 / 共20页
四川省第34次计算机二级c语言.docx_第15页
第15页 / 共20页
四川省第34次计算机二级c语言.docx_第16页
第16页 / 共20页
四川省第34次计算机二级c语言.docx_第17页
第17页 / 共20页
四川省第34次计算机二级c语言.docx_第18页
第18页 / 共20页
四川省第34次计算机二级c语言.docx_第19页
第19页 / 共20页
四川省第34次计算机二级c语言.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

四川省第34次计算机二级c语言.docx

《四川省第34次计算机二级c语言.docx》由会员分享,可在线阅读,更多相关《四川省第34次计算机二级c语言.docx(20页珍藏版)》请在冰点文库上搜索。

四川省第34次计算机二级c语言.docx

四川省第34次计算机二级c语言

二级(C与C++语言)笔试试卷

时间:

2011年4月16日

上午9:

00—11:

00

第一部分

软件技术基础

(共15分)

一、是非判断题(每小题1分,共10分)

(判断下列各题是否正确,如正确,在客观答题纸上对应编号选A,否则选B)

1.作业与进程的主要区别是前者由用户提交,后者是由系统自动生成。

(A)

2.从循环链表中任意一个结点出发都能访问到整个链表。

(A)

3.如果分时操作系统的时间片一定,那么用户数越少,则响应时间越长。

(A)

4.队列在操作系统的各种资源请求排队及数据缓冲区管理中广泛使用。

(A)

5.死锁产生的根本原因是操作系统能够提供的资源比请求该资源的进程数少。

(B)

分析:

死锁产生原因:

争夺共享资源;进程推进顺序不当

6.虚拟设备技术能将独占设备转换为可共享的设备,提高资源利用率。

(A)

7.链栈与顺序栈相比,有一个明显的优点是通常不会出现栈满的情况。

(A)

8.软件维护是长期的过程,交付使用的软件仍然需要排错、修改和扩充。

(A)

9.墨盒测试要求测试人员根据程序内部逻辑结构设计或选择测试用例。

(B)

分析:

白盒测试才是根据程序内部逻辑结构设计测试用例,黑盒测试是功能测试

10.软件设计时,应力求增加模块的耦合,减少模块间的内聚。

(B)

分析:

软件设计时,应力求增加模块的内聚,减少模块间的耦合

二、选择题(每小题1分,共5分)

1.设已将元素a1、a2、a3依次入栈,元素a4正等待进栈。

那么下列4个序列中不可能出现的出栈序列是(A)。

11(A)a3、a1、a4、a2(B)a3、a2、a4、a1

(C)a3、a4、a2、a1(D)a4、a3、a2、a1

2.以下哪一个不是操作系统的特征(B)。

12(A)并发(B)分解(C)共享(D)虚拟

3.下列的进程状态变化中,(C)变化是不可能发生的。

13(A)运行就绪(B)运行等待(C)等待运行(D)等待就绪

4.很好地解决了碎片问题的存储管理方法是(D)。

14(A)多重分区管理(B)段式存储管理(C)可变分区管理(D)页式存储管理

5.作业从进入后备队列到被调度程序选中的时间间隔称为(B)。

15(A)周转时间(B)等待时间(C)响应时间(D)触发时间

第二部分

C与C++语言程序设计

(共85分)

一、单项选择题(每小题1分,共10分)

1.以下合法的字符常量是(C)。

16(A)“a”(B)‘\72’(C)‘\0x12’(D)‘ab’

2.以下程序的结果是(B)。

#include"stdio.h"

voidmain()

{

unsignedinta=3,b=10;

printf("%d\n",a<<2|b>>1);

}

17(A)1(B)13(C)12(D)5

3.以下程序的输出结果是(D)。

#include"stdio.h"

voidmain()

{

inta=-1,b=4,k;

k=(++a)&&!

(b--<=0);

printf("%d%d%d\n",k,a,b);

}

18(A)104(B)103(C)003(D)004

4.以下程序的输出结果是(C)。

#include

voidmain()

{

charp[20]={'a','b','c','d'},q[]="abc",r[]="abcde";

strcpy(p+strlen(q),r);

strcat(p,q);

printf("%d%d\n",sizeof(p),strlen(p));

}

19(A)209(B)99(C)2011(D)1111

5.下列对C语言字符数组的描述中错误的是(C)。

20(A)字符数组可以存放字符串

(B)字符数组的字符串可以整体输入、输出

(C)可以在程序中用赋值运算符“=”对字符数组进行整体赋值

(D)不可以用关系运算符对字符数组中的字符串进行比较

6.下述程序的输出结果是(D)。

#include"stdio.h"

voidmain()

{

inta[]={7,4,6,3,10};

intm=10,k,*ptr=&a[0];

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

m=*(ptr+k)

*(ptr+k):

m;

printf("%d\n",m);

}

21(A)10(B)4(C)6(D)3

7.有如下程序

#include"stdio.h"

voidmain()

{

inta=2,b=-1,c=2;

if(a

if(b<0)c=0;

else

c++;

printf("%d\n",c);

}

该程序的输出结果是(C)。

22(A)0(B)1(C)2(D)3

8.根据下面的结构体类型及其结构数组的定义,值等于‘A’的表达式是(D)。

structseason

{

charname[10];

intday;

};

structseasons[4]={“Spring”,90,”Summer”,91,”Autumn”,92,”Winter”,92};

23(A)s[3].name[0](B)s[3].name

(C)s[2].name(D)s[2].name[0]

9.运行以下程序的输出结果为(B)。

#include"stdio.h"

#defineR1+2

#defineS(r)r*r

#defineV(r)S(r)*R

voidmain()

{

intr1=1+2;

printf("%d",V(r1));

}

24(A)27(B)11(C)9(D)7

10.以下不能对二维数组a进行正确初始化的语句是(A)。

25(A)inta[2][3]={{1,2},{3,4},{5,6}};

(B)inta[][3]={{1,2},{0}};

(C)inta[2][3]={0};

(D)inta[][3]={1,2,3,4,5,6};

二、读程序回答问题(每个选择3分,共45分)

1.读下面程序并回答问题:

#include"stdio.h"

voidmain()

{

intx=1,y=0,a=0,b=0;

switch(x)

{

case1:

switch(y)

{

case0:

a++;break;

case1:

b++;break;

}

case2:

a++;b++;break;

}

printf("%d,%d\n",a,b);

}

(1)程序的运行结果为(A)。

26(A)2,1(B)1,2(C)1,1(D)0,0

(2)将程序中的switch(x)更改为switch(x!

=1),其程序运行结果是(D)。

27(A)2,1(B)1,2(C)1,1(D)0,0

2.读下面程序并回答问题:

#include"stdio.h"

#include"string.h"

voidabc(char*name[],intlen)

{

char*temp;inti,j,k;

for(i=0;i

{

k=i;

for(j=i+1;j

if(strcmp(name[k],name[j])>0)k=j;

if(i!

=k)

{temp=name[i];name[i]=name[k];name[k]=temp;}

}

}

voidmain()

{

staticchar*name[]={"turboc","fortan","basic","forbase","java"};

inti,n=5;

abc(name,n);

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

printf("%c",*name[i]);

printf("\n");

}

函数abc的功能是(B)。

28(A)按字符排序(B)按字符串排序

(C)交换字符串(D)字符串倒序

程序的运行结果是(C)。

29(A)tfbfj(B)turbo(C)bffjt(D)java

3.读下面程序并回答问题:

#include"stdio.h"

intfunc(intx)

{

inty=0;

staticintz=3;

x=z++,y++;

returnx;

}

voidmain()

{

inta=2,i,b;

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

b=func(a++);

printf("%d\n",b);

}

该程序运行的结果是(C)。

30(A)2(B)3(C)4(D)5

4.有下列程序(考点:

函数(地址参数)、指针运算)

#include"stdio.h"

inttemp;

voidmain()

{

intfun(intn);

intnum,sum;

num=5684;

temp=num;

sum=fun(num);

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

}

intfun(intn)

{

intremind;

staticintsum=0;

if(n>=10)

fun(n/10);

remind=n%10;

sum+=remind;

if(temp>n)

printf("%d+",remind);

else

printf("%d",remind);

returnsum;

}

(1)程序中的fun函数被调用次数为(C)。

31(A)2(B)3(C)4(D)5

(2)程序的输出结果为(A)。

32(A)5+6+8+4=23(B)5+6+8+4+=23(C)4+8+6+5+=23(D)4+8+6+5=23

5.读下面程序并回答问题。

#include"stdio.h"

charx[4][8]={"First","Second","Third","Four"};

inta[4]={6,7,6,5};

voidmain()

{

inti;

chary[4][8];

FILE*fp;

fp=fopen("TEST.txt","w");

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

fputs(x[i],fp);

fclose(fp);

fp=fopen("TEST.txt","r");

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

fgets(y[i],a[i],fp);

fclose(fp);

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

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

}

(1)程序运行的结果是(A)

33(A)First(B)First(C)“First”(D)Four

SecondFirst“Second”Third

ThirdFirst“Third”Second

FourFirst“Four”First

(2)以下哪种说法是正确的(C)。

34(A)TEST.txt仅在程序运行期间存在,程序结束后就没有了

(B)TEST.txt文件必须在程序运行之前建立好

(C)如果TEST.txt文件不存在,程序运行中会自动建立TEST.txt文件

(D)TEST.txt始终是无内容的空文件

6.读下面程序并回答问题。

#include"stdio.h"

voidmain()

{

chars[50]="de123116abc5656";

inti,b[10]={0},cnt=0;

for(i=0;s[i]!

='\0';i++)

{

if(s[i]>='0'&&s[i]<='9')

b[s[i]-'0']++;

elsecnt++;

}

printf("%d\n",cnt);

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

printf("%d",b[i]);

}

(1)main函数中第一个printf输出cnt的值为(B)

36(A)15(B)5(C)9(D)16

(2)该程序的功能是(C)

37(A)取出字符串中的数字子串连接起来

(B)统计数字子串在字符串中出现的次数

(C)将数字子串转换为整数并累加

(D)将字符串中的数字字符转换为数字,结果加起来乘以10

7.读下面程序,回答问题。

#include"stdio.h"

intfun(int*a,intn)

{

if(n>1)return*a+fun(a+1,n-1);

else

return*a;

}

voidmain()

{

inta[10]={1,2,3,4,5,6,7,8,9,10},s;

s=fun(a+3,3);

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

}

(1)函数fun与下面非递归程序等价的是(A)。

37(A)intfun(int*a,intn)(B)intfun(int*a,intn)

{{

inti,s=0;inti,s=0;

for(i=0;i

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

returns;returns;

}}

(C)intfun(int*a,intn)(D)intfun(int*a,intn)

{{

inti,s=0;inti,s=0;

for(i=0;i

s=a[i];s=s+a[n-i];

reutrns;returns;

}}

(2)程序的输出结果为(C)。

38(A)55(B)12(C)15(D)18

8.读下面程序,回答问题。

#include"stdio.h"

voidsort(inta[],intn)

{

inti,j,t;

for(i=0;i

for(j=0;j

if(a[j]>a[i])

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

}

voidmain()

{

intx[10]={1,0,-76,4,8,12,65,100,-45,123};

inti;

sort(x+5,5);

printf("%d",x[5]);

}

(1)程序中sort函数的功能是(C)

39(A)用起泡法对含有n个元素的数组a从小到大的排序

(B)用选择法对含有n个元素的数组a从小到大的排序

(C)用二分法对含有n个元素的数组a从小到大的排序

(D)用起泡法对含有n个元素的数组a从大到小的排序

(2)该程序的运行输出结果为(B)

40(A)-76(B)-45(C)8(D)123

注意:

①请把下面“程序填空”中各小题答案写在主观题答题纸上

②每一个空只填一个语句或一个语句所缺的部分内容

三、程序填空(每空2分,共30分)

1.程序中函数fun()的功能是:

查找字符串str中指定字符ch出现的次数并返回,并将该字符出现时的下标位置记录于数据组bb中。

例如在字符串"1233211234567"中查找字符'1',其结果为3次,下标分别为0,5,6。

请填空。

#include"stdio.h"

#defineN20

intfun(char*str,charch,int*bb)

{

inti=0,n=0;

while(*str)

{

if(str[i]==ch)

bb[n++]=i;

str++;

i++;

}

returnn;

}

voidmain()

{

charstr[N],ch;

intbb[N]={0},i,n;

printf("\nInputtheoriginalstring:

");

gets(str);

printf("\nInputcharacter:

");

scanf("%c",&ch);

n=fun(str,ch,bb);

printf("\nThenumberofcharacteris:

%d\n",n);

printf("\nThesuffixofcharacter:

");

for(i=0;i

printf("%d",bb[i]);

}

2.已知head指向单链表的第一个结点,以下程序调用函数print输出这一单链表。

请填空。

#include"stdio.h"

#include

#defineLensizeof(structstudent)

structstudent

{

intdata;

structstudent*next;

};

structstudent*creat()

{

......

return(head);

}

print(structstudent*head)

{

structstudent*p;

printf("\nThelinklistis:

");

p=head;

if(head=!

NULL)

while(p->next!

=NULL)

{

printf("%d",p->data);

p=p->next;

}

printf("%d",p->data);

}

voidmain()

{

structstudent*head;

head=creat();

print(head);

}

3.下列程序的功能是:

假设a数组中的数,按由小到大的顺序存放。

将数组a中相邻相同的数删得只剩一下,然后以每行5个数的形式输出a数组中的数。

请填空。

#include"stdio.h"

#defineMAX20

voidmain()

{

inta[MAX],i,j,n;

for(i=0;i

scanf("%d",a+i);

n=i=MAX-1;

while(i)

{

if(a[i]==a[i-1])

{

for(j=i;j<=n;j++)

a[j-1]=a[j];

n=n-1;

}

i=i-1;

}

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

{

if(i%5==0)

printf(“\n”);

printf("%3d",a[i]);

}

printf("\n");

}

4.函数fun的功能是:

求S=1×2+2×3+3×4+…+n×(n+1)的和,S的值作为函数值返回。

在main函数中输入n的值,调用fun函数,并输出最后的结果。

请填空。

#include"stdio.h"

longfun(intn)

{

inti;

longs=0;

for(i=1;i<=n;i++)

s=s+i*(i+1);

returns;

}

voidmain()

{

intn;

longs;

printf("Inputn:

\n");

scanf("%d",&n);

s=fun(n);

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

}

5.函数fun的功能是:

将10到99之间的每位数字的乘积大于每位数字的和的整数放入形参数组a中,数组a的个数作为函数值返回。

例如:

整数23:

2*3>2+3,所以23满足条件,应存入数组a中。

在main函数中,调用fun函数,并按一行5个整数进行输出。

请填空。

#include"stdio.h"

intfun(int*a)

{

inti=0,n,k,s,m;

for(n=10;n<100;n++)

{

k=1;

s=0;

m=n;

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

while(m!

=0)

{

k=k*(m%10);

s=s+m%10;

m=m/10;

}

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

if(k>s)

{

a[i]=n;

i++;

}

}

returni;

}

voidmain()

{

inta[100],n,i;

n=fun(a);

for(i=0;i

{

printf("%4d",a[i]);

if((i+1)%5==0)printf("\n");

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2