C语言20次.docx

上传人:b****4 文档编号:3592567 上传时间:2022-11-24 格式:DOCX 页数:14 大小:21.81KB
下载 相关 举报
C语言20次.docx_第1页
第1页 / 共14页
C语言20次.docx_第2页
第2页 / 共14页
C语言20次.docx_第3页
第3页 / 共14页
C语言20次.docx_第4页
第4页 / 共14页
C语言20次.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

C语言20次.docx

《C语言20次.docx》由会员分享,可在线阅读,更多相关《C语言20次.docx(14页珍藏版)》请在冰豆网上搜索。

C语言20次.docx

C语言20次

四川省普通高等学校计算机应用知识和能力

第二十次等级考试

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

时间:

2004年4月10日

上午9:

00—11:

00

第一部分

软件技术基础

(共15分)

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

1.数据元素是数据的基本单位,数据项是数据的最小单位。

(A)

2.栈是特殊的线性表,须用一组地址连续的存储单元来存储其元素。

(B)

3.引入虚拟存储技术后,逻辑内存总容量是由地址总线的位数确定的。

(A)

4.编译程序是一种常用的应用软件。

(B)

5.顺序文件和链接文件的长度都可以动态变化。

(B)

6.在文件系统中彩目录管理文件。

(BA)

7.允许多用户在其终端上同时交互地使用计算机的操作系统称为实时系统。

(AB)

8.程序、数据、和程序控制块是构成一个进程的三要素。

(A)

9.黑盒测试时,既要考虑程序的内部逻辑结构又要考虑其外部特性。

(B)

10.软件的总体设计和详细设计都要用PAD图形工具。

(B)

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

1.允许用户把若干作业提交计算机系统集中处理的操作系统称为(11)。

11(A)分时操作系统(B)实时操作系统

(C)网络操作系统(D)批处理操作系统

2.分配到必要资源并获得了处理机时的进程的状态称为(12)。

12(A)就绪状态(B)执行状态(C)等待状态(D)阻塞状态

3.利用通道技术可以在(13)之间直接交换数据。

13(A)内存与CPU(B)CPU与外设

(C)内存与外设(D)内存、CPU和外设三者

4.以下的准则中哪个不是软件设计的准则(14)。

14(A)编程语言选择准则(B)信息屏蔽准则

(C)结构化和模块化准则(D)抽象准则

5.有一数列:

97657613294958经过一趟排序后得到:

65971376294958请问使用的是何种排序方法(15)。

15(A)简单插入排序(B)冒泡排序

(C)2路归并排序(D)快速排序

第二部分

C与C++语言程序设计

(共85分)

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

1.定义如下枚举类型:

enumDay{Monday,Tuesday,Wednesday,Thursday,Friday=2};

则下列语句正确的是(16)。

16(A)表达式Wednesday==Friday的值是true

(B)enumDayday;day=3;

(C)enumDayday;day=Tuesday-3;

(D)enumDayday;day=Monday+10;

2.下列程序片段的输出结果是(17)。

intm=4;

do

{printf("%d,",m-=3);}

while(!

(--m));

17(A)1(B)1,-3,(C)3,0(D)死循环

3.执行下列程序片段时的输出结果是(18)。

intx,y;

x=3;y=5;

printf("%d",x%=(y/=2));

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

4.对于下述程序,判断正确的是(19)。

#include

voidf(int*p)

{*p=10;}

int*p;

voidmain()

{f(p);

printf("%d",(*p)++);

}

19(A)输出的值是随机值(B)运行时出错

(C)输出值为10(D)输出值为11

5.下列程序运行的结果是(20)。

#defineFU(y)2.8+y

#definePR(a)printf("%d",(int)(a))

#definePRINT(a)PR(a);

#include

voidmain()

{intx=2;

PRINT(FU(5)*x);

}

20(A)12(B)14(C)13(D)15

6.下列程序运行的结果是(21)。

#include

voidmain()

{inta[10]={9,8,7,6,5,4,3,2,1,0},*p=a+4;

printf("%d",*++p);

printf("%d",++*p);

}

21(A)4,3(B)4,6(C)5,5(D)4,5

7.关于对类要领的描述中,错误的是(22)。

22(A)类就是C语言中的结构类型

(B)类是创建对象的样板

(C)类是具有共同行为的若干对象的统一描述体

(D)类是抽象数据类型的实现

8.已知inta=9,b=4;将a-b的值输出显示到屏幕上,下列各种实现方法中,正确的是(23)。

23(A)cout<

(C)cout<

9.下列循环语句会进入死循环的是(24)。

24(A)i=0;do{i++;}while(i==100);(B)for(i=0;i<100;i+=3.14);

(C)for(i=0;;i+=2);(D)k=1;do{k--;}while(k);

10.下面程序运行的结果是(25)。

#include

intfun(char*str)

{

intn=0;

while(*str>='0'&&*str<='9')

{n=n*10+*str-'1';str++;}

returnn;

}

voidmain()

{printf("%d\n",fun("567.89"));}

25(A)89(B)567.89(C)567(D)456

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

1.有下列程序:

#include

voidmain()

{inta,b,c,x;

a=b=c=0;

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

{cin>>x;

switch(x%3)

{case0:

a+=x;break;

case1:

b+=x;break;

case2:

c+=x;break;

}

}

cout<

}

程序运行时依次输入x的值为:

12345678910

①程序运行的结果是(26)。

26(A)3,12,21(B)18,22,15

(C)3,4,3(D)9,10,8

②switch(x%3)与(27)相同。

27(A)switch(!

(x%3)!

=0)(B)switch(x%3==0)

(C)switch(x%3!

=0)(D)他们都不相同

2.有下列程序:

#include

voidmain()

{

char*str[]={"One","Two","Three","Four"};

char=str;

inti;

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

printf("%s",(ptr+1)[i]);

}

①为程序中空白处选择填空(28)。

28(A)**ptr(B)*ptr(C)ptr[](D)&ptr

②运行结果是(29)。

29(A)newohree(B)Two(C)TwoThreeFour(D)指针运行非法,无输出

3.读下列程序,回答问题。

#include

voidmain(void)

{

intm,n;

doublex,y;

intdivide(intm,intn);

doubledivide(intm,doubley);

doubledivide(doublex,doubley);

cout<<"Entertwointegerandtworealnumber:

";

cin>>m>>n>>x>>y;

L1:

cout<

L2:

cout<

L3:

cout<

}

intdivide(intm,intn)

{returnm/n;}

doubledivide(intm,doubley)

{returnm/(int)y;}

doubledivide(doublex,doubley)

{returnx/y;}

①输入数据727.02.0,语句L1输出结果是(30)。

30(A)0(B)1(C)3(D)3.5

②输入数据727.02.0,语句L2输出结果是(31)。

31(A)0(B)1(C)3(D)3.5

③输入数据727.02.0,语句L3输出结果是(32)。

32(A)0(B)1(C)3(D)3.5

4.#include

voidmain()

{

unsignedinta=0112,x,y,z;

x=a>>3;

y=~(~0<<4);

z=x&y;

printf("%o%o%o\n",x,y,z);

printf("%x\n",!

(x&&y&&z));

}

该程序中执行第一个printf函数后,输出为(33)。

33(A)111711(B)171117(C)111717(D)171711

该程序中执行第二个printf函数后,输出为(34)。

34(A)171(B)0112(C)1(D)0

5.以下程序运行的结果为(35)。

#include

voidswap1(inta,intb)

{inttemp;

temp=a;a=b;b=temp;

}

voidswap2(int&a,int&b)

{inttemp;

temp=a;a=b;b=temp;

}

voidmain()

{inti=3,j=5;

swap1(i,j);

printf("%d%d\n",i,j);

swap2(i,j);

printf("%d%d\n",i,j);

}

35(A)35(B)53(C)53(D)35

35533553

6.读下列递归程序,回答问题。

#include

voidfun(char*strp)

{char*t;

if(*strp){t=strp;t++;fun(t);putchar(*strp);}

}

voidmain()

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

charstr[11];

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

str[i]=a[i]+'0';

str[i]='\0';

fun(str);

}

程序中的fun函数被调用(36)次。

36(A)9(B)10(C)11(D)12

程序的输出结果为(37)。

37(A)0123456789(B)9876543210(C)01234(D)98765

5678943210

7.读下列C程序,若输入字符串Examination,请选择正确的输出结果。

#include

voidmain()

{charstr[20];

inti=0;

staticintcount[2]={0};

gets(str);

do

{

switch(str[i++])

{

case'a':

case'A':

case'e':

case'E':

case'i':

case'I':

case'o':

case'O':

case'u':

case'U':

count[0]++;

/*break;*/

default:

count[1]++;

}

}while(str[i]!

='\0');

printf("count[0]=%d,count[1]=%d\n",count[0],count[1]);

}

程序的输出结果为(38)。

38(A)count[0]=6,count[1]=11(B)count[0]=6,count[1]=12

(C)count[0]=5,count[1]=11(D)count[0]=5,count[1]=12

若将程序中注释语句的注释标记去掉,则程序的输出结果为(39)。

39(A)count[0]=6,count[1]=11(B)count[0]=6,count[1]=5

(C)count[0]=5,count[1]=11(D)count[0]=6,count[1]=6

8.下面程序输出的结果为(40)。

#include

inta=5;

voidmain()

{inta=3;

a++;

cout<

:

a;

}

程序中的fun函数被调用(36)次。

40(A)54(B)45(C)53(D)44

注意:

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

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

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

1.下列程序实现将一个整数字符串转换为一个整数。

#include

#include

intFun(char*str)

{intnum,digital,len;

①;

len=strlen(str);

while(*str!

=NULL)

{

digital=*str-'0';

for(inti=0;②;i++)

digital*=10;

len--;

③;

num+=digital;

}

returnnum;

}

voidmain()

{charn[80];

intnumber;

gets(n);

number=Fun(n);

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

}

2.寻找并输出11~999之间的数m,它满足m,m2,m3均为回文数(所谓回文数是指其各位数字左右对称的整数)。

#include

voidmain()

{intsymm(longn);

longm;

for(m=11;m<1000;m++)

if(①)

cout<<"m="<

}

intsymm(longn)

{longi,m;

i=n;m=0;

while(②)

{③;

i=i/10;

}

return(m==n);

}

3.已知head指向一个单向链表,如下图:

主程序中调用add函数能求出链表中所有结点数据域的和sum并返回。

structlink

{intdata;

structlink*next;

}

intadd(structlink*heak)

{structlink*p;

ints=0;

p=①;

while(p)

{s+=②;

p=③;

}

return(s);

}

voidmain()

{structlink*head;

……/*表示省掉的程序段,创建链表*/

sum=add(head);

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

}

4.下面程序功能是统计文本data.txt中各种大写字母的个数,将统计结果存放在数组count中,(字母'A'的个数存入count[0]中,字母'B'的个数存入count[1]……依此类推),输出统计结果,一行输出5个。

请填空。

#include

#include

voidmain()

{FILE*fp;

staticintcount[26]={0};

inti;

charch;

if(①)

{printf("Cannotopenthefile!

\n");

exit(0);

}

while(!

feof(fp))

{②;

if(ch>='A'&&ch<='Z')count[③]++;

}

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

{

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

printf("count[%d]=%-5d",count[i]);

}

fclose(fp);

}

5.下面程序的功能是输入两个字符串a和b和一个标志flag,当flag=0时,将b连在a后;当flag=1时,将a连在b后;否则返回空指针。

请填空。

#include

#include

char*stradd(char*s,char*t,intf)

{char*p;

if(f==0)

{p=s;

s+=strlen(s);

①;

}

elseif(f==1)

{p=t;

while(*t++);

t--;

while(*s)

*t++=*s++;

②;

}

③;

returnp;

}

voidmain()

{chara[100],b[100],*str;

intn;

printf("Inputstringaandb:

\n");

gets(a);

gets(b);

printf("Inputflag:

");

scanf("%d",flag);

str=stradd(a,b,n);

printf("Output:

%s\n",str);

}

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1