2017计算机二级考试C语言考前密卷六

2017计算机二级考试C语言考前密卷六
日期:02-11 12:30:25| 计算机等级考试|45教学网| http://www.45sw.com

2017计算机二级考试C语言考前密卷六是关于计算机等级考试方面的资料,

(1)最简单的交换排序方法是

A)快速排序

B)选择排序

C)堆排序

D)冒泡排序

(2)栈通常采用的两种存储结构是

A)线性存储结构和链表存储结构

B)散列方式和索引方式

C)链表存储结构和数组

D)线性存储结构和非线性存储结构

(3)线性表的顺序存储结构和线性表的链式存储结构分别是

A)顺序存取的存储结构、顺序存取的存储结构

B)随机存取的存储结构、顺序存取的存储结构

C)随机存取的存储结构、随机存取的存储结构

D)任意存取的存储结构、任意存取的存储结构

(4)完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例的测试方法是

A)黑箱测试法 B)白箱测试法

C)错误推测法 D)安装测试法

(5)在结构化设计方法中,生成的结构图(SC)中,带有箭头的连线表示

A)模块之间的调用关系 B)程序的组成成分

C)控制程序的执行顺序 D)数据的流向

(6)下列选项中,不属于模块间耦合的是

A)数据耦合 B)同构耦合

C)异构耦合 D)公用耦合

(7)一个关系中属性个数为1时,称此关系为

A)对应关系 B)单一关系

C)一元关系 D)二元关系

(8)为用户与数据库系统提供接口的语言是

A)高级语言

B)数据描述语言(DDL)

C)数据操纵语言(DML)

D)汇编语言

(9)相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和

A)可重用性差 B)安全性差

C)非持久性 D)冗余性

(10)需求分析阶段的任务是确定

A)软件开发方法 B)软件开发工具

C)软件开发费用 D)软件系统功能

(11)下列关于C语言的说法不正确的是

A)C语言既具有高级语言的一切功能,也具有低级语言的一些功能

B)C语言中的每一条执行语句都必须用分号结束,分号不是C语言的一部分,是语句之间的分隔符号

C)注释可以出现在程序中任意合适的地方

D)命令行后面不能加分号,命令行不是C语言的语句

(12)下列关于标识符的说法中错误的是

A)合法的标识符是由字母、数字和下划线组成

B)C语言的标识符中,大写字母和小写字母被认为是两个不同的字符

C)C语言的标识符可以分为三类,即关键字、预定义标识符和用户标识符

D)用户标识符与关键字不同时,程序在执行时将给出出错信息

(13)下列合法的整型常量的表示是

A)098

B)oXde

C)32767

D)0xDG

(14)现在有以下定义,int a;double b;float c;char k;则下面的表达式a/b+c-k值的类型为:

A)int

B)double

C)float

D)char

(15)假设整型变量a,b,c的值均为5,则表达式a+++b+++c++的值为

A)17

B)16

C)15

D)14

(16)下列关于复合语句和空语句的说法错误的是

A)复合语句是由“{”开头,由“}”结尾的

B)复合语句在语法上视为一条语句

C)复合语句内,可以有执行语句,不可以有定义语句部分

D)C程序中的所有语句都必须由一个分号作为结束

(17)关于printf()函数的返回值叙述正确的是

A)通常是本次调用中输出字符的个数

B)通常是输出的第一个数值

C)通常返回布尔值真

D)通常返回非零值

(18)现有格式化输入语句,scanf(“x=%dц,sumцy=%d,lineцz=%dL”,&x,&y,&z);,现在已知在输入数据后,x,y,z的值分别是12,34,45,则下列数据是正确的输入格式的是

A)12,34,45《Enter》

B)x=12,y=34,z=45《Enter》

C)x=12C,sumy=34,z=45《Enter》

D)x=12],sum]y=34,line]z=45《Enter》

[注]:“ц”表示空格, 《Enter》表示回车

(19)设x,y,z,t均为整型变量,现有如下语句x=y=z=1;t=++x||++y&&++z;则执行这个语句后t的值为

A)2

B)1

C)0

D)不定值

(20)现有如下程序段,此程序段编译有错误,则程序段的错误出在

#include 《stdio.h》

main()

{ int a=30,b=40,c=50,d;

d=a》30?b:c;

switch(d){case a:printf(“%d,”,a);

case b:printf(“%d,”,b);

case c:printf(“%d,”,c);

default:printf(“#”);}}

A)default:printf(“#”);这个语句

B)d=a》30?b:c;这个语句

C)case a:printf(“%d,”,a); case b:printf(“%d,”,b); case c:printf(“%d,”,c);这三个语句

D)switch(d)这个语句

(21)下列语句中,错误的是(x,y,a,b假设已经定义好)

A)while(x=y)5;

B)do x++ while(x==10);

C)while(0);

D)do 2;while(a==b);

(22)若i,j已经定义为整型,则以下程序段中,内循环体的执行次数是

for(i=6;i;i--)

www.45sw.com

for(j=0;j《5;j++){……}

A)40

B)35

C)30

D)25

(23)下列说法中错误的是

A)只能在循环体内使用break语句

B)在循环体内使用break语句可以使流程跳出本层循环体,从而提前结束本层循环

C)在while和do…while循环中,continue语句并没有使整个循环终止

D)continue的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环判断

(24)阅读如下程序段

#include “stdio.h”

main()

{ int x,a,b;

scanf(“%d”,&x);

a=b=x;

for(;x!=0;)

{ if(x《b)b=x;

if(x》a)a=x;

scanf(“%d”,&x);}

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

现输入如下。[注] :′ц′表示空格

34ц56ц23ц45ц5ц56ц7ц12ц365ц49ц48ц57ц87ц7ц6ц7569ц789ц0《Enter》

输入后输出结果是

A)a=7569,b=789

B)a=5,b=365

C)a=7,b=789

D)a=7569,b=5

(25)下面关于字符常量的说法错误的是

A)一个字符常量代表ASCII字符集中的一个字符

B)单引号中的大写字母和小写字母代表不同的字符常量

C)字符常量只能包含一个字符

D)字符常量可以用单引号或双引号括起来

(26)现有如下程序

#include “stdio.h”

int fun(int x)

{printf(“x=%d\n”,++x);}

main()

{fun(12+5);}

则程序的输出结果是

A)12

B)13

C)17

D)18

(27)现有如下程序段

#include “stdio.h”

int aa(int x,int y);

main()

{int a=24,b=16,c;

c=aa(a,b);

printf(“%d\n”,c);}

int aa(int x,int y)

{int w;

while(y)

{w=x%y;

x=y;

y=w;}

return x;}

则程序段的输出结果是

A)8

B)7

C)6

D)5

(28)下列说法错误的是

A)函数调用时,函数名必须与所调用的函数名字完全相同

B)实参的个数必须与形式参数的个数一致

C)实参可以是表达式,在类型上必须与形参一一对应匹配

D)C语言规定,函数必须先定义,后调用(函数的返回值类型为int或char时除外)

(29)函数的值通过return语句返回,下面关于return语句的形式描述错误的是

A)return表达式;

B)return(表达式);

C)一个return语句可以返回多个函数值

D)一个return语句只能返回一个函数值

(30)现有如下定义:int a,b,*p,*q;,则下列赋值语句错误的是

A)p=&a;

B)q=&b;

C)p=q;

D)p=a;

(31)现有如下程序段

#include “stdio.h”

int *fun(int *a,int *b)

{int c;

c=*a%*b;

return &c;}

main()

{int a=5,b=19,*c;

c=fun(&a,&b);

printf(“%d\n”,++*c);}

则程序段执行后的结果为

A)8

B)7

C)6

D)5

(32)现有int a,*b;,b=&a;,则下列运算错误的是

A)*&a

B)&*a

C)*&b

D)&*b

(33)现有如下程序段

#include “stdio.h”

main()

{ int k[30]={12,324,45,6,768,98,21,34,453,456};

int count=0,i=0;

while(k[i])

{ if(k[i]%2==0‖k[i]%5==0)count++;

i++; }

printf(“%d,%d\n”,count,i);}

则程序段的输出结果为

A)7,8

B)8,8

C)7,10

D)8,10

(34)现有如下定义语句

int*p,s[20],i;

p=s;

表示数组元素s[i]的表达式不正确的是

A)*(s+i)

B)*(p+i)

C)*(s=s+i)

D)*(p=p+i)

(35)阅读如下程序段,这个程序在编译的时候会有一个警告,下列关于这个警告叙述正确的是

#include “stdio.h”

#define N 10

int *fun(int a[N],int n)

{ int i,b[N];

for(i=0;i《n;i++)

b[i]=a[i];

return(b);}

main()

{ int a[N]={12,34,45,5,6,34,4,655,2};

int *k;

k=fun(a[N],5);

printf(“%d\n”,*k);}

A)指针k没有指向任何对象而成为“无向指针”,所以这里会产生警告

B)return语句不应该有括号,所以在这里会有警告

C)return语句的返回值类型与指针k的基类型不一致,这里会产生警告

D)数组赋值的时候没有把数组全部都赋初值,所以在这里会有警告

(36)有如下定义语句:int aa[][3]={12,23,34,4,5,6,78,89,45};,则45在数组aa中的行列坐标各为

A)3,2

B)3,1

C)2,2

D)2,1

(37)现有如下程序段

#include “stdio.h”

main()

{int a[5][6]={23,3,65,21,6,78,28,5,67,25,435,76,8,22,45,7,8,34,6,78,32,4,5,67,4,21,1};

int i=0,j=5;

printf(“%d\n”,*(&a[0][0]+2*i+j-2));}

则程序的输出结果为

A)21

B)78

C)23

D)28

(38)下列程序的输出结果是

#include “stdio.h”

#define N 3

#define M 3

void fun(int a[M][N])

www.45sw.com

{printf(“%d\n”,*(a[1]+2));}

main()

{int a[M][N];

int i,j;

for(i=0;i《M;i++)

for(j=0;j《N;j++)

a[i][j]=i+j-(i-j);

fun(a);}

A)3

B)4

C)5

D)6

(39)下列关于字符串的说法中错误的是

A)在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符′\0′作为字符串结束标志

B)′\0′作为标志占用存储空间,计入串的实际长度

C)在表示字符串常量的时候不需要人为在其末尾加入′\0′

D)在C语言中,字符串常量隐含处理成以′\0′结尾

(40)有下面程序段

#include “stdio.h”

#include “string.h”

main()

{char a[3][20]={{“china”},{“isa”},{“bigcountry!”}};

char k[100]={0},*p=k;

int i;

for(i=0;i《3;i++)

{ p=strcat(p,a[i]);}

i=strlen(p);

printf(“%d\n”,i);}

则程序段的输出结果是

A)18

B)19

C)20

D)21

(41)现有如下程序段

#include “stdio.h”

#include “string.h”

main()

{char a[]=“acfijk”;/*这里是有序的字符序列*/

char b[]=“befijklqswz”;/*这里是有序的字符序列*/

char c[80],*p;

int i=0,j=0,k=0;

while(a[i]!=′\0′ && b[j]!=′\0′)

{if(a[i]《b[j])c[k++]=a[i++];

else if(a[i]》b[j])c[k++]=b[j++];

else {c[k++]=b[j++];

i++;}}

while(a[i]==′\0′ && b[j]!=′\0′)

c[k++]=b[j++];

while(a[i]!=′\0′ && b[j]==′\0′)

c[k++]=a[i++];

c[k]=′\0′;

puts(c);}

则输出结果是

A)acfijkbefijklqswz

B)abceffiijjkklqswz

C)befijklqswz acfijk

D)abcefijklqswz

(42)现在有如下程序

#include “stdio.h”

main()

{char s[80];

int i,j;

gets(s);

for(i=j=0;s[i]!=′\0′;i++)

if(s[i]!=′H′______)

s[j]=′\0′;

puts(s);}

这个程序段的功能是删除输入的字符串中字符′H′,则空线上应当添入的是

A)s[j++]=s[i];j++;

B)s[j]=s[i++];j++;

C)s[j++]=s[i];

D)s[j]=s[i];

(43)下列说法中错误的是

A)静态局部变量的初值是在编译时赋予的,在程序执行期间不再赋予初值

B)若全局变量和某一函数中的局部变量同名,则在该函数中,此全局变量被屏蔽

C)静态全局变量可以被其他的编辑单位所引用

D)所有自动类局部变量的存储单元都是在这些局部变量所在的函数体(或复合语

句)时生成,退出其所在的函数体(或复合语句)时消失

(44)阅读下列程序段,则程序的输出结果为

#include “stdio.h”

#define M(X,Y)(X)*(Y)

#define N(X,Y)(X)/(Y)

main()

{int a=5,b=6,c=8,k;

k=N(M(a,b),c);

printf(“%d\n”,k);}

A)3

B)5

C)6

D)8

(45)若有以下定义和语句

struct a

{ int n,m;};

struct a st[3]={{1,20},{2,19},{3,21}};

struct a *p=st;

则以下错误的引用是

A)(p++)-》n;

B)st[0].n;

C)(*p).n;

D)p=&st.m;

(46)假设有如下定义:struct a{int n;float k;}data,*p;若要使p指向data中的成员n,正确的赋值语句是

A)p=&data.n;

B)*p=data.n;

C)p=(struct a *)&data.n;

D)p=(struct a *)data.n;

(47)下面函数的功能是将指针t2所指向的线性链表,链接到t1所指向的链表的末端。假定t1所指向的链表非空

struct node{ float x;struct node *next;};

connect(struct node *t1, struct node *t2)

{ if(t1-》next==NULL)t1-》next=t2;

else connect(______ ,t2); }

要实现此功能则应该添入的选项是

A)t1.next

B)++t1.next

C)t1-》next

D)++t1-》next

(48)C语言结构体类型变量在程序运行期间

A)TC环境在内存中仅仅开辟一个存放结构体变量地址的单元

B)所有的成员一直驻留在内存中

C)只有最开始的成员驻留在内存中

D)部分成员驻留在内存中

(49)有下列运算符:~,&,《《,》》, |,^,则运算的优先顺序是

A)~,&, |,《《,》》,^

B)~,《《,》》,&, |,^

C)~,《《,》》,^, &,|

D)~,《《,》》,&,^, |

(50)最简单的交换排序方法是

A)快速排序 B)选择排序

C)堆排序 D)冒泡排序


觉得2017计算机二级考试C语言考前密卷六这篇文章不错,记得收藏哦。

Tags:计算机等级考试   ,计算机等级考试试题,全国计算机等级考试试题,计算机等级考试真题