2023全国计算机等级考试二级C语言历年真题节选及答案详解(一)

一、选择题 (请在[答题]菜单上选择[选择题]命令,启动选择题测试程序,按照题目上的内容进行答题。作答选择题时键盘被封锁,使用键盘无效,考生须使用鼠标答题。选择题部分只能进入一次,退出后不能再次进入。选择题部分不单独计时。)

1、下列叙述中正确的是()

A.所有数据结构必须有根结点

B.所有数据结构必须有终端结点(即叶子结点)

C.只有一个根结点,且只有一个叶子结点的数据结构一定是线性结构

D.没有根结点或没有叶子结点的数据结构一定是非线性结构

[答案] D

[解析] D项正确,线性结构的特点是:(1)集合中必存在第一个元素”且惟一;(2)集合中必存在“最后个元素”且惟一;(3)除最后一个元素外,其他数据元素均有惟一的“后继”,除第一个元素外其他数据元素均有惟一的“前驱”。所以没有根结点或没有叶子结点的数据结构一定是非线性结构。AB两项错误,不是所有数据结构都必须有根结点和叶子结点;C项错误,数据结构中若有中间结点不满足只有一个前件或者后件的条件,就不是线性结构。答案选择D选项

2、以下叙述中错误的是()

A.C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令

B.C程序经过编译、链接步骤之后才能形成一个真正可执行的二进制机器指令文件

C.用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中

D.C语言源程序经编译后生成后缀为.obi的目标程序

[答案] A

[解析] A项错误,注释语句不会被翻译成二进制的机器指令。C源程序经过C编译程序编译之后生成后缀为obi的二进制文件(称为目标文件),然后由“链接程序”(Link)的软件把obi文件与各种库函数连接起来生成一个后缀为exe的可执行文件。答案选择A选项

3、C语言主要是借助以下()功能来实现程序模块化的。

A.定义函数

B.定义常量和外部变量

C.三种基本结构语句

D.丰富的数据类型

[答] A

[解析]C程序的模块化主要通过函数来实现。C语言允许对函数单独进行编译,从而可以实现模块化答案选择A选项。

资料来源:学盛通学习网

4、下列叙述中正确的是( )。

A.栈是“先进先出”的线性表

B.队列是“先进后出”的线性表

C.循环队列是非线性结构

D.有序线性表既可以采用顺序存储结构,也可以采用链式存储结构

[答案] D

[解析] 有序的线性表既可采用顺序存储结构,也可以采用链式存储结构。A项错误,栈是“先进后出”的线性表:B项错误,队列是“先进先出”的线性表:C项错误,循环队列是线性结构的,有序的线性表既可采用顺序存储结构,也可采用链式存储结构。答案选择D选项。

5、某二叉树的中序序列为DCBAEFG,后序序列为DCBGFEA,则该二叉树的深度(根结点在第1层)为()

A.5

B.4

C.3

D.2

[答案]B

[解析]二又树的后序序列为DCBGFEA,则A为根结点。中序序列为DCBAEFG,则DCB为左子树结点,EFG为右子树结点。同理B为C父结点,C为D父结点。根据分析,可画出左子树,同理E为F父结点,F为G父结点。根据分析,可画出右子树,故二又树深度为4层。答案选择B选项。

6、关于C语言标识符,以下叙述错误的是()

A.标识符可全部由数字组成

B.标识符可全部由下划线组成

C.标识符可全部由小写字母组成

D.标识符可全部由大写字母组成

[答案] A

[解析] C语言标识符只能由字母、数字、下划线构成,且只能以字母、下划线开头,故答案选择A选项。

7、设循环队列为Q(1:m),其初始状态为front-rear-m。经过一系列入队与退队运算后,front-20,rear=15。现要在该循环队列中寻找最小值的元素,最坏情况下需要比较的次数为()

A.5

B.6

C.m-5

D.m-6

[答案] D

[解析] 循环队列是队列的一种顺序存储结构,用队尾指针rear指向队列中的队尾元素,用队首指针指向队首元素的前一个位置,因此,从队首指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素,队列初始状态为front-rear-m,当front=20,rear=15时,队列中有m-20+15=m-5个元素,最坏情况下需要比较次数为m-6次。答案选择D选项

大一c语言考试试题

大一c语言试题

一、单项选择题(每小题2分,共50分)

1、一个C程序的执行是从___A__。

A、本程序的main函数开始,到main函数结束

B、本程序的main函数开始,到本程序文件的最后一个函数结束

C、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束

D、本程序文件的第一个函数开始,到本程序main函数结束

2、C语言程序的基本单位是___C___。

A、程序行 B、语句

C、函数 D、字符

3、请选出可用作C语言用户标识符的一组标识符___B___。

A、void B、a3_b3 C、For D、2a

define _123 -abc DO

WORD IF ase sizeof

4、假定x和y为double型,则表达式(x=2,y=x+5/2)的值是__C__ 。

A、4.500000 B、4

C、4.000000 D、2.000000

5、下列可以正确表示字符型常量的是___D__。

A、297 B、\”a\”

C、\”\\n\” D、\’\\t\’

6、在C语言中,要求运算数必须是整型的运算符是__D__。

A、/ B、++

C、*= D、%

7、C语言中,复合语句的构成是将一系列语句置于__C__。

A、begin与end之间

B、方框号“[ ]”之间

C、花括号“{ }”之间

D、圆括号“( )”之间

8、有如下程序段,对应正确的数据输入是___A___。

float x,y;

scanf(”%f%f”, &x,&y);

printf(”a=%f,b=%f”, x,y);

A、2.04<回车> B、2.04,5.67<回车>

5.67<回车>

C、A=2.04,B=5.67<回车> D、2.045.67<回车>

9、以下程序段的输出结果是___D__。

int a=5678;

printf(”%2d\\n”, a);

A、提示出错、无结果 B、56

C、78 D、5678

10、已知:char ch=\’A\’;则下列表达式的值是__B__。

ch = (ch>=\’A\’&&ch<=\’Z\’) ? (ch+32) : ch;

A、A B、a C、Z D、z

11、下列描述,正确的是___B__ 。

A、表达式3.91%5是合法的

B、用b=89作为while循环的条件是合法的

C、逗号表达式是没有值和类型的

D、字符型变量和int型变量的操作完全不同

12、阅读以下程序:

main()

{int x;

scanf(\”%d\”,&x);

if(x–<5) printf(\”%d\”,x);

else printf(\”%d\”,x++);

}

程序运行后,如果从键盘上输人5,则输出结果是__B__ 。

A、3 B、 4 C、 5 D、 6

13、下列程序的运行结果是___C__。

#include ”stdio.h”

main()

{ int k;

k=3;

switch(k)

{ case 1: printf(”%d\\n”, k++);

case 2: printf(”%d\\n”, k++);

case 3: printf(”%d\\n”, k++);

case 4: printf(”%d\\n”, k++);

break;

default: printf(”Full!\\n”);

}

}

A、3 B、4 C、3 D、4

4 4

14、设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、

m=2、n=1,则逻辑表达式(m==a<b)&&(n==c<d) 的值为__A__。

A、0 B、 1 C、2 D、 3

15、设x、y和temp均为long int型变量,则以下语句:

{temp=x; x=y; y=temp;} 的功能是__D__。

A、把x和y按从大到小排列

B、把x和y按从小到大排列

C、无确定结果

D、交换变量x和变量y的值

16、以下程序的输出结果是 ___A__ 。

main()

{int a, b;

for(a=1, b=1; a<=100; a++)

{if(b>=10) break;

if (b%3==1)

{ b+=3; continue; }

}

printf(\”%d\\n\”,a);

}

A、4 B、6 C、5 D、101

17、执行以下程序后输出的结果是___D__。

main()

{ int y=10;

do {y–;}

while(–y);

printf(\”%d\\n\”,y–);}

A、-1 B、1 C、8 D、0

18、执行以下程序后输出的结果是___B__。

main()

{int i, j, w=0;

for(i=4; i; i–)

for(j=1;j<=2;j++)

w=w+i*j; w=i*j;

printf(\”%d\\n\”,w);

}

A、4 B、0 C、1 D、30

19、以下程序运行后,输出结果是__C__。

main()

{

int n[5]={3,3,3},i,k=2;

for(i=0;i<k;i++) n[i]=n[i]+1;

printf(\”%d\\n\”,n[k]);

}

A、4 B、9 C、3 D、不确定的值

20、以下程序的输出结果是 __A__ 。

f ( int a)

{int b=0;

static int c = 3;

b++; c++;

return(a+b+c);

}

main()

{int a = 2, i;

for(i=0;i<3;i++) printf(\”%d\\n\”,f(a));

}

A、 7 B、 7 C、 7 D、 7

8 9 10 7

9 11 13 7

21、设C程序如下:

#define ABC(x) x*x

#include\”stdio.h\”

main()

{int a=3,b;

b=ABC(a+1);

printf(\”b=%d\”, b); }

上述程序运行输出的结果是__D_ 。

A、b=4 B、b=a+1

C、b=16 D、b=7

22、以下程序的输出结果是__B__。

main()

{int i, a[10];

for(i=9;i>=0;i–) a[i]=10-i;

printf(\”%d %d %d\”,a[1],a[6],a[9]);

}

A、1 6 9 B、9 4 1

C、9 6 1 D、3 5 7

23、若定义:float x=3.14159,*p=&x

则printf(\”%f\\n\”,*p++);的输出结果为__C__ 。

A、无确定值 B、x的地址

C、3.14159 D、4.14159

24、以下程序的输出结果是___B__

main()

{char b[]=\”Language\”;

char *p=b;

printf(\”%c \”,*(b+2));

p=p+7;

printf(\”%c\\n\”,*p++);

}

A、2 7 B、n e C、a g D、n u

25、下列程序的输出结果是___A__。

#include \”stdio.h\”

main()

{

int a[]={1,2,3,4,5,6,7,8,9,0}, i, s, *p;

p=a;s=0;

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

s+=*p++;

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

}

A、45 B、44 C、0 D、9

二、判断题(每小题1分,共10分)

1.语句int *point;中的point是指针变量名。( T )

2.主函数和其它函数之间可以相互调用。( F )

3.puts( )和gets( )函数只能输入或输出一个字符。( F )

4. 可以对字符型数组元素进行整体输入、输出。( T )

5.do-while语句构成的循环不能用其他语句构成的循环来代替。( F )

6.在一个函数内的复合语句中定义的变量可以在本函数范围内有效。(F )

7.函数必须有返回值,否则不能使用函数。( F )

8.for(;;);语句相当于while(1);语句。( T )

9.C程序的执行总是从第一个定义的函数开始。( F )

10.C语言中的关键字专门用作语言的特定成分,而不能作为一般标识符使用。( T )

三、程序填空题(每空2分,共10分)

1、下面程序完成判断某一个数m是否为素数,如果是则输出\”m is a prime!\”,否则就输出\”m is not a prime!\”,请选择填空。

main()

{ int i, m;

scanf(\”m=%d\”, &m);

for(i=2; i<m; i++)

{ if(m%i==0)

{ printf(\”%d is not a prime!\\n\”, m); (1) }

else (2)

}

if(i==m) printf(\”%d is a prime!\\n\”, m);

}

(1)、 A、break B、continue

C、break; D、continue;

(2)、 A、break B、break;

C、continue D、continue;

2、以下程序的功能是:求出用数字0至9组成没有重复数字且是13倍数的三位数的个数,请选择填空。

#include<stdio.h>

void main()

{ int i, j, k, w, count = 0;

for( (3) ; i<=9; i++)

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

for(k=0; k<=9;k++)

if( (4) )

{ w = i*100+j*10+k;

if( (5) )

count++;

}

printf(\”\\n count=%d\\n\”, count);

}

(3)、 A、i=0 B、i=1

C、i=9 D、i=-1

(4)、 A、i!=j B、i!=j ||j!=k

C、i!=j&& j!=k D、i!=j&& j!=k && k!=i

(5)、 A、w%13=0 B、w/13=0

C、w%13==0 D、w/13==0

四、编程题(第1小题12分,第2小题18分,共30分)

1、从键盘输入一个4位数的正整数n,将该数反序输出。例如,若输入的是

1357,则输出的是7531。

  要求:1)利用VC++编译系统进行调试、运行

2)对输入的正整数n的合法性进行检查

3)将源程序以“编程题1.c”为文件名保存在网络盘(K:盘)的考生文件夹上,用其它文件名保存或保存在其他地方均不能得分

2、已知一组字符串a[27]=\”jjyyzzabcdefgJJYYZZABCDEFG\”; 请编一程序,将其 中的小写字母换成其前一个字母,即z换成y,y换成x,…,b换成a,若是a则换成z。然后对数组a[27]从小到大排序,并输出排序后的字符串。

要求:1)利用VC++编译系统进行调试、运行

2)先输出原字符串(即未做任何改变的字符串),最后输出排序后

的字符串

3)将源程序以“编程题2.c”为文件名保存在网络盘(K:盘)的考生文件夹上,用其它文件名保存或保存在其他地方均不能得分

全国计算机等级考试二级C语言题库

全国计算机等级考试二级C语言题库【历年真题+章节题库+模拟试题】

章节目录

第一部分 历年真题

全国计算机等级考试《二级C语言程序设计》真题及详解(一)

全国计算机等级考试《二级C语言程序设计》真题及详解(二)

全国计算机等级考试《二级C语言程序设计》真题及详解(三)

全国计算机等级考试《二级C语言程序设计》真题及详解(四)

全国计算机等级考试《二级C语言程序设计》真题及详解(五)

全国计算机等级考试《二级C语言程序设计》真题及详解(六)

第二部分 章节题库

选择题

上机操作题

第1章 程序设计基本概念

第2章 C程序设计的初步知识

第3章 顺序结构

第4章 选择结构

第5章 循环结构

第6章 字符型数据

第7章 函 数

第8章 地址和指针

第9章 数 组

第10章 字符串

第11章 对函数的进一步讨论

第12章 C语言中用户标识符的作用域和存储类

第13章 编译预处理和动态存储分配

第14章 结构体、共用体和用户定义类型

第15章 位运算

第16章 文 件

一、程序填空题

二、程序修改题

三、程序设计题

第1章 数据结构与算法

第2章 程序设计基础

第3章 软件工程基础

第4章 数据库设计基础

公共基础知识

C语言程序设计

第三部分 模拟试题

全国计算机等级考试《二级C语言程序设计》模拟试题及详解(一)

全国计算机等级考试《二级C语言程序设计》模拟试题及详解(二)

全国计算机等级考试《二级C语言程序设计》模拟试题及详解(三)

全国计算机等级考试《二级C语言程序设计》模拟试题及详解(四)

全国计算机等级考试《二级C语言程序设计》模拟试题及详解(五)

全国计算机等级考试《二级C语言程序设计》模拟试题及详解(六)

全国计算机等级考试《二级C语言程序设计》模拟试题及详解(七)

全国计算机等级考试《二级C语言程序设计》模拟试题及详解(八)

全国计算机等级考试《二级C语言程序设计》模拟试题及详解(九)

全国计算机等级考试《二级C语言程序设计》模拟试题及详解(十)

更多考试资料请关注【向锦学习网】,万种考研考证资源(电子书、题库、视频)在线免费学习。

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。