福建省计算机二级c语言模拟卷汇总Word下载.docx
《福建省计算机二级c语言模拟卷汇总Word下载.docx》由会员分享,可在线阅读,更多相关《福建省计算机二级c语言模拟卷汇总Word下载.docx(65页珍藏版)》请在冰点文库上搜索。
8.为表示x≥y≥z,须用的C语言表达式为【9】。
【9】A)(x>
=y)&
&
(y>
=z)B)(x>
=y)AND(y>
=x)
C)x>
=y>
=zD)(x>
=z)
9.设inta,b;
,用语句scanf('
%d%d"
&
b);
输入a、b值时,不能作为输入数据分隔符的是【10】。
【10】A)空格B),C)回车 D)[Tab]
10.以下程序的运行结果是【11】。
main()
{inta=-1,b=4,k;
k=((a++<
=0)&
(!
b--<
=0));
%d%d%d"
k,a,b);
}
【11】A)003B)012C)103D)112
11.以下程序的运行结果是【12】。
{intx=023;
printf("
%d"
x);
【12】A)35B)19C)23D)023
12.sizeof(double)是【13】。
【13】A)一种函数调用B)一个双精度表达式
C)一个整型表达式D)一个不合法的表达式
13.以下程序运行时,若从键盘输入5,则输出结果是【14】。
{inta;
scanf("
a);
if(a++>
5)printf("
a);
elseprintf("
a--);
【14】A)7B)4C)5D)6
14.以下程序运行后,a的值是【15】。
{inta,b;
for(a=1,b=2;
a<
=100;
a++)
{
if(b>
=20)break;
if(b%3==1)
{b+=3;
continue;
b+=5;
【15】A)10B)9C)8D)7
15.以下程序段的运行结果是【16】。
intx=3;
do{
%3d,"
x-=2);
}while(!
(--x));
【16】A)1B)30C)死循环D)1-2
16.下列程序段中,非死循环的是【17】。
【17】A)inti=100;
B)intk=0;
C)ints=10;
D)for(;
)
while
(1)do{while(++s%2+s%2)
{i=i%100+1;
++k;
s++;
if(i>
=100)break;
}while(k>
=0);
}printf("
d\n"
k);
17.设已定义chars[]="
\"
Name\\Address\023\n"
,则字符串所占的字节数是【18】。
【18】A)19B)15C)18D)14
18.以下程序段的运行结果是【19】。
{inta[]={2,4,6,8,10},y=1,x;
for(x=0;
x<
3;
x++)y+=a[x+1];
y);
【19】A)17B)18C)19D)20
19.已定义charc[]="
Fujian"
inti;
,则下列函数调用中错误的是【20】。
【20】A)printf("
%s"
c);
B)for(i=0;
i<
8;
i++)printf("
%c"
c[i]);
C)puts(c);
D)for(i=0;
i++)puts(c[i]);
20.已定义charx[8];
,为了给该数组赋值,下列语句正确的是【21】。
【21】A)x[8]="
TurboC"
B)x="
C)x[]="
7;
i++)x[i]=getchar();
21.以下程序运行结果是【22】。
{chara[][5]={"
ABCD"
"
1234"
abcd"
5678"
EFGH"
};
for(i=0;
a[i]);
【22】A)A1aB)ABCD1234abcd
C)ABCD)ABCD1234abcd5678EFGH
22.设inta[][4]={0,0};
,则下列描述错误的是:
【23】。
【23】A)数组a的每个元素都可得到初值0
B)二维数组a的第一维大小为1
C)数组a的行数为1
D)只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0
23.设有下列语句,则【24】是对a数组元素的不正确引用,其中0≤i<
10。
inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;
【24】A)a[p-a]B)*(&
a[i])C)p[i]D)*(*(a+i))
24.若有以下程序:
main
{charch[]="
Iamstudent!
"
*p;
p=ch;
%x\n"
p);
p+9);
其中有两个printf(),如果第一个printf()运行结果是ffd6,则第二个printf()运行结果是【25】。
【25】A)ffdfB)ffe8C)ffd6D)ffcf
25.以下程序的运行结果是【26】。
{inti;
charaa[][3]={'
a'
'
b'
c'
d'
e'
f'
char(*p)[3]=aa;
2;
i++)
if(i==0)aa[i][i+1]=**(p++);
%c\n"
**p);
【26】A)aB)bC)dD)c
26.设有下列语句:
charstr1[]="
string"
str2[8],*str3,*str4="
则【27】是对库函数strcpy的不正确调用。
此函数用来复制字符串。
【27】A)strcpy(str3,"
HELLO3"
);
B)strcpy(str2,"
HELLO2"
C)strcpy(str1,"
HELLO1"
D)strcpy(str4,"
HELLO4"
27.以下程序是将一个整数存放到一个数组中,存放时按逆序存放,例如483存放成384请选择填空完善程序。
voidconvert(char*a,intn)
if((i=n/10)!
=0)convert(【28】,i);
*a=n%10+'
charstr[10]="
{intnumber;
scanf("
number);
convert(str,number);
puts(str);
【28】A)a++B)a+1C)a--D)a-1
28.以下程序的运行结果是【29】。
fun3(intx)
{staticinta=3;
a+=x;
returna;
{intk=2,m=1,n;
n=fun3(k);
n=fun3(m);
n);
【29】A)3B)4C)6D)9
29.以下程序的运行结果是【30】。
voidast(intx,inty,int*cp,int*dp)
{
*cp=x+y;
*dp=x-y;
{inta=4,b=3,c,d;
ast(a,b,&
c,&
d);
%d,%d\n"
c,d);
【30】A)7,1B)1,7C)7,-1D)c、d未赋值,编译出错
30.以下程序的运行结果是【31】。
{intx=1,y=2,z;
z=x>
y?
++x:
++y;
%d,%d,%d\n"
x,y,z);
【31】A)1,2,3B)1,3,3C)2,3,3D)2,2,3
31.若有以下程序段,则z的二进制值是【32】。
intx=3,y=2,z;
z=x^y<
<
【32】A)0000000000001011B)0000000000000100
C)0000000011110100D)0000000000000001
32.以下程序段的运行结果是【33】。
{inti=4,j;
j=i;
pic(i+2*j-2,'
*'
putchar('
\n'
for(j-=2;
j>
=0;
j--)
{pic(3-j,'
'
pic(i+2*j,'
pic(intlen,charc)
intk;
for(k=1;
k<
=len;
k++)
putchar(c);
【33】A)*B)**********C)****D)**********
***************************
*****************************
*******************************
33.指出以下程序所指处的运行结果。
voidf1(intx,inty,int*sum)
{*sum=x+y;
++x;
voidf2(inta,intb,int*product)
{*product=a*b;
a+=b;
b-=a;
{inta=10,b=20,c=100,(*f)();
f=f1;
(*f)(a,b,&
c);
printf("
a,b,c);
/*运行结果是【34】*/
f=f2;
/*运行结果是【35】*/
【34】A)11,21,100B)11,21,30C)10,20,30D)11,21,33
【35】A)30,-10,300B)30,-10,200C)33,-12,231D)10,20,200
34.以下程序中的循环执行了【36】次。
#defineN2
#defineMN+1
#defineNUM(M+1)*M/2
{inti,n=0;
NUM;
n++;
【36】A)5B)6C)8D)9
35.编译预处理命令以【37】结尾。
【37】A);
B).C)\0D)回车键
36.若定义如下结构,则能打印出字母M的语句是【38】。
structperson{
charname[9];
intage;
structpersonclass[10]={"
Wujun"
20,"
Liudan"
23,"
Maling"
21,"
zhangming"
22};
【38】A)printf("
class[3].name);
B)printf("
class[2].name[0]);
C)printf("
class[2].name[1]);
D)printf("
class[3].name[1]);
37.以下程序段的运行结果是【39】。
enumweekday{aa,bb=2,cc,dd,ee}week=ee;
week);
【39】A)eeB)5C)2D)4
38.以下程序的功能是【40】。
#include<
{FILE*fp;
longintn;
fp=fopen("
wj.txt"
rb"
fseek(fp,0,SEEK_END);
n=ftell(fp);
fclose(fp);
%ld"
【40】A)计算文件wj.txt的起始地址B)计算文件wj.txt的终止地址
C)计算文件wj.txt的长度D)将文件指针定位到文件末尾
12.2.2填空题
(本大题共20个空,每个空2分,共40分。
请将答案写在答题卡对应栏中,答在试卷上不得分)
1.以下程序的运行结果是【1】。
floata=365.7189;
intb=12,c;
c=(int)a+b;
a=%.2f,b=%d,c=%d\n"
2.堆栈是一种先进后出的数据结构。
以下程序模拟堆栈。
#defineN10
inta[N];
inti,*p=a;
while(p<
【2】)
%d"
p++);
/*压栈*/
while(p>
a)
【3】);
/*出栈*/
3.将指定的字符串用冒泡排序法从大到小排序。
{char*str="
VisualFoxpro"
【4】;
intn,i;
n=【5】;
while(n-->
1)
n;
if(str[i]<
str[i+1]){temp=str[i];
str[i]=str[i+1];
str[i+1]=temp;
%s\n"
str);
4.以下程序的功能是将用户运行程序时键入的参数作为字符串连接起来。
string.h>
main(intargc,char*argv[])
for(i=1;
argc-1;
strcat(argv[1],【6】);
argv[1]);
5.以下程序的运行结果是【7】。
#definePR(ar)printf("
ar)
intj,a[]={1,3,5,7,9,11,15},*p=a;
for(j=3,j;
switch(j)
case1:
case2:
PR(*p++);
break;
case3:
PR((*p)--);
6.以下程序实现从10个数中找出最大值和最小值。
intmax,min;
find_max_min(int*p,intn)
int*q;
max=min=*p;
for(q=p;
q<
【8】;
q++)
if(【9】)max=*q;
elseif(min>
*q)min=*q;
inti,num[10];
Input10numbers:
10;
i++)scanf("
num[i]);
find_max_min(【10】,10);
max=%d,num=%d\n"
max,min);
7.以下程序是将1到9这9个数字分成三个3位数,要求第一个3位数正好是第二个3位数的二倍,是第三个3位数的三倍(重复的数应剔除)。
根据题意,只要确定第一个3位数后,再计算另外两个数,而第一个3位数可设置在(111~333)范围内。
inta[9];
intm;
for(m=111;
m<
=333;
m++)
if(ok(m,a)&
ok(2*m,a+3)&
ok(3*m,【11】))
m,2*m,3*m);
ok(intt,int*z)/*分解t,存入z指向的三个数组元素,若满足,要求返回1*/
int*p1,*p2;
for(p1=z;
p1<
z+3;
p1++)
*p1=t%10;
/*分解整数m*/
t=【12】;
for(p2=a;
p2<
p1;
p2++)/*查询分解出的数字是否重复*/
if(*p1==0||【13】)
return0;
【14】;
8.以下程序的运行结果是如下矩阵。
矩阵中的每个元素的形成规律是:
正对角线和其对角线以上的元素其值为1,其他元素值为:
行下标-列下标+1。
11111
21111
32111
43211
54321
{
inti,j,a[5][5];
for(i=0;
=4;
for(j=0;
j<
5;
j++)
if(【15】)a[i][j]=1;
else【16】;
j++)printf('
%2d"
a[i][j]);
\n"
9.以下程序通过指针连接两个字符串。
charscat(char*str1,char*str2)/*函数返回指向str1指针*/
char*p=str1;
while(*p!
=【17】)p++;
while(*p++=【18】);
/*将str2连接到str1的后面*/
returnstr1;
chara[50],b[30];
Enterstring1:
"
Enterstring2:
b);
a+b=%s\n"
scat(a,b);
10.以下程序用来统计已建好的单向链表中结点的个数。
其中head指向链表首结点,count用来统计结点个数。
structnode
chardata;
structnode*next;
structnode*p,*head;
intcount=0;
p=head;
while(p!
=【19】)
count++;
p=【20】;
count);
12.2.3参考答案与分析
1.选择题:
(每题1.5分)
【1】C
分析:
C语言的语句以“;
”结束,所以只有答案C是对的。
【2】B
y==3是关系运算符,其值或1或0,此题为1。
【3】A
参见《C语言程序设计与应用教程》附录E。
【4】A
C语言中的字符是以ASCII码值存放在内存中的。
【5】D
C语言的规定,参见《C语言程序设计与应用教程》图2.6。
【6】C
分析:
C语言的规定,同[5]。
【7】A
设c=a/b,则a%b为a-c*b,代入原式c*b+a-c*b,结果为a。
【8】C
赋值语句的左端应为变量,因此答案A、B都是错误的。
答案C、D是逗号表达式,其计算原则是从左至右,而D中是将b赋给常量7,是错误的。
答案C是正确的。
【9】A
C语言语法规定。
【10】B
分析:
C语言语法规定,按其输入格式从键盘输入数据时,只能以空格、回车及Tab间隔各数据项。
【11】C
在逻辑“与”表达式中,a经a++运算后为0,而a++的值仍为-1,b经b--运算后为3,致使与逻辑表达式的两端均为非零值,所以k为1。
【12】B
x的初值为八进制数,其二进制为0000000000010011,计算各位1对应的十进制数,相加即得。
【13】C
sizeof是一个运算符,它用来计算括号内的数据类型在内存中所占据的字节数。
【14】D
见第3章参考答案3.2。
【15】D
本题与第3章的3.11相似,但在本题中,循环一开始,b+=5语句被执行,b的初值从2开始,b值的变化为2、7、10、13、16、19、22,所以a的值为7。
【16】D
所用的是do-while循环,第一次输出x的值为1,而--x表达式值为0,经非运算后为1;
第二次输出x的值为-2,再经--x,其表达式为非0值,再非运算为0,退出循环。
【17】A
答案D中无循环条件与