全国计算机二级C语言笔试模拟85.docx
《全国计算机二级C语言笔试模拟85.docx》由会员分享,可在线阅读,更多相关《全国计算机二级C语言笔试模拟85.docx(23页珍藏版)》请在冰豆网上搜索。
全国计算机二级C语言笔试模拟85
二级C语言笔试模拟85
一、选择题
下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的。
1.数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及
A.数据的存储结构
B.计算方法
C.数据映象
D.逻辑存储
答案:
A
2.一些重要的程序语言(如C语言和Pascal语言)允许过程的递归调用。
而实现递归调用中的存储分配通常用
A.栈
B.堆
C.数组
D.链表
答案:
A
3.链表不具有的特点是
A.不必事先估计存储空间
B.可随机访问任一元素
C.插入删除不需要移动元素
D.所需空间与线性表长度成正比
答案:
B
4.对建立良好的程序设计风格,下面描述正确的是
A.程序应简单、清晰、可读性好
B.符号名的命名只要符合语法
C.充分考虑程序的执行效率
D.程序的注释可有可无
答案:
A
5.程序设计语言的基本成分是数据成分、运算成分、控制成分和
A.对象成分
B.变量成分
C.语句成分
D.传输成分
答案:
D
6.在软件测试设计中,软件测试的主要目的是
A.实验性运行软件
B.证明软件正确
C.找出软件中全部错误
D.发现软件错误而执行程序
答案:
D
7.下列选项中,不属于模块间耦合的是
A.数据耦合
B.同构耦合
C.异构耦合
D.公用耦合
答案:
C
8.如果对一个关系实施了一种关系运算后得到了一个新的关系,而且新的关系中属性个数少于原来关系中属性个数,这说明所实施的运算关系是
A.选择
B.投影
C.连接
D.并
答案:
B
9.下列叙述中,正确的是
A.用E—R图能够表示实体集间一对一的联系、一对多的联系和多对多的联系
B.用E—R图只能表示实体集之间一对一的联系
C.用E—R图只能表示实体集之间一对多的联系
D.用E—R图表示的概念数据模型只能转换为关系数据模型
答案:
C
10.在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。
其中数据独立性最高的阶段是
A.数据库系统
B.文件系统
C.人工管理
D.数据项管理
答案:
A
11.下列选项中属于C语言构造类型的是
A.指针类型
B.空类型
C.枚举类型
D.数组类型
答案:
D
12.表达式(double)(20/3)的值为
A.6
B.6.0
C.2
D.3
答案:
B
13.设有定义:
longx=123456L;,则以下能够正确输出变量x值的语句是
A.printf("x=%d\n",x);
B.printf("x=%ld\n",x);
C.printf("x=%8dL\n",x);
D.printf("x=%LD\n",x);
答案:
B
14.下列不正确的表达式是
A.a>b>c
B.c--,++b,a+=1
C.a=c+b>n-m=k
D.p++
答案:
C
15.以下选项中非法的字符串常量是
A.""
B."\X0\011"
C."\\"\t"
D."\n\007\n"
答案:
C
16.若有说明语句"inta;floatb;”,以下输入语句正确的是
A.scanf("%f%f",&a,&b);
B.scanf("%f%d",&a;&b);
C.scanf("%d,%f",&a,&b);
D.scanf("%6.2f%6.2f",&a,&b);
答案:
C
17.若有如下定义并赋值:
charch='a',a;
则执行语句"printf("%d",a=ch+2.6);”后的输出结果是
A.c
B.d
C.99
D.100
答案:
C
18.若有如下程序:
main()
{intm=-1;
printf("%d,%u,%0,%x",m,m,m,m);}
则程序运行后的输出结果是
A.-1,65535,177777,ffff
B.-1,-1,177777,fffe
C.-1,1,177777,ffff
D.-1,65535,177776,fffe
答案:
A
19.若有以下说明:
inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};
charc='a',d,g;
则数值为4的表达式是
A.a[g-c]
B.a[4]
C.a['d'-'c']
D.a['d'-c]
答案:
D
20.下列if语句非法的是
A.if(a=B)x=1;
B.if(!
3.9)
C.if('a'&&x==y)y++;
D.if(x>y)scanf("%f",&y)elsescanf("%f",&x);
答案:
D
21.若有如下程序:
main()
{intx=1,n;
for(n=0;n<5;n++)
{switch(n)
{case3:
x+=3;
case2:
x+=2;
case1:
case0:
default:
x+=4;}}
printf("%d\n",x);}
则程序执行后的输出结果是
A.10
B.18
C.28
D.30
答案:
C
22.有以下程序
main()
{char*s="abcde";
s+=2;
printf("%ld\n",s);
}
程序运行后的输出结果是()
A.cde
B.字符c的ASCII码值
C.字符c的地址
D.出错
答案:
C
23.以下程序段的输出为
staticchara[]="language",b[]="progratne";
char*ptr1,*ptr2;
intk;
ptr1=a;ptr2=b;
for(k=0;k<7;k++)
if(*(ptr1+k)==*(ptr2+k))
printf("%c",*(ptr1+k));
A.gae
B.ga
C.language
D.有语法错误
答案:
B
24.设有如下程序:
#include"stdio.h"
main()
{charc;
intm=0,n=0;
while((c=getchar())!
='\n')
{if(c>='A'&&c<='Z')m++;
elseif(c>='a'&&c<='z')n++;}
printf("m=%d,n=%d",m,n);}
如果从键盘上输入:
AbCdefGHj<回车>,则程序运行后的输出结果是
A.m=5,n=4
B.m=4,n=5
C.m=9,n=0
D.无确定值
答案:
B
25.若有以下定义语句:
doublea[5],*p=a;inti=0;
对a数组元素错误的引用是
A.a[i]
B.a[5]
C.p[4]
D.p[i]
答案:
B
26.若有如下程序:
main()
{inta=0,t=0;
while(!
a!
=0)t+=a++;
printf("%d,%d\n",t,A);}
则程序运行后的输出结果是
A.0,1
B.1,0
C.0,0
D.1,1
答案:
A
27.若有以下定义语句:
floata[11]={0,1,2,3,4,5,6,7,8,9,10};
则以下叙述中错误的是
A.a数组在内存中占44个字节
B.a数组的最后一个元素为a[10]
C.a数组的第一个元素为a[0]
D.以上定义语句给a数组所赋初值是整数,因此不能正确赋初值
答案:
D
28.有以下程序:
main()
{charnn[4][3]={"12","34","56","78"),*pn[4];
intk,s=0;
for(k=0;k<4;k++)pn[k)=nn[k];
for(k=1;k<4;k+=2)
s=s*10+pn[k][1]-'0';
printf("%d\n",s);
}
程序的输出结果是
A.48
B.26
C.3478
D.576
答案:
A
29.C语言中,可用于说明函数的是
A.auto或static
B.extern或auto
C.static或extern
D.auto或register
答案:
C
30.若二维数组a有m列,且设a[0][0]位于数组的第一个位置上,则计算任一元素a[i][j]在数组中的位置的式子为
A.i*m+j
B.j*m+i
C.i*m+j-1
D.i*m+j+1
答案:
D
31.下面程序的输出结果是
func(intx)
{staticinta=2;
return(a+=x);}
rnain()
{intb=2,c=4,d;
d=func(b);
d=func(c);
printf("%d\n",d);}
A.4
B.6
C.8
D.12
答案:
C
32.以下程序运行后的输出结果是
main()
{chars[]="1234",*ps;
for(ps=s;ps<s+3;ps++)printf("%c",ps);
printf("\n");
}
A.123
B.112123
C.1234
D.乱码
答案:
D
33.以下关于宏的叙述中正确的是
A.宏名必须用大写字母表示
B.宏替换时要进行语法检查
C.宏替换不占用运行时间
D.宏定义中不允许引用已有的宏名
答案:
C
34.如果文件1包含文件2,文件2中要用到文件3的内容,而文件3中要用到文件4的内容,则可在文件1中用三个#include命令分别包含文件2、文件3和文件4。
在下列关于这几个文件包含顺序的叙述中,正确的一条是
A.文件4应出现在文件3之前,文件3应出现在文件2之前
B.文件2应出现在文件3之前,文件3应出现在文件4之前
C.文件3应出现在文件2之前,文件2应出现在文件4之前
D.出现的先后顺序可以任意
答案:
A
35.有以下程序段
main()
{chara[7]="abcdef";
charb[4]="ABC";
strcpy(a,b);
printf("%c",a[5]);
}
程序段运行后的输出结果是
A.a
B.\0
C.e
D.f
答案:
D
36.下面程序的输出结果是
#include<stdio.h>
f(b,n)
intb[],n;
{inti,r;
r=1;
for(i=0;i<=n;i++)
r=r*b[i];
returnr;
}
main()
{intx,a[]={2,3,4,5,6,7,8,9};
x=f(a,3);
printf("%d\n",x);
}
A.720
B.120
C.24
D.6
答案:
B
37.下面程序的输出结果是
#include"stdio.h"
fun(x)
intx;
{
inty=0;
staticintz=5;
z=x++,y++;
return(z);
}
main()
inta=4,i,j;
for(i=0;i<2;i++)
j=fun(a++);
printf("%d",j);
}
A.0
B.3
C.4
D.5
答案:
D
38.对于以下程序段,设a和q都是整型变量,
┇
a=q;
Loop:
if(a==0)gotoEnd;
Elseif(a>0){printf("&");a--;gotoLoop;}
ElsegotoEnd;
End;
┇
不能与上面程序等价的是
A.a=q;
do
{f(a<0)break;
a--;printf("*");
}while(a);
B.a=q;
for(;a>0;a--)printf("&");
C.a=q;
while(a)
{printf("&");a--;}
D.for(a=q;a>0;--a,printf("*"));
答案:
C
39.有以下程序
#include<stdio.h>
#definePT5.5
#defineS(x)PT*x*x
main()
{inta=1,b=2;
printf("%4.1f\n",S(a+b));
}
程序运行后的输出结果是
A.49.5
B.9.5
C.22.0
D.45.0
答案:
B
40.设有以下语句:
structSS
{intno;charname[10];}PERSON;
则下面叙述中错误的是
A.struct是结构体类型的关键字
B.structSS是结构体类型
C.PERSON是结构体类型名
D.name是结构体成员名
答案:
C
41.若有以下说明和定义:
fun(int*c){……}
main()
{int(*a)()=fun,*b(),w[10],c;
┇
}
在必要的赋值之后,对fun函数的正确调用语句是
A.a=a(w);
B.(*a)(&c);
C.b=*b(w);
D.fun(b);
答案:
B
42.指针变量p的基类型为double,并已指向一连续存储区,若p中当前的地址值为65490,则执行p++后,p中的值为
A.65490
B.65492
C.65494
D.65498
答案:
D
43.某个C程序中有4个函数t、u、v和w,执行时t调用了u和v,u调用了t和w,v调用了w,w调用了t和v。
以下叙述中正确的是
A.这4个函数都间接递归调用了自己
B.除函数t外,其他函数都间接递归调用了自己
C.除函数u外,其他函数都间接递归调用了自己
D.除函数v和w外,其他函数都间接递归调用了自己
答案:
A
44.设有如下的程序段:
inta[]=(1,2,3,4,5),*t;
t=a;
则下列说法正确的是
A.a和t的内容相同
B.a数组的长度和t所指的字符串长度相等
C.a和t完全相同
D.指针变量t指向数组a的第一个元素
答案:
D
45.若定义了以下函数:
voidf(……)
{……
*p=(double*)malloc(10*sizeof(double));
……
}
p是该函数的形参,要求通过p把动态分配存储单元的地址传回主调函数,则形参p的正确定义应当是
A.double*p
B.float**p
C.double**p
D.float*p
答案:
C
46.有以下程序:
#defineH15
#defineH2H1+1
#defineH3H2*H2/2
main()
{ints=0,k=H3;
while(k--)s++;
printf("%d\n",s);
}
程序的输出结果是
A.30
B.10
C.29
D.19
答案:
B
47.下列程序的输出结果是
main()
{charch[2][5]={"6934","8254"},*p[2];
inti,j,s=0;
for(i=0;i<2;i++)
p[i]=ch[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]>'\0'&&p[i][j]<='9';j+=2)
s=10*s+p[i][j]-'0';
printf("%d\n",s);
}
A.6385
B.69825
C.63825
D.693825
答案:
A
48.以下程序
#include<string.h>
main()
{chara1[80],a2[80],*s1=a1,*s2=a2;
gets(s1);gets(s2)
if(!
strcmp(s1,s2))printf("*");
elseprintf("#");
printf("%d\n",strlen(strcat(s1,s2)));
}
如果从键盘上输入:
book<回车>
book<空格><回车>
则输出结果是
A.*8
B.#9
C.#6
D.*9
答案:
B
49.已知字符'0'的ASCII码的十进制数为48,并且数组的第0个元素在低位,有以下程序
#include<stdio.h>
main()
{
union{inti[2];longk:
charc[4];}r,*s=&r;
s->i[0]=0x39;s->i[1]=0x38;printf("%c\n",s->c[0]);
}
程序运行后的输出结果是
A.39
B.9
C.38
D.8
答案:
B
50.若有下面的说明和定义,则sizeof(structaA)的值是
struetaa
{intr1;doubler2floatr3;
unionuu{charu1[5];
longu2[2];
}ua;
}mya;
A.30
B.29
C.24
D.22
答案:
D
二、填空题
请将每空的正确答案写在【1】~【20】序号的横线上。
1.在一个容量为15的循环队列中,若头指针front=6,尾指针Year=9,则该循环队列中共有个元素。
答案:
3
2.软件工程的出现是由于。
答案:
软件危机的出现
3.软件设计模块化的目的是。
答案:
降低复杂性
4.软件开发环境是全面支持软件开发全过程的集合。
答案:
软件工具
5.关系模型的完整性规则是对关系的某种约束条件,包括实体完整性、和自定义完整性。
答案:
参照完整性
6.下面程序的功能是输出数组中最大的数,由a指针指向该元素。
请填空。
main()
{ints[]={6,7,2,13,9,1,12,10,5,8,4,3,11},*a,*b;
for(b=s,a=s;b-s<13;b++)
if()a=b;
printf("%d",*a);}
答案:
*b>*a
7.表达式10+'a'+1.5-0.5*'B'的结果是。
答案:
75.5
8.以下函数用以求x的y次方。
补足所缺语句。
Doublefun(doublex,inty)
{inti;doublez=1;
for(i=1;i;i++)
z=;
returnz;
}
答案:
[8]<y+1
[9]z*x
9.若输入字符串:
abcde<回车>,则以下while循环体将执行次。
while((ch=getchar())=='e')printf("*");
答案:
0
10.选择程序中的输入输出语句,以满足题目给定的输入输出数据形式。
main()
{inta;floatb;
}
输入形式:
3.52<空格>6<回车>
输出形式:
a*b=21.12
答案:
[11]scanf("%f<空格>%d",&b,&a);
[12]printf("a,b=%5.2f",a*b);
11.mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。
请填空。
intmystrlen(char*str)
{inti;
for(i=0;!
='\0';i++);
return();
}
答案:
[13]str[i]或str+i
[14]i
12.函数fun的功能是使一个字符串按逆序存放。
请填空。
voidfun(charstr[])
{charm;inti,j;
for(i=0,j=strlen(str);i<;i++,j--)
{m=str[i];
str[i]=;
str[j-1]=m;
}
printf("%s\n",str);
}
答案:
[15]strlen(str)/2
[16]str[j-1]
13.下面程序的功能是求整数m、n的最大公约数,请填空。
main()
{intm,n,r;
scanf("%d,%d",m,n);
if(){r=m;m=n;n=r;}
while()
{r=m%n;m=n;n=r;}
printf("%d",m);
}
答案:
[17]m<n
[18]n!
=0
14.下面程序的功能是两个整数进行交换,请填空。
sub(int*x,int*y)
{
z=*x;*x=*y;*y=z;
return;}
main()
{intm,n,*t1,*t2;
scanf("%d,%d",&m,&n);
t1=&m;t2=&n;
printf("%d,%d\n",m,n);}
答案:
[19]intz;
[20]sub(t1,t2);