计算机等级考试 二级C语言 笔试模拟试题 北邮四.docx
《计算机等级考试 二级C语言 笔试模拟试题 北邮四.docx》由会员分享,可在线阅读,更多相关《计算机等级考试 二级C语言 笔试模拟试题 北邮四.docx(25页珍藏版)》请在冰豆网上搜索。
计算机等级考试二级C语言笔试模拟试题北邮四
一、选择题(1-11每题2分,11-21每题1分,21-40每题2分,共70分)
下列各题A、B、C、D四个选项中,只有一个选项是正确的。
请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。
1.下列对于线性链表的描述中正确的是______。
(A)存储空间不一定是连续,且各元素的存储顺序是任意的
(B)存储空间不一定是连续,且前件元素一定存储在后件元素的前面
(C)存储空间必须连续,且各前件元素一定存储在后件元素的前面
(D)存储空间必须连续,且各元素的存储顺序是任意的
2.下列关于栈的描述正确的是______。
(A)在栈中只能插入元素而不能删除元素
(B)在栈中只能删除元素而不能插入元素
(C)栈是特殊的线性表,只能在一端插入或删除元素
(D)栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素
3.为了使模块尽可能独立,要求________。
(A)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强
(B)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱
(C)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱
(D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强
4.下列叙述中,正确的是________。
(A)用E-R图能够表示实体集之间一对一的联系、一对多的联系、多对多的联系
(B)用E-R图只能表示实体集之间一对一的联系
(C)用E-R图只能表示实体集之间一对多的联系
(D)用E-R图表示的概念数据模型只能转换为关系数据模型
5.以下叙述中正确的是________。
(A)C语言的源程序不必通过编译就可以直接运行
(B)C语言中的每条可执行语句最终都将被转换成二进制的机器指令
(C)C源程序经编译形成的二进制代码可以直接运行
(D)C语言中的函数不可以单独进行编译
6.以下有4组用户标识符,其中合法的一组是________。
(A)For
-sub
Case
(B)4d
DO
Size
(C)f2_G3
IF
abc
(D)WORD
void
define
7.以下选项中不属于C语言的类型的是________。
(A)signedshortint
(B)unsignedlongint
(C)unsignedint
(D)longshort
8.有以下程序
int*f(int*x,int*y)
{if(*x<*y)
returnx;
else
returny;
}
main()
{inta=7,b=8,*p,*q,*r;
p=&a;
q=&b;
r=f(p,q);
print("%d,%d,%d\n",*p,*q,*r);
}
执行后输出结果是________。
(A)7,8,8
(B)7,8,7
(C)8,7,7
(D)8,7,8
9.有以下程序
main()
{chara,b,c,d;
scanf("%c,%c,%d,%d",&a,&b,&c,&d);
printf("%c,%c,%c,%c\n",a,b,c,d);
}
若运行时从键盘上输入:
6,5,65,66<回车>。
则输出结果是________。
(A)6,5,A,B
(B)6,5,65,66
(C)6,5,6,5
(D)6,5,6,6
10.有以下程序
main()
{charstr[][10]={"China","Beijing"},*p=str;
printf("%s\n",p+10);
}
程序运行后的输出结果是________。
(A)China
(B)Beijing
(C)ng
(D)ing
11.以下程序运行后的输出结果是________。
main()
{inta,b,c;
a=10;b=20;c=(a%b<1)||(a/b>1);
printf("%d%d%d\n",a,b,c);
}
(A)10200
(B)20100
(C)10100
(D)20200
12.下列关于单目运算符++、--的叙述中正确的是________。
(A)它们的运算对象可以是任何变量和常量
(B)它们的运算对象可以是char型变量和int型变量,但不能是float型变量
(C)它们的运算对象可以是int型变量,但不能是double型变量和float型变量
(D)它们的运算对象可以是char型变量、int型变量和float型变量
13.有以下程序
main()
{inta;charc=10;
floatf=100.0;doublex;
a=f/=c*=(x=6.5);
printf("%d%d%3.1f%3.1f\n",a,c,f,x);
}
程序运行后的输出结果是________。
(A)16516.5
(B)1651.56.5
(C)1651.06.5
(D)2651.56.5
14.有以下程序
main()
{intc=35;printf("%d\n",c&c);}
程序运行后的输出结果是_____。
(A)0
(B)70
(C)35
(D)1
15.已知i、j、k为int型变量,若从键盘输入:
1,2,3<回车>,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是________。
(A)scanf("%d%d%d",&i,&j,&k);
(B)scanf("%d,%d,%d",&i,&j,&k);
(C)scanf("%2d%2d%2d",&i,&j,&k);
(D)scanf("i=%d,j=%d,k=%d",&i,&j,&k);
16.有定义语句:
intx,y;,若要通过scanf("%d,%d",&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是________。
(A)1112<回车>
(B)11,12<回车>
(C)11,12<回车>
(D)11,<回车>
12<回车>
17.以下程序运行后的输出结果是______。
main()
{intx=0210;printf("%x\n",x);
}
(A)88
(B)86
(C)77
(D)21
18.当把以下4个表达式用作if语句的控制表达式时,有一个选项与其他三个选项含义不同,这个选项是______。
(A)k%2
(B)k%2==1
(C)(k%2)!
=0
(D)!
k%2==1
19.设变量a、b、c、d和y都已正确并赋值。
若有以下if语句
if(aif(c==d)y=0;
elsey=1;
该语句所表示的含义是______。
(A)
(B)
(C)
(D)
20.有以下程序
main()
{intn=0,m=l,x=2;
if(!
n)x-=l;
if(!
m)x-=2;
if(!
x)x-=3;
printf("%d\n",x);
}
执行后输出结果是________。
(A)2
(B)1
(C)3
(D)6
21.若变量已正确定义,要求程序段完成5!
的计算,不能完成此操作的程序段是________。
(A)for(i=1,p=1;i<=5;i++)p*=i;
(B)for(i=1;i<=5;i++){p=1;p*=i;}
(C)i=1;p=1;while(i<=5){p*=i;i++;}
(D)i=1;p=1;do{p*=i;i++;}while(i<=5);
22.有以下程序
main()
{inti,s=0;
for(i=1;i<10;i+=2)s+=i+1
printf("%d\n",s);
}
程序执行后的输出结果是________。
(A)自然数1~9的累加和
(B)自然数1~10的累加和
(C)自然数1~9中奇数之和
(D)自然数1~10中偶数之和
23.面程序的功能是输出以下形式的金字塔图案:
*
***
*****
*******
main()
{inti,j;
for(i=1;i<=4;i++;)
{for(j=l;j<=4-i;j++)printf("");
for(j=1;;j<=;j++)printf("*");
printf("\n");
}
}
在下划线处应填入的是________。
(A)i
(B)2*i―l
(C)2*i+l
(D)i+2
24.已定义以下函数
fun(char*p2,char*p1)
{while((*p2=*p1)!
='\0'){p1++;p2++}}
函数的功能是________。
(A)将p1所指字符串复制到p2所指内存空间
(B)将p1所指字符串的地址赋给指针p2
(C)对p1和p2两个指针所指字符串进行比较
(D)检查p1和p2两个指针所指字符串中是否有'\0'
25.有以下程序
voidsort(inta[],intn)
{inti,j,t;
for(i=0;ifor(j=i+2;jif(a[i]}
main()
{intaa[10]=(1,2,3,4,5,6,7,8,9,10),i;
sort(aa,10);
for(i=0;i<10;i++)printf("%d",aa[i]);
printf("\n");
}
其输出结果是________。
(A)1,2,3,4,5,6,7,8,9,10,
(B)10,9,8,7,6,5,4,3,2,1,
(C)9,2,7,4,5,6,3,8,1,10,
(D)1,10,3,8,5,6,7,4,9,2,
26.设有定义:
intA,*pA=&A;以下scanf语句中能正确为变量A读入数据的是________。
(A)scanf("%d",pA);
(B)scanf("%d",A);
(C)scanf("%d",&pA);
(D)scanf("%d",*pA);
27.有以下程序
#include
voidf(char*s,char*t)
{chark;
k=*s;*s=*t;*t=k;
s++;t--;
if(*s)f(s,t);
}
main()
{charstr[10]="abcdefg",*p;
p=str+strlen(str)/2+1;
f(p,p-2);
printf("%s\n",str);
}
程序运行后的输出结果是______。
(A)abcdef
(B)gfedcba
(C)gbcdefa
(D)abedcfg
28.有以下程序
main()
{chars[]="\n123\\";
printf(%d,%d\n",strlen(s),sizeof(s));
}
执行后输出结果是________。
(A)赋初值的字符串有错
(B)6,7
(C)5,6
(D)6,6
29.有以下程序
main()
{char*p[l0]={"abc","aabdfg","dcdbe","abbd","cd"};
printf("%d\n",strlen(p[4]));
}
执行后输出结果是________。
(A)2
(B)3
(C)4
(D)5
30.以下关于函数的叙述中正确的是_______。
(A)每个函数都可以被其它函数调用(包括main函数)
(B)每个函数都可以被单独编译
(C)每个函数都可以单独运行
(D)在一个函数内部可以定义另一个函数
31.下列函数定义中,会出现编译错误的是________。
(A)max(intx,inty,int*z)
{*z=x>y?
x:
y;}
z=x>y?
x:
y;
returnz;
}
(B)intmax(intx,y)
{intz;
(C)max(intx,inty)
{intz;
z=x>y?
x:
y;return(z);
}
(D)intmax(intx,inty)
{return(x>y?
x:
y);}
32.有以下程序
#include
main()
{inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5,*q=NULL;
*q=*(p+5);
printf("%d%d\n",*p,*q);
}
程序运行后的输出结果是________。
(A)运行后报错
(B)66
(C)611
(D)510
33.有以下程序
voidfun(int*a,inti,intj)
{intt;
if(i{t=a[i];a[i]=a[j];a[j]=t;}
fun(a,++i,--j);
}
}
main()
{inta[]={l,2,3,4,5,6},i;
fun(a,0,5);
for(i=0;i<6;i++)
printf("%d",a[i]);
}
执行后输出结果是________。
(A)654321
(B)432156
(C)456123
(D)123456
34.有以下程序
voidfun(char*a,char*b)
{a=b;(*a)++;}
main()
{charc1='A',c2='a',*p1,*p2;
p1=&c1;p2=&c2;fun(p1,p2);
printf("%c%c\n",c1,c2);
}
程序运行后的输出结果是________。
(A)Ab
(B)aa
(C)Aa
(D)Bb
35.有以下程序
voidf(inty,int*x)
{y=y+*x;*x;=*x+y;}
main()
{intx=2,y=4;
f(y,&x);
printf("%d%d\n",x,y);
}
执行后输出结果是________。
(A)84
(B)88
(C)48
(D)42
36.设有定义语句
intx[6]={2,4,6,8,5,7},*p=x,i;
要求依次输出x数组6个元素中的值,不能完成此操作的语句是________。
(A)for(i=0;i<6;i++)printf("%2d",*(p++));
(B)for(i=0;i<6;i++)printf("%2d",*(p+i));
(C)for(i=0;i<6;i++)printf("%2d",*p++);
(D)for(i=0;i<6;i++)printf("%2d",(*p)++);
37.设有定义:
intn=0,*p=&n,**q=&p;,则以下选项中,正确的赋值语句是________。
(A)p=1;
(B)*q=2
(C)q=p
(D)*p=5
38.已有定义:
inti,a[10],*p;,则合法的赋值语句是________。
(A)p=100;
(B)p=a[5];
(C)p=a[2]+2;
(D)p=a+2;
39.下列选项中正确的语句组是________。
(A)chars[8];s={"Beijing"};
(B)char*s;s={"Beijing"};
(C)chars[8];s="Beijing";
(D)char*s;s="Beijing";
40.已定义以下函数
fun(int*p)
{return*p;}
该函数的返回值是________。
(A)不确定的值
(B)形参p中存放的值
(C)形参p所指存储单元中的值
(D)形参p的地址值
二、填空题(1-15每题2分,共30分)
请将答案分别写在答题卡中对应的的横线上。
1.有以下程序
main()
{inta=7,b=8,*p,*q,*r;
p=&a;q=&b;
r=p;p=q;q=r;
printf("%d,%d,%d,%d\n",*p,*q,a,b);
}
程序运行后的输出结果是__【1】__。
2.有以下程序
#include
main(intargc,char*argv[])
{inti,len=0;
for(i=l;iprintf("%d\n",len);
}
经编译连接后生成的可执行文件是ex.exe,若运行时输入以下带参数的命令行:
exabcdefgh3k44
执行后输出结果是__【2】__。
3.有以下程序
main()
{inta[3][3],*p,i;
p=&a[0][0];
for(i=0;i<9;i++)p[i]=i+1;
printf("%d\n",a[1][2]);
}
程序运行后的输出结果是____【3】____。
4.有以下程序
voidf(inta[],inti,intj)
{intt;
if(i{t=a[i];a[i]=a[j];a[j]=t;
f(a,i+1,j-1);
}
}
main()
{inti,aa[5]={1,2,3,4,5};
f(aa,0,4);
for(i=0;i<5;i++)printf("%d,",aa[i]);printf("\n");
}
执行后输出结果是____【4】____。
5.目前实际存在和使用的广域网基本上都是采用拓扑结构类型。
有以下程序
#include
structSTU
{intnum;
floatTotalScore;};
voidf(structSTUp)
{structSTUs[2]={{20041,703},{20045,537}};
p.num=s[1].num;p.TotalScore=s[1].TotalScore;
}
main()
{structSTUs[2]={{20041,703},{20042,580}};
f(s[0]);
printf("%d%3.0f\n",s[0].num,s[0].TotalScore);
}
程序运行后的输出结果是___【5】____。
6.若有以下程序
intf(intx,inty)
{return(y-x)*x;}
main()
{inta=3,b=4,c=5,d;
d=f(f(3,4),f(3,5));
printf("%d\n",d);
}
执行后输出结果是___【6】___。
7.有以下程序
voidswap1(intc[])
{intt;
t=c[0];c[0]=c[1];c[1]=t;
}
voidswap2(intc0,intcl)
{intt;
t=c0;c0=cl;cl=t;
}
main()
{inta[2]={3,5},b[2]={3,5};
swaplA);swap2(b[0],b[1]);
printf("%d,%d,%d,%d\n",a[0],a[1],b[0],b[1]);
}
其输出结果是____【7】____。
8.有以下程序
inta=2;
intf(int*A)
{return(*A)++;}
main()
{ints=0;
{inta=5;
s+=f(&A)
}
s+=f(&A)
printf("%d\n",s)
}
执行后输出结果是__【8】______。
9.有以下程序段
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;
b=p[5];
b中的值是____【9】____。
10.以下程序的运行结果是:
___【10】___。
。
#include
char*ss(char*s)
returns+strlen(s)/2;}
main()
{char*p,*str="abcdefgh";
p=ss(str);printf("%s\n",p);
}
11.有如下程序段
main(intargc,char*argv[])
{intn,i=0;
while(argv[1][i]!
='\0')
{n=fun();i++;}
printf("%d\n",n*argc);
}
intfun()
{staticints=0;
s+=1;
returns;
}
假设程序经编译、连接后生成可执行文件exam,exe,若键入如下命令行:
exam123<回车>
则运行结果为____【11】____。
12.以下程序运行后的输出结果是【12】_。
#defineS(x)4*x*x+1
main()
{inti=6,j=8;
printf("%d\n",S(i+j));
}
13.以下程序运行后的输出结果是_【13】_。
#include
voidfun(char*s,intp,intk)
{inti;
for(i=p;i}
main()
{chars[]="abcdefg";
fun(s,3,strlen(s));puts(s);
}
14.若有以下程序
main()
{inta[4][4]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0}};
inti,j,s=0;
for(i=0;i<4;i++)
{for(j=0;j<4;j++)
{if(a[i][j]<0)
continue;
if(a[i][j]==0)
break;
s+=a[i][j];
}
}
printf("%d\n",s);
}
执行后输出结果是__【14】。
15.若有以下程序
main()
{chara;
a='H'-'A'+'0';
printf("%c\n",a);
}
执行后输出结果是__【15】__。
参考答案与分析
一、选择题(1-11每题2分,11-21每题1分,21-40每题2分,共70分)
1.A
2.C
3.B
4.A
5.B
6.C
7.D
8.B
9.A
10.B
11.A
12.D
13.B
14.C
15.A
16.A
17.A
18.D
19.C
20.B
21.B
22.D
23.B
24.A
25.C
26.A
27.B
28.C
29.A
30.B