二级C语言笔试模拟116Word文件下载.docx
《二级C语言笔试模拟116Word文件下载.docx》由会员分享,可在线阅读,更多相关《二级C语言笔试模拟116Word文件下载.docx(16页珍藏版)》请在冰豆网上搜索。
a=%d,b=%d"
);
C.当输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如:
%4.2f"
,&
d);
D.当输入数据时,必须指明变量地址,例如:
f);
10、设x、y、t均为int型变量,执行以下语句后,y的值为______。
x=y=3;
t=++x||++y;
A.不定值
B.4
C.3
D.1
11、假定所有变量均已正确说明,以下程序段运行后,x的值是______。
a=b=c=0;
x=35;
if(!
a)
x--;
elseif(b);
if(c)x=3;
elsex=4;
A.34
C.35
D.3
12、在执行以下程序时,为了使输出结果为:
t=4,则给a和b输入的值应满足的条件是______。
main
()
{
ints,t,a,b;
scanf("
%d,%d"
a,&
b);
s=1,
t=1;
if(a>0)s=s+1;
if(a>b)t=s+1;
elseif(a==b)
t=5;
elset=2*s;
printf("
%d\n"
,t);
}
A.a>b
B.a<b<0
C.0<a<b
D.0>a>b
13、当执行以下程序段时,______。
x=-1;
do{
x=x*x;
}while
(!
x);
A.循环体将执行1次
B.循环体将执行2次
C.循环体将执行无限次
D.系统将提示有语法错误
14、以下程序的输出结果是______。
main()
inti,j,x=0;
for
(i=0;
i<2;
i++)
{
x++;
for(j=0;
j<3;
j++)
if(j%2)
continue;
}
x=%d\n"
,x);
A.x=4
B.x=8
C.x=6
D.x=12
15、以下叙述中,正确的是______。
A.do…while语句构成的循环不能用其他语句构成的循环来代替
B.do…while语句构成的循环只能用break语句退出
C.用do…while语句构成的循环,在while后的表达式为非零时结束循环
D.用do…while语句构成的循环,在while后的表达式为零时结束循环
16、以下程序段的while循环执行的次数是______。
intk=0;
while(k=1)k++;
A.无限次
B.有语法错,不能执行
C.一次也不执行
D.执行1次
17、以下程序执行后,sum的值是______。
inti,
sum;
for(i=1;
i<6;
i++)
sum+=i;
,sum);
B.14
C.不确定
D.0
18、下列程序语句中,不正确的是______。
A.maia()
{floata,b,c;
%f,%f"
c=add(a,b);
……
intadd(floatx,floaty)
{……}
B.main()
floatadd(floatx,floaty)
C.floatadd()
maia()
D.floatadd(floatx,floaty)
main()
floata,b,c;
c=add(a,b);
……
19、关于return语句,正确的说法是______。
A.在主函数和其他函数中均可出现
B.必须在每个函数中出现
C.可以在同一个函数中出现多次
D.只能在除主函数之外的函数中出现一次
20、下列叙述中,正确的一条是______。
A.putchar函数可以输出一个字符串
B.在printf("
%c"
,c)函数中,两个c是一样的
C.语句printf("
%d%%"
,1)的输出结果为1%
D.用scar函数输入数据时可以规定精度,例如scanf("
%7.2f"
a)
21、设有以下说明和定义:
typedefunion
longi;
intk[5];
charc;
}DATE;
structdate
intcat;
DATEcow;
doubledog;
}too;
DATEmax;
则下列语句的执行结果是______。
,sizeof
(structdate)
+sizeof(max));
A.26
B.30
C.18
D.8
22、以下程序运行后,输出结果是______。
#include<stdio.h>
ss
(char
*s)
char*p=s;
while(*.p)p++;
return(p-s);
char*a="
abded"
;
inti;
i=ss((A);
print
("
,i);
A.8
C.6
D.5
23、若有说明:
long*p,a;
则不能通过scanf语句正确给输入项读入数据的程序段是______。
A.*p=&
a;
%ld"
,p);
B.p=(long*)malloc(8);
C.scanf("
,p=&
a);
D.scanf("
24、以下程序的输出结果是______。
charch[3][4]={"
123"
,"
456"
78"
},*p[3];
inti;
for(i=0;
i<3;
p[i]=ch[i];
%s"
,p[i]);
A.123456780
B.123456780
C.12345678
D.147
25、以下程序的输出结果是______。
#include
char*p1,*p2,str[50]="
ABCDEFG"
p1="
abcd"
p2="
efgh"
strcpy(str+1,p2+1);
strcpy(str+3,p1+3);
,str);
A.AfgdEFG
B.Abfhd
C.Afghd
D.Afgd
26、以下程序的输出结果是______。
charw[][10]={"
ABCD"
EFGH"
IJKL"
MNOP"
),k;
for(k=1;
k<3;
k++)
%s\n"
,w[k]);
A.ABCD
FGH
KL
M
B.ABCD
EFG
IJ
C.EFG
JK
O
D.EFGH
UKL
27、若输入173253,则以下程序的运行结果为______。
unsigneda;
intn1,n2;
%o"
,getbits(a,4,8));
getbits(value,n1,n2)
unsignedvalue;
int
n1,n2;
unsignedz;
z=~0;
z=(z>>n1)&
(z<<(16-n2));
z=value&
z;
z=z>>(16-n2);
return(z);
A.173253
B.6
D.173
28、若有以下定义,则正确的switch语句是______。
float
x;
a,b;
A.switch(x)
{case1.0:
*\n"
csse2.0:
**\n"
B.switch(x)
{case1,2:
case3:
C.switch(a+b)
{case1:
\n"
case1+2:
D.switch(a+b);
case2:
29、当a=1、b=3、c=5、d=4时,执行下面一段程序后,x的值为______。
if
(a<b)
(c<d)
x=1;
else
(a<c)
(b<d)
x=2;
else
x=3;
x=6;
x=7;
A.1
B.2
D.6
30、若a、b、c1、c2、x、y均是整型变量,则正确的switch语句是______。
A.swich(a+b);
case1:
y=a+b;
break;
case0:
y=a-b;
}
case3:
y=b-a,break;
B.switch(a*a+b*b)
C.switcha
casec1:
casec2:
x=a*d;
default:
x=a+b;
D.switch(a-b)
y=a*b;
case4:
case10:
case11:
二、填空题
请将每一个空的正确答案写在序号为【1】~【15】的横线上。
注意:
以命令关键字填空的必须拼写完整。
1、在线性结构中,第一个结点没有前驱结点,其余每个结点有且只有
【1】
个前驱结点;
最后一个结点没有后继结点,其余每个结点有且只有
【2】
个后继结点。
2、若对长度为90的线性表进行分块查找,其中每块子表长度为9。
如果在索引表查找过程中进行顺序查找,那么平均查找长度为
【3】
。
3、若有以下定义语句,则不移动指针p,并且通过指针p引用值为98的数组元素的表达式是
【4】
intw[10]={23,54,10,33,47,98,72,80,61},*p=w;
4、设有以下结构类型说明和变量定义,则变量a在内存所占字节数是
【5】
struct
stud
charnum[6];
ints[4];
doubleave;
}
a,*p;
5、如果输入'
1'
、'
2'
3'
4'
,则以下程序的运行结果为
【6】
#include<stdio.h>
inti,k;
k=0;
i<4;
while
(1)
c=getchar();
if(c>='
0'
&
c<='
9'
)
k=k*10+c-'
k=%d\n"
,k);
6、若输入12、3、2、5、7,则以下程序的运行结果为
【7】
intmax,min;
voidmax_min_value();
inti,number[5];
输入5个整数;
i<5;
number[i]);
maxminvalue(number,5);
max=%d,min=%d\n"
,max,min);
getch();
voidmax_min_value(array,n)
intarray[],n;
int*p;
max=min=*array;
for(p=array+1;
p<array+n;
p++)
if(*p>max)max=*p;
elseif(*p<min)min=*p;
7、以下程序的运行结果为
【8】
#defineFORMAT"
%u,%u"
inta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
printf(FORMAT,**a,*a[0]);
printf(FORMAT,*(a[0]+1),*&
a[0][1]);
printf(FORMAT,a[1][0],*(*(a+1)+0));
8、若输入21、23、34、11、2、6,则以下程序的运行结果
【9】
char+p,num[6];
%d,"
num[i]);
num[5]);
p=&
num[0];
sort(p,6);
for(i=0;
,num[i]);
,num[5]);
sort(p,m)
char*p;
intm;
charchange,*p1,*p2;
i<m/2;
p1=p+i;
p2=p+(m-1-i);
change=*p1;
*p1=*p2;
*p2=change;
9、若输入Ihaveatest.#,则以下程序的运行结果为
【10】
FILE*fp;
charstr[100],filename[10];
i=0;
if
((fp=fopen("
test"
w"
))==NULL)
can
not
open
the
file!
exit(0);
getchar();
gets(str);
while(str[i]!
='
#'
)
(str[i]>='
a'
&
str[i]<='
z'
str[i]=str[i]-32;
fputc(str[i],fp);
i++;
fclose(fp);
fp=fopen("
r"
fgets(str,strlen(str)+1,fp);
10、当先后输入1、3、4、12、23时,屏幕上出现
【11】
再输入12时,则屏幕上出现
【12】
#include
<stdio.h>
#define
N
5
int
i,j,number,top,bott,min,loca,a[N],flag;
char
c;
Please
input
5
numbers
(a[i]>a[i-1])\n"
a[0]);
i=1;
while
(i<N)
a[i]);
(a[i]>=a[i-1))
i++;
for
i<N;
,a[i]);
flag=1;
(flag)
number);
loca=0;
top=0;
bott=N-1;
((number<a[0])||(number>a[N-1]))
loca=-1;
while
((loca==0)
(top<=bott))
min=(bott+top)/2;
if(number==a[min])
loca=min;
%d
is
%dth
number\n"
,number,loca+1);
(number<a[min])
bott=min-1;
top=min+1;
(loca==0||loca==-1)
in
list.\n"
,number);
c=getchar();
(c=='
N'
||c=='
n'
flag=0;
11、求任意一个数(用16位二进制码表示)的补码。
{
unsignedinta;
【13】
%o\n"
,getbits(a));
unsigned
getbits(value)
unsignedintvalue;
unsignedintz;
z=
【14】
(z==0100000)
【15】
z=value;
return(z);
答案:
1、A 2、A 3、B 4、B 5、B 6、B 7、D 8、A 9、D 10、C 11、B 12、C 13、A 14、B 15、D 16、A 17、C 18、B 19、C 20、C 21、B 22、D 23、A 24、C 25、D 26、D 27、B 28、C 29、B 30、D
1、[1]1
[2]1 2、10.5 3、*(p+5) 4、22 5、k=1234 6、max=12,min=2 7、1,1
3,3
9,9 8、6,2,11,34,23,21 9、IHAVEATEST. 10、[11]1
3
4
12
23
[12]12isthe4thnumber. 11、[13]unsignedintgetbits()
[14]value&
0100000
[15]z=~value+1