计算机二级C37真题含答案与解析交互.docx
- 文档编号:15001728
- 上传时间:2023-06-29
- 格式:DOCX
- 页数:47
- 大小:33.25KB
计算机二级C37真题含答案与解析交互.docx
《计算机二级C37真题含答案与解析交互.docx》由会员分享,可在线阅读,更多相关《计算机二级C37真题含答案与解析交互.docx(47页珍藏版)》请在冰点文库上搜索。
计算机二级C37真题含答案与解析交互
计算机二级(C)37
(总分3040,做题时间120分钟)
选择题(1-10题每题2分,11-50题每题1分,共60分)
1.
DOS命令“COPY/?
”的功能是()。
A 将当前盘当前目录中的所有文件复制到当前盘的根目录下
B 将当前盘当前目录中所有以单个字符命名的文件复制到当前盘的根目录下
C 以提示方式复制文件
D 显示COPY命令的帮助信息
分值:
60
答案:
D
2.
若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是【】。
A ++x,y=x--
B x+l=y
C x=x+10=x+y
D double(x)/10
分值:
60
答案:
A
选项A)为C语言中的逗号表达式。
赋值表达式的左侧不能是表达式。
在进行强制类型转换时,数据类型两边的圆括号不能省略。
3.
有以下程序
voidf(intn,int*r)
{intrl=0;
if(n%3=0)rl=n/3;
elseif(n%5=0)rl=n/5;
elsef(n,&r1);
*r=rl;
}
main()
{intrn=7,r;
f(m,&);printf("%d",r);
}
程序运行后的输出结果是【】。
A 2
B 1
C 3
D 0
分值:
60
答案:
A
本题考查了函数的递归调用。
在f函数中,当m=7时,程序执行"f(n,&r1);"语句,递归调用f(6,&r1),程序执行"r1=n/3;"语句,即r1=6/3=2,然后执行",*r=r1;"语句,所以输出结果为2。
4.
在DOS环境下,代表键盘和显示器的设备文件名为()。
A PRN
B CON
C NUL
D LPT
分值:
60
答案:
B
5.
有以下程序:
voidfun(int*a,inti,intj)
{intt;
if(i<j)
{t=a[i];a[i]=a[j];a[j]=t;
i++;j--;
fun(a,i,j);
}
}
main()
{intx[]={2,6,1,8},i;
fun(x,0,3);
for(i=0;i<4;i++)printf("%2d",x[i]);
printf("\n");
}
程序运行后的输出结果是()。
A 1268
B 8621
C 8162
D 8612
分值:
60
答案:
C
6.
有以下程序:
structSTU
{charname[10];intnum;floatTotalScore;};
voidf(structSTU*p)
{structSTUs[2]={{"SunDan",20044,550},{"Penghua",20045,537}},*q=s;
++p;++q;*p=*q;
}
main()
{structSTUs[3]={{"YangSan",20041,703},{"LiSiGuo",20042,580}};
f(s);
printf("%s%d%3.0f\n",s[1].name,s[1].num,s[1].TotalScore);
}
程序运行后的输出结果是【】。
A SunDan20044550
B Penghua20045537
C LiSiGuo20042580
D SunDan20041703
分值:
60
答案:
B
本题将结构体数组s的首地址传递给了结构体指针变量p,并在函数f中改变了指针变量p所指向的第二个结构体中的成员变量,这一改变,也就是改变了主函数中s[1]的成员变量,故程序输出的值为Penghua20045537。
7.
有以下程序
main()
{inta=1,b=3,C=5,*P;
int*pl=&a,,*p2=&b,*p3=&c;
*P=*pl*(*p2);
printf("%d\n",*P);
}
执行后的输出结果是【】。
A 1
B 2
C 3
D 4
分值:
60
答案:
C
程序使指针pl、p2、p3指向a、b、c值所存放的地址空间。
然后再将指针变量*pl、*p2运算所得的值放入指针变量*p,即放入了c值所存放的地址。
则最后输出c的时候得到的值就是c地址里面的值,即1*3:
3。
8.
以下选项中不能作为合法常量的是【】。
A 1.234e04
B 1.234e0.4
C 1.234e+4
D 1.234e0
分值:
60
答案:
B
指数形式的实型常量要求字母e(或E)之前必需有数字,且e后面的指数必须为整数,所以本题中选项B非法。
9.
以下选项中不能正确把c1定义成结构体变量的是()。
A typedef struct
{int red;
int green;
int blue;
} COLOR;
COLOR cl;
B struct color cl
{int red;
int green;
int blue;
}
C structcolor
{int red;
int green;
int blue;
}cl;
D struct
{int red;
int green;
intblue;
}cl;
分值:
60
答案:
B
10.
以下叙述中错误的是【】。
A 可以通过typedef增加新的类型
B 可以用typedef将已存在的类型用一个新的名字来代表
C 用typedef定义新的类型名后,原有类型名仍有效
D 用typedef可以为各种类型起别名,但不能为变量起别名
分值:
60
答案:
A
关键字typedef的作用只是将C语言中的已有的数据类型作了置换,并不是增加新的类型。
11.
有以下定义:
#include<stdio.h>
char a[10],*b=a;
不能给数组a输入字符串的语句是()。
A gets(a)
B gets(a[0])
C gets(&a[0]);
D gets(b);
分值:
60
答案:
B
12.
有以下程序:
main()
{inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2;
printf("%d\n",*p+*q);
}
程序运行后的输出结果是【】。
A 16
B 10
C 8
D 6
分值:
60
答案:
B
数组a各元素a[0]~a[9]的值依次为1~10;在程序的说明部分,指针变量p初始化为&a[3],即*p的值为4;指针变量q初始化为p+2,即&a[3]+2,所以*q的值为6,所以*p+*q的值为10。
13.
下列叙述中正确的是【】。
A 算法的效率只与问题的规模有关,而与数据的存储结构无关
B 算法的时间复杂度是指执行算法所需要的计算工作量
C 数据的逻辑结构与存储结构是一一对应的
D 算法的时间复杂度与空间复杂度一定相关
分值:
60
答案:
B
根据时间复杂度和空间复杂度的定义可知,算法的时间复杂度与空间复杂度并不相关。
数据的逻辑结构就是数据元素之间的逻辑关系,它是从逻辑上描述数据元素之间关系的,是独立于计算机中的,数据的存储结构是研究数据元素和数据元素之间的关系如何在计算机中表示,它们并非一一对应。
算法的执行效率不仅与问题的规模有关,还与数据的存储结构有关。
14.
有以下程序:
main()
{intx[]={1,3,5,7,2,4,6,0},i,j,k;
for(i=0;i<3;i++)
for(j=2;j>=i;j--)
if(x[j+1]>x[j]){k=x[j];x[j]=x[j+1];x[j+1]=k;}
for(i=0;i<3;i++)
for(j=4;j<7-i;j++)
if(x[j+1]>x[j]){k=x[j];x[j]=x[j+1];x[j+1]=k;}
for(i=0;i<3;i++)
if(x[j]>x[j+1]){k=x[j];x[j]=x[j+1];x[j+1]=k;}
for(i=0;i<8;i++)printf("%d",x[i]);
printf("\n");
}
程序运行后的输出结果是()。
A 75310246
B 01234567
C 76310462
D 13570246
分值:
60
答案:
A
15.
所谓“裸机”是指()。
A 单片机
B 单板机
C 不装备任何软件的计算机
D 只装备操作系统的计算机
分值:
60
答案:
C
16.
设有如下程序段:
intx=2002,y=2003;
printf("%d\n",(x,y));
则以下叙述中正确的是()。
A 输出语句中格式说明符的个数少于输出项的个数,不能正确输出
B 运行时产生出错信息
C 输出值为2002
D 输出值为2003
分值:
60
答案:
D
17.
有以下程序
intfun1(doublea){returna*=a;}
intflun2(doubleX,doubleY)
{doublea=0,b=0;
a=funl(X);b=funl(Y);return(int)(a+b);
}
main()
{doubleW;w=fun2(1.1,2.0);……}
程序执行后变量W中的值是【】。
A 5.21
B 5
C 5
D 0
分值:
60
答案:
C
题中变量w的定义为double型,函数fun2()的定义为int型,按照各类数值型数据间的混合运算,整型数据被转换为实型数据。
18.
有以下程序:
main()
{intm=3,n=4,x;
x=-m++;
x=x+8/++n;
printf("%d\n",x);
}
程序运行后的输出结果是()。
A 3
B 5
C -1
D -2
分值:
60
答案:
D
19.
以下程序中函数f()的功能是将n个字符串按由大到小的顺序进行排序。
#include<string.h>
voidf(charp[][10],intn)
{chart[20];inti,j;
for(i=O;i<n-1;i++)
for(j=i+1;j<n;j++)
if(strcmp(p[i],p[j])<0)
{strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}}
main( )
{charp[ ][10]={"abc","aabdfg","abbd","dcdbe","cd"};inti;
f(p,5);printf("%d\n",strlen(p[O]));
}
程序运行后的输出结果是()。
A 6
B 4
C 3
D 5
分值:
60
答案:
C
对字符串比较的方法是依次对两字符串对应位置上的字符两两比较,当出现第一对不相同的字符时,即由这两个字符(ASCII码值)决定所在串的大小。
20.
C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是()。
A void
B int
C float
D double
分值:
60
答案:
B
21.
以下程序企图把从终端输入的字符输出到名为abc.txt的文件中,直到从终端读入字符#号时结束输入和输出操作,但程序有错。
#include <stdio.h>
main( )
{ FILE*fout;charch;
fout=fopen(''abc.txt'',''w'');
ch=fgetc(stdin);
while(ch!
=''#'')
{ fputc(ch,fout);
ch=fgetc(stdin);
}
fclose(fout);
}
出错的原因是()。
A 函数fopen调用形式有误
B 输入文件没有关闭
C 函数fgetc调用形式有误
D 文件指针stdin没有定义
分值:
60
答案:
A
22.
有以下程序
#include
#defineN5
#defineMN+1
#definef(x)(x*M)
main()
{inti1,i2;
i1=f
(2);
i2=f(1+1);
printf("%d%d\n",i1,i2);
}
程序的运行结果是【】。
A 1212
B 117
C 1111
D 127
分值:
60
答案:
B
根据宏替换的替换规则,我们可知,f
(2)=2*N+1=2*5+1=11,f(1+1)=1+1*N+1=1+1*5+1=7。
因此,本题的答案为选项B。
23.
以下叙述中正确的是【】。
A 调用printf函数时,必须要有输出项
B 使用putchar函数时,必须在之前包含头文件stdio.h
C 在C语言中,整数可以以十二进制、八进制或十六进制的形式输出
D 调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码
分值:
60
答案:
B
在使用标准输入输出库函数(除了Printf和scanf)前,必须要用预编译命令"#include"将头文件"stdio.h"包括到用户源文件中。
24.
有以下程序段:
main( )
{inta=5,*b,**c;
c=&b;b=&a;
……
}
程序在执行了c=&b;b=&a;语句后,表达式:
**c的值是()。
A 变量a的地址
B 变量b中的值
C 变量a中的值
D 变量b的地址
分值:
60
答案:
C
25.
有以下程序
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〈回车〉
则运行结果为()。
A 6
B 8
C 3
D 4
分值:
60
答案:
A
26.
有以下定义和语句:
inta[3][2]={1,2,3,4,5,6,},*p[3];
p[0]=a[1];
则*p[0]+1)所代表的数组元素是()。
A a[0][1]
B a[1][0]
C a[1][1]
D a[1][2]
分值:
60
答案:
C
27.
若有以下说明和定义
typedefint*INTEGER;
INTEGERp,*q;
以下叙述正确的是()。
A p是int型变量
B p是基类型为int的指针变量
C q是基类型为int的指针变量
D 程序中可用INTEGER代替int类型名
分值:
60
答案:
B
语句typedefint*INTEGER;定义了一个新类型名INTEGER,因此语句INTEGERp,*q;就相当于int*p,**q;。
28.
有以下程序
fun(intX,intY){return(X+Y);}
main()
{inta=1,b=2,C=3,sum;
sum=fun((a++,b++,a+b),C++);
printf("%d\n",sum);
}
执行后的输出结果是【】。
A 6
B 7
C 8
D 9
分值:
60
答案:
C
变量a.b,c的初始值分别为1,2,3。
因此逗号表达式"a++,b++,a+b"的值等于5,表达式c++的值为3,这样主函数main()中调用子函数的表达式为"fun(5,3);",其返回值等8。
所以变量sum的值等于8。
29.
有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向一个链表中的三个连续结点。
structnode
{intdata;
structnode*next;
}*p,*q,*r;
现要将q和r所指结点的先后位置交换,同时要保持链表的连续,以下错误的程序段是()。
A r->next=q;q->next=r->next;p->next=r;
B q->next=r->next;p->next=r;r->next=q;
C p->next=r;q->next=r->next;r->next=q;
D q->next=r->next;r->next=q;p->next=r;
分值:
60
答案:
A
30.
以下不合法的字符常量是【】。
A ’\018’
B ’\’
C ’\\’
D ’\xcc’
分值:
60
答案:
A
字符常量是括在一对单引号内的字符。
选项A)‘\018’是八进制字符串格式,所以里面的数不能大于8。
选项B、C、D都是转义字符。
31.
设变量a、b、c、d和y都已正确定义并赋值。
若有以下if语句:
if(a<B)
if(c=D)y=0;
elsey=1;
该语句所表示的含义是【】。
A
B
C
D
分值:
60
答案:
C
if语句中包含一个或多个if语句称为if语句的嵌套。
在C语言中,从最内层开始,else总是与它上面最近的(未曾配对的)if配对。
故本题中y=1的条件是c≠d,又因为此if语句是前一个if语句的内层嵌套语句,所以在满足内层嵌套的if语句之前,必须先满足外层的if语句中的条件表达式"a<b",所以选项C是正确的。
32.
下列叙述中正确的是【】。
A 软件测试应该由程序开发者来完成
B 程序经调试后一般不需要再测试
C 软件维护只包括对程序代码的维护
D 以上三种说法都不对
分值:
60
答案:
D
因为测试的目的在于发现错误,从心理学角度讲,由程序的编写者自己进行测试是不合适的,为了达到最好的测试效果,应该由独立的第三方进行测试工作,所以选项A错误;程序调试,修改一个错误的同时可能引入了新的错误,解决的办法是在修改了错误之后,必须进行回归测试,所以选项B错误;所谓软件维护,就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程,可见选项C也是错误的。
33.
若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)
s=a;
for(b=1;b<=c;b++)s=s+1;
则与上述程序段功能等价的赋值语句是()。
A s=a+b;
B s=a+c;
C s=s+c;
D s=b+c;
分值:
60
答案:
B
34.
有以下程序:
main( )
{intx=3,y=2,z=1;
printf("%d\n",x/y&~z);
}
程序运行后的输出结果是()。
A 3
B 2
C 1
D 0
分值:
60
答案:
D
35.
有以下程序
#include<stdio.h>
voidWriteStr(char*fn,char*str)
{FILE*fp;
fp=fopen(fn"w");fputs(str,fp);fclose(fp);
}
main()
{
WriteStr("t1.dat"start");
WriteStr("t1,dat","end");
}
程序运行后,文件t1.dat中的内容是【】。
A start
B end
C startend
D endrt
分值:
60
答案:
B
两次使用"写入"的方式打开同一个文件,在第二次打开时,文件指针指向文件头,所以此次写入的数据覆盖了文件原有的数据,故本题中t1.dat的内容为end。
36.
有以下函数:
fun(char*a,char*b)
{while((*a!
=''\''0&&(*b!
=''\0'')&&(*a=*b))
{a++;b++;}
return(*a-*b);
}
该函数的功能是【】。
A 计算a和b所指字符串的长度之差
B 将b所指字符串连接到a所指字符串中
C 将b所指字符串连接到a所指字符串后面
D 比较a和b所指字符串的大小
分值:
60
答案:
D
字符串的比较规则是对两个字符串自左至右逐个字符相比(按ASCII码值大小比较),直到出现不同的字符或遇到'\0'为止,相等,则返回0,否则返回第一个不等字符串的ASCII码的差值。
37.
有以下程序
voidfunl(char*P)
{char*q;
q=P;
while(*q!
=’\0’)
{(*q)++;q++;)
}
main()
{chara[]={"Program"),*p;
P=&a[3];fun1(P);printf("%s\n",a);
}
程序执行后的输出结果是【】。
A Prohsbn
B Prphsbn
C Progsbn
D Program
分值:
60
答案:
A
(*q)++是q所指的字符加1,q++就是指针移到下一个字符。
38.
在结构化程序设计中,模块划分的原则是【】。
A 各模块应包括尽量多的功能
B 各模块的规模应尽量大
C 各模块之间的联系应尽量紧密
D 模块内具有高内聚度、模块间具有低耦合度
分值:
60
答案:
D
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 二级 C37 真题含 答案 解析 交互