二级C语言分类模拟题529真题含答案与解析交互.docx

上传人:b****6 文档编号:15532914 上传时间:2023-07-05 格式:DOCX 页数:24 大小:25.17KB
下载 相关 举报
二级C语言分类模拟题529真题含答案与解析交互.docx_第1页
第1页 / 共24页
二级C语言分类模拟题529真题含答案与解析交互.docx_第2页
第2页 / 共24页
二级C语言分类模拟题529真题含答案与解析交互.docx_第3页
第3页 / 共24页
二级C语言分类模拟题529真题含答案与解析交互.docx_第4页
第4页 / 共24页
二级C语言分类模拟题529真题含答案与解析交互.docx_第5页
第5页 / 共24页
二级C语言分类模拟题529真题含答案与解析交互.docx_第6页
第6页 / 共24页
二级C语言分类模拟题529真题含答案与解析交互.docx_第7页
第7页 / 共24页
二级C语言分类模拟题529真题含答案与解析交互.docx_第8页
第8页 / 共24页
二级C语言分类模拟题529真题含答案与解析交互.docx_第9页
第9页 / 共24页
二级C语言分类模拟题529真题含答案与解析交互.docx_第10页
第10页 / 共24页
二级C语言分类模拟题529真题含答案与解析交互.docx_第11页
第11页 / 共24页
二级C语言分类模拟题529真题含答案与解析交互.docx_第12页
第12页 / 共24页
二级C语言分类模拟题529真题含答案与解析交互.docx_第13页
第13页 / 共24页
二级C语言分类模拟题529真题含答案与解析交互.docx_第14页
第14页 / 共24页
二级C语言分类模拟题529真题含答案与解析交互.docx_第15页
第15页 / 共24页
二级C语言分类模拟题529真题含答案与解析交互.docx_第16页
第16页 / 共24页
二级C语言分类模拟题529真题含答案与解析交互.docx_第17页
第17页 / 共24页
二级C语言分类模拟题529真题含答案与解析交互.docx_第18页
第18页 / 共24页
二级C语言分类模拟题529真题含答案与解析交互.docx_第19页
第19页 / 共24页
二级C语言分类模拟题529真题含答案与解析交互.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

二级C语言分类模拟题529真题含答案与解析交互.docx

《二级C语言分类模拟题529真题含答案与解析交互.docx》由会员分享,可在线阅读,更多相关《二级C语言分类模拟题529真题含答案与解析交互.docx(24页珍藏版)》请在冰点文库上搜索。

二级C语言分类模拟题529真题含答案与解析交互.docx

二级C语言分类模拟题529真题含答案与解析交互

二级C语言分类模拟题529

(总分47.5,做题时间90分钟)

选择题

1. 

在C语言中,char型数据在内存中的存储形式为______。

A 反码

B 补码

C ASCII码

D 原码

    分值:

2

答案:

C

2. 

下列叙述中,正确的是______。

A 软件交付使用后还需要进行维护

B 软件一旦交付使用就不需要再进行维护

C 软件交付使用后其生命周期就结束

D 软件维护是指修复程序中被破坏的指令

    分值:

1

答案:

A

3. 

有下列程序:

#include<stdio.h>

main()

{inta=6,b=7,m=1;

switch(a%2)

{case0:

m++;break;

case1:

m++;

switch(b%2)

{defaut:

m++;

case0:

m++;break;

}

}

printf("%d\n",m);

}

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

A 1

B 2

C 3

D 4

    分值:

1

答案:

B

[解析]本题考查switch语句。

第一个switch语句,因为a=6,a%2=0,所以执行case0.将m加1,遇到break语句跳出switch语句,结束循环。

4. 

下列合法的声明语句是______。

A int_abc=50;

B doubleint=3+5e2.5;

C longdo=1L;

D float3_asd=3e-3;

    分值:

1

答案:

A

[解析]标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或下划线。

B选项int不是表达变量类型的标识符,它不能再用做变量名和函数名。

C选项do是C语言的一个关键字。

D选项标识符只能以字母或下划线开始。

5. 

以下选项中叙述正确的是______。

A charc1,c2,*c3,c4[40j;是合法的变量定义语句

B 数组说明符的一对方括号中只能使用整型常量,而不能使用表达式

C 数组下标的下限可以是负值

D 若有数组定义floatarray[4];则语句printf("%f",array[3.12]);是合法的

    分值:

1

答案:

A

[解析]A选项正确定义了字符变量c1、c2,字符型指针c3,字符型一维数组c4[40],A选项正确。

“[]”是下标运算符,“下标”可以是任何非负整型数据,取值范围是0~(数据元素的个数-1)。

在引用数组元素时,下标运算符内可以是常量也可以是变量或者表达式,B选项错误。

数组下标的下限不可以是负值,C选项错误。

数组下标必须是整型数据,3.12为浮点数,故D选项错误。

6. 

有以下程序

main()

{intp[8]=(11,12,13,14,15,16,17,18),i=0,j=0;

while(i++<7)if(p[i]%2)j+=p[i];

printf("%d\n",j);

}

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

A 42

B 45

C 56

D 60

    分值:

1

答案:

B

[解析]本题程序中while循环的条件是i++<7,由于在循环体中没有改变i的值,所以循环过程是i从初始值0开始,每次自加1,当i为7再次进行循环条件判断时退出循环。

而在循环体中,i从1到7变化。

循环体是一个if语句,当p[i]%2为真,即p[i]为奇数时执行j+=p[i]。

所以该段程序的实际效果是将p[1]~p[7]中的奇数累加到变量j中。

所以j=13+15+17=45,选B。

7. 

下列二维数组初始化语句中,不正确的是____。

A intb[][2]={1,2,3,4,5,6,7};

B intb[3][5]={0,0,0};

C intb[][4]={{1,2},{3,4,5},{6}};

D intb[3][2]={(1,2),(3,4),(5,6)};

    分值:

1

答案:

D

[解析]在对二维数组元素赋初值时,可以只对部分元素赋初值,未赋初值的元素自动取0;C语言规定,对于二维数组,只可以省略第1个方括号中的常量表达式,而不能省略第2个方括号中的常量表达式;赋的初值不能多于事先定义好的数组元素个数。

在选项D)赋值表达式中对每一维的元素赋初值应用{},而不是()。

8. 

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

试题程序

#include<stdio.h>

main()

{inti=2,p;

p=f(i,i+1);

printf("%d\n",p);

}

intf(inta,intb)

{intc;

c=a;

if(a>b)

c=1;

elseif(a==b)

c=0;

else

c=-1;

return(c);

}

A -1

B 0

C 1

D 2

    分值:

1

答案:

A

[解析]以上程序中定义了名为f()的整型函数,它有两个int类型的形参。

在main()函数中调用了f()函数,可以很直观地看到,实参的值分别是2和3,2传给函数形参a,3传给函数形参b。

函数返回的值赋给变量p,main()函数中输出的值就是函数中的返回值。

在函数f()中,若a的值大于b,c被赋1;若a的值等于b,c被赋0;若a的值小于b,c被赋-1。

按照实参传送过来的值,a的值小于b,因此c被赋-1,所以函数的返回值为-1。

总结:

本题中没有复杂的算法,但读者必须熟练地掌握if...else分支结构的执行流程,同时建立清晰的有关函数定义和函数调用的基本概念,就可得出正确的答案。

9. 

假定x和y为double型,则表达式x=2,y=x+3/2的值是______。

A 3.500000

B 3

C 2.000000

D 3.000000

    分值:

1

答案:

D

[解析]在x=2,y=x+3/2中,3/2=1,2+1=3,因此表达式的值为3,因为x、y为double型变量,故选择D选项。

10. 

以下叙述中正确的是______。

A int*p1;int**p2;int*p3;都是合法的定义指针变量的语句

B 指针变量只能通过求地址运算符(&)来获得地址值

C 语句p=NULL;与p=\0;是等价的语句

D 语句p=NULL;执行后,指针p指向地址为0的存储单元

    分值:

2

答案:

A

[解析]B选项描述不正确,指针变量可以通过求地址运算符(&)来获得地址值,也可以通过指针变量获得地址值,还可以通过标准函数获得地址值;C选项中,p=NuLL;和p=0;或p="\0";等价;D选项中,语句p=NULL;执行后,指针p并不是指向地址为0的存储单元,而是具有一个确定的值-“空”。

因此A选项正确。

11. 

定义无符号整数类为UInt,下面可以作为类UInt实例化值的是______。

A -369

B 369

C 0.369

D 整数集合{1,2,3,4,5}

    分值:

2.5

答案:

B

[解析]只有B选项369可以用无符号整数来表示和存储。

A选项-369有负号,选项C0.369是小数,它们都不能用无符号整数类存储。

选项D是一个整数集合需要用数组来存储。

12. 

若要通过位运算使整型变量a中的各位数字全部清零,以下选项正确的是______。

A a=a&0;

B a=a|0;

C a=a^0;

D a=!

a;

    分值:

1

答案:

A

[解析]本题考查位运算符和位运算。

“|”运算符,1|0=1,0|0=0,所以选项B中a变量的各位数字保持不变,故B选项错误;“^”运算符,1^0=1,0^0=1,所以选项C中a变量的各位数字中,1保持不变,0变成1,故C选项错误;“!

”运算符,!

1=0,!

0=1,所以选项D中a变量的个位数字中,1变成0,0变成1,故D选项错误;“&”运算符,1&0=0,0&0=0,所以选项A中各位数字全部清零,故答案为A选项。

13. 

一个C语言程序是由______。

A 一个主程序和若干子程序组成

B 函数组成

C 若干过程组成

D 若干子程序组成

    分值:

2

答案:

B

14. 

下列程序段中完全正确的是______。

A int*p;scanf("%d",&p);

B int*p;scanf("%d",p);

C intk,*p=&k;scanf("%d",p);

D intk,*p;*p=&k;scanf("%d",p);

    分值:

1.5

答案:

C

[解析]A选项中错在没有对指针进行初始化,无效指针,并且在scanf("%d",&p)中无须再进行取地址操作;B选项中没有对指针进行初始化,无效指针;D选项中语句*p=&k;的左端*p是指针所指内存空间的值,&k是地址,应为p=&k。

C选项正确。

15. 

某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是______。

A 10

B 8

C 6

D 4

    分值:

2

答案:

C

[解析]根据二叉树的基本性质3:

在任意一棵二叉树中,度为0的叶子结点总是比度为2的结点多一个,所以本题中是5+1=6个。

16. 

设有以下程序段:

structperson

{

floatweight;

charsex;

charname[10];

}rec,*ptr;

ptr=&rec;

从键盘读入字符串给结构体变量rec的name成员,错误的输入语句是______。

A scanf("%s",rec->name);

B scanf("%s",rec.name);

C scanf("%s",(*ptr).name);

D scanf("%s",ptr->name);

    分值:

1

答案:

A

[解析]题中声明了—个结构类型person的同时,定义了2个结构变量,一个为rec,另一个为指针变量ptr。

A选项中,rec是一个结构体变量,结构体变量访问结构成员的方式应该为:

"rec.成员名",这里用法错误,答案为A选项。

17. 

有以下程序

#include<stdio.h>

intfun()

{staticintx=1;

x*=2;

returnx;

}

main()

{inti,s=1;

for(i=1;i<=3;i++)s*=fun();

printf("%d\n",s);

}

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

A 30

B 10

C 0

D 64

    分值:

2

答案:

D

[解析]第一次循环fun函数返回值为2,第二次循环由于x是static类型,x仍保留上次的值2,所以返回值为4,第三次循环由于x是static类型,x仍保留上次的值4,所以返回值为8,对三次返回值乘积值为64,所以答案选择D。

18. 

若有定义语句:

charstr1[]="string",str2[8],*str3,str4[10]="string";,库函数strcpy的功能是复制字符串,以下选项中错误的函数调用是______。

A strcpy(str3,"HELLO!

")

B strcpy(str2,"HELLO!

")

C strcpy(str1,"HELLO!

")

D strcpy(str4,"HELLO!

")

    分值:

1

答案:

A

[解析]题目中字符指针str3,没有为指针开辟内存,能作为函数参数,选择A选项。

19. 

已定义以下函数:

intfun(int*p)

{return*p;}

fun函数的返回值是______。

A 一个整数

B 不确定的值

C 形参p中存放的值

D 形参p的地址值

    分值:

1

答案:

A

[解析]返回值为指针变量指向的数据,该数据已被定义为整型。

因此A选项正确。

20. 

在面向对象方法中,不属于“对象”基本特点的是______。

A 一致性

B 分类性

C 多态性

D 标识唯一性

    分值:

1

答案:

A

[解析]在面向对象方法中,对象的基本特点包括:

标识唯一性、分类性、多态性、封装性、模块独立性好。

一致性不属于对象的基本特点,因此本题答案为A。

21. 

以下关于C语言数据类型使用的叙述中错误的是______。

A 若只处理“真”和“假”两种逻辑值,应使用逻辑类型

B 若要保存带有多位小数的数据,可使用双精度类型

C 若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型

D 整数类型表示的自然数是准确无误差的

    分值:

1

答案:

A

[解析]C语言不存在逻辑类型,所以A错误。

单精度float类型可提供6位有效数字,双精度double类型可提供16位有效数字,所以要保存带有多位小数的数据,要使用双精度类型,所以B选项正确。

结构体类型可以保存不同类型数据,所以C正确,整数的表示是不存在误差的,所以D选项正确。

22. 

以下程序的结果是______。

inta,b;

voidfun()

{a=100;b=200;}

main()

{inta=5,b=7;

fun();

printf("%d%d\n",a,b);

}

A 100200

B 57

C 200100

D 75

    分值:

1

答案:

B

[解析]全程变量是可以在于函数中对其值作改变,且它也可作为函数间的值传递。

但当函数或子函数中定义了与全程变量名称相同的局部变量,则全程变量将被屏蔽。

23. 

下面描述中,不属于软件危机表现的是______。

A 软件过程不规范

B 软件开发生产率低

C 软件质量难以控制

D 软件成本不断提高

    分值:

2.5

答案:

A

[解析]软件危机主要表现在:

软件需求的增长得不到满足;软件开发成本和进度无法控制;软件质量难以保证;软件不可维护或维护程度非常低;软件的成本不断提高;软件开发生产率的提高赶不上硬件的发展和应用需求的增长。

因此本题答案为A。

24. 

若有定义:

inta;floatb;doublec;,程序运行时输入:

a=1,b=2,c=3<回车>,能把值1输入给变量a、值2输入给变量b、值3输入给变量c的输入语句是______。

A scanf("a=%d,b=%f,c=%lf",&a,&b,&c);

B scanf("%d%f%lf",&a,&b,&c);

C scanf("a=%d,b=%lf,c=%lf",&a,&b,&c);

D scanf("a=%d,b=%f,c=%f",&a,&b,&c);

    分值:

1

答案:

A

[解析]格式字符d,输入十进制整数;格式字符f,输入浮点数;格式字符lf,输入双精度浮点数。

除了格式说明字符和附加格式字符外,如果还有其他字符,则在输入数据时要求按照这些字符在一一对应的位置原样输入。

程序运行时输入:

a=1,b=2,c=3,则scanf函数格式控制串应该是“a=%d,b=%f,c=%lf”。

25. 

在关系数据库中,用来表示实体之间联系的是

A 树形结构

B 网状结构

C 线性表

D 二维表

    分值:

1

答案:

D

[解析]数据库中的关系模型是采用二维表来表示实体与实体之间的联系。

26. 

下列叙述中正确的是______。

A 程序执行的效率与数据的存储结构密切相关

B 程序执行的效率只取决于程序的控制结构

C 程序执行的效率只取决于所处理的数据量

D 以上三种说法都不对

    分值:

1

答案:

A

[解析]数据的存储结构、程序处理的数据量、程序的算法等都会影响程序执行效率。

27. 

以下数组定义中错误的是______。

A intx[2][3]={{1,2},{3,4},{5,6)};

B intx[][3]={0};

C intx[][3]={{1,2,3},{4,5,6}};

D intx[2][3]={1,2,3,4,5,6};

    分值:

2

答案:

A

[解析]本题考核的知识点是二维数组的定义及初始化。

在定义一个二维数组同时初始化时,其第一维的长度可以省略。

二维数组的初始化列表可以只使用一重花括号,其中的每个值依次代表从第1行的第1个元素起,直到第1行满,接着代表第2行、第3行……的每一个元素,若第1维长度没有省略,则这些值总个数不得超过两个维度的乘积。

故选项D是正确的。

二维数组的初始化列表还可以使用二重花括号括起来,其中每一个内花括号代表一行的值,在内花括号中值的个数不得超过数组第二维的长度,若不足第2维长度,则该行多出部分值被初始化为0,若第一维省略,花括号的个数代表行数。

A选项第一维为2,故只有两行,但有三个花括号超出了行的要求,所以本题答案选A。

28. 

设变量已正确定义并赋值,以下正确的表达式是______。

A x=y+z+5,++y

B int(15.8%5)

C x=y*5=x+z

D x=25%5.0

    分值:

4

答案:

A

[解析]B与D选项中取模运算符%的左右两个操作数均应为整数,所以B、D错误。

C选项中不能将x+y的值赋给表达式y*5,所以C错误。

29. 

有以下程序

main()

{inta,b,d=25;

a=d/10%9;b=a&&(-1);

printf("%d,%d\n",a,b);

}

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

A 6,1

B 2,1

C 6,0

D 2,0

    分值:

1

答案:

B

[解析]C语言中,若/符号两边都为整数,则返回的是运算结果的整数部分。

%是取余运算,运算对象只能是整数,结果是两数相除后所得的余数,若运算量为负数,则结果的符号与被除数相同。

因此,a=d/10%9=25/10%9=2%9=2。

C语言中没有专门的逻辑值,而是用整型值代替:

非零整数表示逻辑真,零表示逻辑假;逻辑真的值为1,逻辑假的值为0。

所以,b=a&&(-1)=“真”&&“真”=“真”=1。

所以,选项B正确。

30. 

有以下程序:

#include<stdio.h>

main()

{

int*p,x=100;

p=&x;x=*p+10;

printf("%d\n",x);

}

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

A 110

B 120

C 100

D 90

    分值:

1

答案:

A

[解析]程序执行过程为:

定义指针p,指向变量x,x=(*p)+10=110,输出110,A选项正确。

31. 

有以下程序:

#include<stdio.h>

main()

{

inta=1,b=3,c=5;

int*p1=&a,*p2=&b,*p=&c;

*p=*p1*(*p2);

printf("%d\n",c);

}

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

A 1

B 2

C 3

D 4

    分值:

1

答案:

C

[解析]该程序中int*p1=&a,*p2=&b,*p=&c;指定义三个指针变量,并赋值,即使p1指向a、p2指向b、p指向c。

*p=*p1*(*p2);该条语句是给p所指的存储单元c赋值,就是p1所指的存储单元的值,即a的值,与p2所指的存储单元b的值相乘,也就是c=a*b,等价于c=1*3=3。

因此C选项正确。

32. 

以下说法正确的是______。

A 由3种基本结构组成的结构化程序只能解决一些简单的问题

B 由3种基本结构组成的结构化程序可以解决任何复杂的问题

C 由3种基本结构组成的结构化程序只能解决那些可以结构化的问题

D 由3种基本结构组成的结构化程序只能解决一些数学上有解析解的问题

    分值:

1

答案:

B

[解析]由3种基本结构组成的算法可以解决任何复杂的问题,由3种基本结构所构成的算法称为结构化算法,由3种基本结构所构成的程序称为结构化程序,故本题答案为B选项。

33. 

设某二叉树的前序序列为ABC,中序序列为CBA,则该二叉树的后序序列为______。

A BCA

B CBA

C ABC

D CAB

    分值:

1

答案:

B

[解析]二叉树遍历可以分为3种:

前序遍历(访问根节点在访问左子树和访问右子树之前)、中序遍历(访问根节点在访问左子树和访问右子树两者之间)、后序遍历(访问根节点在访问左子树和访问右子树之后)。

前序序列为ABC,则A为根节点。

中序序列为CBA,则C和B均为左子树节点或右子树节点,且C为B父节点,可知后序序列为CBA,故B选项正确。

34. 

有以下程序

#include<stdio.h>

main()

{FILE*fp;

inta[10]={1,2,3,0,0},i;

fp=fopen("d2.dat","wb");

fwrite(a,sizeof(int),5,fp);

fwrite(a,sizeof(int),5,fp);

fclose(fp);

tp=fopen("d2.dat","rb");

fread(a,sizeof(int),10,fp);

fclose(fp);

for(i=0;i<10;i++)

printf("%d,",a[i]);

}

程序的运行结果是______。

A 1,2,3,0,0,1,2,3,0,0,

B 1,2,3,1,2,3,0,0,0,0,

C 123,0,0,0,0,123,0,0,0,0,

D 1,2,3,0,0,0,0,0,0,0,

    分值:

1

答案:

A

[解析]fwrite函数将数组a写入文件,写入两遍,读出后为选项A的值,所以选择A。

35. 

设有如下函数定义:

intfun(intk)

{if(k<1)return0;

elseif(k==1)return1;

elsereturnfun(k-1)+1;

}

若执行调用语句:

“n=fun(3);”,则函数fun总共被调用的次数是______。

A 2

B 3

C 4

D 5

    分值:

1

答案:

B

[解析]此题考查简单的循环,当执行n=fun(3)时,则函数fun执行3次。

窗体顶端

窗体底端

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2