您的当前位置:首页正文

二级C语言分类模拟题562_真题(含答案与解析)-交互

来源:华拓网


二级C语言分类模拟题562 (总分43.5, 做题时间90分钟) 选择题 1.

有以下程序:

#include<stdio,h> main( )

{ int i,j,x=0; for(i=0;i<2;i++) { x++;

for(j=0;j<=3;j++)

{ if(j%2==0)continue;x++;} x++; }

printf(\"x=%d\\n\}

程序的运行结果是______。 SSS_SINGLE_SEL A x=4 B x=6 C x=8 D x=12

分值: 1 答案:C

[解析] 第一次循环:i=0,执行x++后x=1,执行内层循环j=0,由于j%2!=0时才执行x++,即只有j取1和3时,执行x++,此时x=1+1+1=3,跳出内层循环,执行下一条x++,x=4,第二次循环:x=1时,重复上述循环,共执行两次循环,故x最终结果是4*2=8。 2.

软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是______。 SSS_SINGLE_SEL A 学生成绩管理系统 B C语言编译程序 C UNIX操作系统 D 数据库管理系统 分值: 1 答案:A

[解析] 软件按功能可以分为:应用软件、系统软件、支撑软件。操作系统、编译程序、汇编程序、网络软件、数据库管理系统都属于系统软件。所以B、C、D选项都是系统软件,只有A选项是应用软件。 3.

下面程序的输出结果是______。 #include<stdio.h> main()

{char a[]={\"a\p=a;

printf(\"%c\\n\} SSS_SINGLE_SEL A .a B .b C .e D .f

分值: 2 答案:C 4.

下列关于栈的叙述正确的是______。

A 栈按“先进先出”组织数据 B 栈按“先进后出”组织数据 C 只能在栈底插入数据 D 不能删除数据 分值: 1 答案:B

[解析] 栈是只允许在同一端进行插入和删除运算的线性表,按“先进后出”组织数据,因此本题答案为B。 5.

以下选项中可用做C程序合法实数的是______。

SSS_SINGLE_SELSSS_SINGLE_SEL A 3.0e0.2 B .1e0 C .E9 D 9.12E

分值: 2 答案:B

[解析] A选项中E后面的指数必须为整数。C语言规定,E之前必须要有数字,所以C选项错误。E后面必须要有数字,且必须为整数,所以D选项错误。 6.

设有定义:

char s[81];int i=0;

以下不能将一行(不超过80个字符)带有空格的字符串正确读入的语句或语句组是______。 SSS_SINGLE_SEL A scanf(\"%s\

B while((s[i++]=getchar())!=\"\\n\");s[i]=\"\\0\"; C gets(s);

D do{scanf(\"%c\&s[i]);}while(s[i++]!=\"\\n\");s[i]=\"\\0\"; 分值: 2 答案:A

[解析] 字符串的输入不能使用“scanf(\"%s\“gets(s)”,因此选择A。 7.

设有定义:char str[]=\"ABCD\",*p=str;则语句printf(\"%d\\n\;的输出结果是 SSS_SINGLE_SEL A 68 B 0

C 字符D的地址 D 不确定的值 分值: 1 答案:B 8.

在软件开发中,需求分析阶段产生的主要文档是______。

SSS_SINGLE_SEL A 软件集成测试计划 B 软件详细设计说明书 C 用户手册

D 软件需求规格说明书 分值: 1 答案:D

[解析] 需求分析阶段的工作可以概括为:需求获取、需求分析、编写需求规格说明书、需求评审四个方面。所以选择D。 9.

以下叙述正确的是 ____ 。 A continue语句的作用是结束整个循环的执行

B 只能在循环体内和switch语句体内使用break语句 C 在循环体内使用break语句或continue语句的作用相同 D 从多层循环嵌套中退出时,只能使用goto语句 分值: 1 答案:B

[解析] 考查continue和break语句的使用。

[解题要点] continue是结束本次循环,直接进入到下次循环中,break用于循环语句中的作用是直接跳出本层循环,能从多层循环中退出的语句除了goto语句, exit,return等语句也能直接跳出多层循环。

[考点链接] continue和break语句在while语句中的作用。 10.

以下叙述中正确的是______。

SSS_SINGLE_SEL

SSS_SINGLE_SEL A 在对指针进行加、减算术运算时,数字1表示1个存储单元的长度 B 如果p是指针变量,则*p表示变量p的地址值 C 如果p是指针变量,则&p是不合法的表达式

D 如果P是指针变量,则*p+1和*(p+1)的效果是一样的 分值: 2 答案:A

[解析] B选项中,如果p是指针变量,则*p表示指针变量所指向元素的值,C选项,如果p是指针变量,则&p表示指针变量的地址,是地址的地址,D选项,如果p是指针变量,则*p+1表示指针变量所指向元素的值加1,*(p+1)表示指针变量指向元素下一个元素的值。所以含义不同,答案选择A。 11.

有以下程序

#include<stdio.h> void fun(int p) { int d=2;

p=d++; printf(\"%d\main() { int a=1;

fun(a); printf(\"%d\\n\程序运行后的输出结果是______。

SSS_SINGLE_SELA 32 B 12 C 21 D 22

分值: 1 答案:C

[解析] 本题考查函数调用。主函数中调用fun()函数,p=d++,d=2,选取d的值,再加1,所以输出p的值为2,再回到主函数中,直接输出a的值为1。 12.

以下程序的输出结果是______。 main()

{char st[20]=\"hello\\0\\\\\\";

printf(\"%d%d\\n\} SSS_SINGLE_SEL A 9 9 B 5 20 C 13 20 D 20 20

分值: 1 答案:B

[解析] 从题目中可知,\"\\0\"、\"\\"、\"\\\"分别为一个字符,而sizeof是求字节个数的函数,其中包括\"\\0\"占的字节;strlen函数是求数组长度的函数,其以\"\\0\"结束,因此strlen的值为5,sizeof的值为20。 13.

有以下程序:

# include <stdio.h> main() { int a=7; while(a--);

printf(\"%d\\n\}

程序运行后的输出结果是______。

SSS_SINGLE_SEL A -1 B 0 C 1 D 7

分值: 1 答案:A

[解析] 此题考查a--和--a之间的区别,当while(a--)为真循环执行,a--是执行再减1,所以答案选择A。 14.

在以下一组运算中,优先级最高的运符算是 ( )

SSS_SINGLE_SEL A <= B = C % D & &

分值: 1 答案:C 15.

算术运算符和圆括号有不同的运算优先级,对于表达式:a+b+c*(d+e),关于执行顺序,以下说法正确的是______。

A 先执行(d+e)得r2,再执行c*r2得r3,再执行a+b得r1,最后执行r1+r3得表达式最后结果

B 先执行a+b得r1,再执行(d+e)得r2,再执行c*r2得r3,最后执行r1+r3得表达式最后结果

C 先执行(d+e)得r2,再执行c*r2得r3,再执行b+r3得14,最后执行a+r4得表达式最后结果

D 先执行a+b得r1,再执行r1+c得r5,再执行(d+e)得r2,最后执行r5*r2得表达式最后结果 分值: 1 答案:B

SSS_SINGLE_SEL

[解析] 题意表达式中,圆括号的优先级最高,乘法运算符次之,加法运算符最低,同优先级中,加法运算符的结合性从左向右结合,所以题意中的表达式执行顺序是:先执行a+b得r1,再执行(d+e)得r2,再执行c*r2得r3,最后执行r1+r3得表达式最后结果,本题答案为B。 16.

以下程序段中,与语句: k=a>b?(b>c?1:0):0; 功能相同的是______。 A if((a>b)&&(h>c))k=1;else k=0; B if((a>b)||(b>c))k=1;else k=0; C if(a<=b)k=0;else if(b<=c)k=1;

D if(a>b)k=1;else if(b>c)k=1;else k=0; 分值: 2.5 答案:A

[解析] k=a>b?(b>c ? 1 : 0) : 0; a>b并且b>c,k为1,其他情况k为0,答案A。 17.

有以下程序

#include<stdio.h> void fun(int n,int*s) {

int f;

if(n==1)*s=n+1; else {

fun(n-1,&f); *s=f; } }

main() {

int x=0; fun(4,&x);

printf(\"%d\\n\}

程序运行后的输出结果是______。

SSS_SINGLE_SELSSS_SINGLE_SELA 2 B 1 C 3 D 4

分值: 2 答案:A

[解析] fun函数是递归函数,调用到n为0时*s=1+1为2,返回主函数,x为2。 18.

有以下程序:

#include <stdio.h> main() {

char c;

while((c=getchar())!=\"\\n\") {

switch(c-\"2\") {

case 0 :

case 1 : putchar(c+4);

case 2 : putchar(c+4); break; case 3 : putchar(c+3);

default : putchar(c+2); break; } }

printf(\"\\n\"); }

程序运行后从第一列开始输入以下数据: 2473<回车>

程序的输出结果是______。 SSS_SINGLE_SELA 668977 B 4444 C 6677877 D 68766

分值: 1 答案:A

[解析] 本题执行过程为:输入c=\"2\",c-\"2\"=0,首先匹配case0,依次输出6,6,后执行break语句,跳出分支结构;输入c=\"4\",c-\"2\"=2,匹配

case2,输出8,执行break语句,跳出分支结构;输入c=\"7\",c-\"2\"=5,匹配default,输出9,执行break语句,跳出分支结构;输入c=\"3\",c-\"2\"=1,匹配casel,依次输出7,7,执行break语句,跳出分支结构。输入回车,结束循环。故A选项正确。 19.

函数ftell(fp)的作用是______。 A B C D

得到流式文件中的当前位置 移动流式文件的位置指针 初始化流式文件的位置指针 以上答案均正确

SSS_SINGLE_SEL

分值: 1 答案:A 20.

设有输入语句scanf(\"a=%d,b=%d,c=%d\,为使变量a的值为2,b的值为4,c的值为8,则从键盘输入数据的正确形式是______。

SSS_SINGLE_SEL A 1,3,2<回车> B a=1 b=3 c=2<回车> C 132<回车>

D a=2,b=4,C=8<回车> 分值: 2 答案:D 21.

当执行下面的程序时,如果输入ABC,则输出结果是______。 #include \"stdio.h\" #include \"string.h\" main()

{ char ss[10]=\"12345\";

gets(ss);strcat(ss,\"6789\"); printf(\"%s\\n\",ss); } SSS_SINGLE_SELA ABC6789 B ABC67 C 12345ABC6 D ABC456789 分值: 1 答案:A

[解析] sdtrcat(str1,str2)合并字符串函数的作用是把str2所指字符串的内容连接到str1字符串的后面,自动删去str1原来串中的\"\\0\"。为了进行这项操作,要求str1所指的字符串后面有足够的空间来容纳str2所指字符串中的内容。函数值为str1所指第一个字符的地址。 22.

设p是指针变量,语句p=NULL;等价于______。

SSS_SINGLE_SEL A p=\"0\"; B p=\"; C p=\"\"; D p=0;

分值: 2 答案:D 23.

以下程序的输出结果是______。 void fun(int*a, int i, int j)

{ int t; if(i<j)

{t=a[i]; a[i]=a[j]; a[j]=t; i++; j--; fun(a, i, j); } }

main()

{int x[]={2, 6, 1, 8}, i; fun(x, 0, 3);

for(i=0; i<4; i++) printf(\"%2d\printf(\"\\n\"); } SSS_SINGLE_SEL A 1,2,6,8 B 8,6,2,1 C 8,1,6,2 D 8,6,1,2

分值: 2.5 答案:C

[解析] 本题用了函数调用,fun中if语句成立则进行i,j的交换,用到主函数中则为把下标0、3,1、2互换,因此,当执行完后x的数组为8,1,6,2,故选择C选项。 24.

“商品”与“顾客”两个实体集之间的联系一般是

SSS_SINGLE_SELA 一对一 B 一对多 C 多对一 D 多对多

分值: 2 答案:D

[解析] 本题考核实体集之间的联系。实体集之间的联系有3种:一对一、一对多和多对多。因为一类商品可以由多个顾客购买,而一个顾客可以购买多类商品,所以,“商品”与“顾客”两个实体集之间的联系一般是“多对多”。 25.

若有定义:double a=22; int i=0, k=18;,则不符合C语言规定的赋值语句是______。 SSS_SINGLE_SEL A i=(a+k)<=(i+k); B i=a%11; C a=a++, i++; D i=!a;

分值: 2

答案:B

[解析] 取模运算符“%”为二元运算符,具有左结合性,参与运算的量均为整型。选项B中的a变量是double实型,所以B不符合规定。 26.

有以下程序:

#include<stdio.h> main()

{ int m=1,n=2,*p=&m,*q=&n,*r; r=p;p=q;q=r;

printf(\"%d,%d,%d,%d\\n\}

程序运行后的输出结果是______。

SSS_SINGLE_SEL A 2,1,1,2 B 1,2,1,2 C 2,1,2,1 D 1,2,2,1

分值: 1 答案:D

[解析] int m=1,n=2,*p=&m,*q=&n,*r;即指针变量p指向m,指针变量q指向n,r=p;p=q;q=r;即通过指针变量r,将指针p和指针q的指向交换,因此最后输出“1,2,2,1”。 27.

有以下程序:

#include<stdio.h> #define N 3

void fun(int x[][N],int *r1,int *r2) { int i,j; *r1=*r2=0;

for(i=0;i<N;i++) { j=N-(i+1);

if(x[*r1][*r2]<x[i][j]){*r1=i;*r2=j;} } }

main()

{ int a[N][N]={1,5,7,9,2,6,4,3,8},i,j; fun(a,&i,&j);

printf(\"%d\\n\}

程序运行后的输出结果是______。

SSS_SINGLE_SEL A 8 B 6 C 7

D 9

分值: 1 答案:C

[解析] fun()函数获取矩阵正反对角线的元素的最大值,fun()中for(i=0;i<N;i++){j=N-(i+1);//反对角线列位置

} if(x[*r1][*r2]<x[i][j]){*r1=i;*r2=j;}//比较正反对角线的元素,使得*r1,*r2始终只在 //最大元素的位置

由数组元素可得,正反对角线的最大元素为7。答案为C选项。 28.

一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是( ) SSS_SINGLE_SEL A 有零个或多个输入 B 有零个或多个输出 C 有穷性 D 可行性

分值: 1 答案:B

[解析] 算法应具有的5个特性:有穷性,确定性,可行性,有零个或多个输入,有一个或多个输出。 29.

如果进栈序列为e1、e2、e3、e4,则可能的出栈序列是______。

SSS_SINGLE_SEL A e3、e1、e4、e2 B e2、e4、e3、e1 C e3、e4、e2 D 任意顺序

分值: 2.5 答案:B

[解析] 栈的特点是先进后出,可知e1肯定是最后出栈的,因此正确答案为选项B。 30.

有以下程序:

#include<stdio.h> struct tt

{ int x; struct tt *y;} s[2]={1,0,2,0}; main()

{ struct tt *p=s; p->y=s;

printf(\"%d\>x); }

程序运行后的输出结果是______。

SSS_SINGLE_SEL

A 2 B 0 C 1 D 3

分值: 1 答案:A

[解析] *p=s,可得p指向s[0],p->y指向s[1],现p->y=s,因此p->y指向s[0]。因此p->x=1,++p->x等价于++(p->x),因此打印结果为2。答案为A选项。

1

因篇幅问题不能全部显示,请点此查看更多更全内容