2014年3月份全国计算机等级考试二级c语言选择题大全,2014年3月全国计算机二级C选择题考试真题...

26

1.设数据元素的集合D={ 1,2,3,4,5 },则满足下列关系R的数据结构中为线性结构的是

A.R={ (1,2), (3,4), (5,1) }

B.R={ (1,3), (4,1), (3,2), (5,4) }

C.R={ (1,2), (2,3), (4,5) }

D.R={ (1,3), (2,4), (3,5) }

2.下列叙述中正确的是

A.链表结点中具有两个指针域的数据结构可以是线性结构,也可以是非线性结构

B.线性表的链式存储结构中,每个结点必须有指向前件和指向后件的两个指针

C.线性表的链式存储结构中,每个结点只能有一个指向后件的指针

D.线性表的链式存储结构中,叶子结点的指针只能是空

3.一个栈的初始状态为空。现将元素A,B,C,D,E依次入栈,然后依次退栈三次,并将退栈的三个元素依次入队(原队列为空),最后将队列中的元素全部退出。则元素退队的顺序为

A.ABC

B.CBA

C.EDC

D.CDE

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

A.5

B.4

C.3

D.2

5.软件生命周期是指

A.软件产品从提出、实现、使用、维护到停止使用退役的过程

B.软件的需求分析、设计与实现

C.软件的开发与管理

D.软件的实现和维护

6.某系统结构图如下图所示

该系统结构图的深度是

A.1

B.2

C.3

D.4

7.下面属于应用软件的是

A.学生成绩管理系统

B.UNIX操作系统

C.汇编程序

D.编译程序

8.将E-R图转换为关系模式时,E-R图中的属性可以表示为

A.属性

B.键

C.关系

D.域

9.有两个关系R与S如下,由关系R和S得到关系T,则所使用的操作为

A.并

B.自然连接

C.除法

D.交

10.优化数据库系统查询性能的索引设计属于数据库设计的

A.需求分析

B.概念设计

C.逻辑设计

D.物理设计

11.结构化程序由顺序、选择、循环三种基本结构组成,以下相关叙述错误的是

A.三种基本结构不可以嵌套使用

B.顺序结构是按语句在程序中的先后顺序逐条执行,没有分支,没有转移

C.选择结构是根据不同的条件执行不同分支中的语句

D.循环结构是根据条件决定是否重复、重复执行多少次循环体语句

12.以下能正确表述算式 sin(2πr+30°)的C语言表达式是

A.sin(2*3.14*r+3.14*30/180.0)

B.sin(2*π*r+ 30 )

C.sin(2*3.14*r+ 30 )

D.sin(2*3.14*r+30*3.14/360.0)

13.设有定义:int x=11,y=12,z=0;,以下表达式值不等于12的是

A.z=(x==y)

B.(z=x,y)

C.z=(x,y)

D.(z,x,y)

14.以下可以将任意一个两位整数n的个位数与十位数对换的表达式为

A.(n-n/10*10)*10+n/10

B.n-n/10*10+n/10

C.n/10+(n-n/10)

D.(n-n/10)*10+(n/10)

15.设有以下程序段

int y;

y=rand() % 30+1;

则变量y的取值范围是

A.0<y≤30

B.0≤y≤30

C.1<y<30

D.1<y≤30

16.以下程序段中,循环次数不超过10的是

A.int i=10;do{ i=i+1;} while(i<0);

B.int i=5;do{ i+=1;} while(i>0);

C.int i=1;do{ i+=2;} while(i!=10);

D.int i=6;do{ i-=2;} while(i!=1);

17.有以下程序

#include

main()

{

int x;

scanf("%d",&x);

if(x>10) printf("1");

else if(x>20) printf("2");

else if(x>30) printf("3");

}

若运行时输入:35,则输出结果是

A.1

B.2

C.3

D.123

18.若要实现total=1+2+3+4+5求和,以下程序段错误的是

A.inti=1,total=1;

while(i<5)

{total+=i;

i+=1;

}

B.inti=1,total=0;

while(i<=5)

{total+=i;

i+=1;

}

C.inti=0,total=0;

while(i<5)

{i+=1;

total+=i;

}

D.inti=0,total=0;

while(i<=5)

{total+=i;

i+=1;

}

19.有以下程序

#include

main()

{

inti=1,k=0;

for(;i<6 ; )

{switch(i%3)

{case 0: k++;

case 1: k++; break;

case 2: k++; continue;

}

i+=1;

}

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

}

程序的运行情况是

A.形成无限循环

B.输出6

C.输出5

D.输出4

20.以下不能输出小写字母a的选项是

A.printf("%c\n","a");

B.printf("%c\n",'A'+32);

C.putchar(97);

D.putchar('a');

21.有以下程序段

char c1,c2,c3;

scanf("%c%c%c",&c1,&c2,&c3);

若要给c1、c2、c3分别输入字母A、B、C,则以下对输入形式的描述正确的是

A.字母A、B、C之间不能有分隔符

B.字母A、B、C之间可以用空格分隔

C.字母A、B、C之间可以用回车符分隔

D.字母A、B、C之间可以用Tab键分隔

22.有以下程序段

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

if(a

if(a

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

该程序段的功能是

A.输出a的原始值

B.输出a、b、c中的最大值

C.输出a、b、c中的最小值

D.输出a、b、c中值相等的数值

23.以下程序的功能是:通过调用calc函数,把所求得的两数之和值放入变量add中,并在主函数中输出。

#include

void calc(float x,float y, float *sum)

{________ = x+y;}

main()

{float x,y,add;

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

calc(x,y,&add);

printf("x+y=%f\n",add);

}

calc函数中下划线处应填入的是

A.*sum

B.sum

C.&sum

D.add

24.有以下程序

#include

main()

{ char a[4][4]={' '};

int i,j;

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

{a[i][0]=a[i][3]='#';

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

{a[0][j]=a[3][j]='#';

if((i!=0)&&(i!=3)) a[i][j]='o';

}

}

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

{for(j=0; j<4;j++)

printf("%2c",a[i][j]);

printf("\n");

}

}

程序的运行结果是

A.# o o #

# o o #

B.# # # #

# o o #

C.# o o #

# # # #

D.# # # #

# # # #

25.设有函数定义:void sub(int k,char ch){…}则以下对函数sub的调用语句中,正确的是

A.sub(1,97);

B.sub(2,'97');

C.n=sub(3,'a');

D.sub(4,"a");

26.有以下程序

#include

void fun(int *x,int s,int n)

{int i;

for(i=s; i>=n; i--)

*(x+i+3) = *(x+i);

}

main()

{int m[]={0,1,2,3,4,5,6,7,8,9},k;

fun(m,10-4,3);

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

printf("%d",m[k]);

}

程序的运行结果是

A.0123453456

B.0123456345

C.0123456666

D.0123454569

27.若有定义语句:int m[ ][3]={1,2,3,4,5,6,7};,则与该语句等价的是

A.int m[ ][3]={{1,2,3},{4,5,6},{7}};

B.int m[ ][3]={{1,2},{3, 4 },{5, 6,7}};

C.int m[ ][3]={{1,2,3},{4,5},{6,7}};

D.int m[ ][3]={{1},{2,3,4},{5,6,7}};

28.设有以下说明和语句:intx[3][4],(*p)[4]; p=a;,则与表达式*(*p+2)等价的选项是

A.a[0][2]

B.*(a+2)[0]

C.(*a+2)[0]

D.a[2][0]

29.以下不能将键盘输入的字符串:This is a string读入到str中的程序段是

A.char str[80];scanf("%s",str) ;

B.char str[80];int i=0;while((str[i++]=getchar())!='\n');str[i]=0;

C.char str[80];gets(str);

D.char str[80], *ps=str;do{ scanf("%c",ps); } while(*ps++ !='\n'); *(ps)=0;

30.有以下程序

#include

main()

{char s[10]="verygood", *ps=s;

ps+=4;

ps="nice";

puts(s);

}

程序的运行结果是

A.verygood

B.verynice

C.nicegood

D.nice

31.有以下程序

#include

int fun(char *s)

{char *p=s;

while( *p != '\0') p++;

return(p-s);

}

main()

{char *p="01234";

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

}

程序的运行结果是

A.5

B.6

C.4

D.3

32.有以下程序

#include

main()

{int findmax(int,int,int),m;

m=findmax(a,b,c);

}

int findmax(int x,int y,int z)

{…}

则以下叙述正确的是

A.在main函数中声明了findmax函数

B.在main函数中定义了findmax函数

C.在main函数中两次调用了findmax函数

D.在main函数内、外重复定义了findmax函数

33.有以下程序

#include

void fun(int n)

{int i;

if((i=n/10)!=0)

fun(i);

putchar(n%10+'0');

}

main()

{fun(256); }

程序运行后的输出结果是

A.256

B.652

C.2560

D.52

34.有以下程序

#include

#include

void fun(int *p1, int *s)

{int *t;

t=(int *)malloc(2 * sizeof(int));

*t=*p1 + *p1++;

*(t+1)=*p1+ *p1;

s=t;

}

main()

{

int a[2]={1,2},b[2]={0};

fun(a,b);

printf("%d,%d\n",b[0],b[1]);

}

程序运行后的输出结果是

A.0,0

B.2,6

C.2,4

D.1,2

35.有以下程序

#include

#define FNA(x)x*x

#define FNB(x)x+x

main()

{int a=2,b=4;

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

}

程序运行后的输出结果是

A.8,32

B.16,32

C.8,16

D.16,16

36.设有如下语句

typedef struct Date{

int year;

int month;

int day;

} DATE;

则以下叙述中错误的是

A.DATE是用户定义的结构体变量

B.struct Date是用户定义的结构体类型

C.DATE是用户说明的新结构体类型名

D.struct是结构体类型的关键字

37.设有如下定义

struct{ int n; char c; } a[2],*p=a;

则以下错误引用结构体成员n的是

A.(*a)->n

B.a[0].n

C.p->n

D.(*p).n

38.有以下程序

#include

#include

typedef struct {

char name[10];

char sex;

int age;

} STU;

void fun(STU t)

{strcpy(t.name,"Tong");

t.age++;

}

main()

{STU s[2]={"Hua",'m',18,"Qin",'f',19};

fun(s[1]);

printf("%s,%d,%s,%d\n",s[0].name,s[0].age,s[1].name ,s[1].age );

}

程序运行后的输出结果是

A.Hua,18,Qin,19

B.Hua,18,Tong,20

C.Tong,19,Qin,19

D.Hua,19,Tong,19

39.设有定义:int a=64,b=8;,则表达式(a&b)||(a&&b)和(a|b)&&(a||b)的值分别为

A.1和1

B.1和0

C.0和1

D.0和0

40.有以下程序段

FILE *fp;

if( (fp=fopen("test.txt","w")) == NULL)

{printf("不能打开文件!");

exit(0);}

else

printf("成功打开文件!");

若文件test.txt已存在,则以下叙述正确的是

A.程序运行后,文件test.txt中的原有内容将全部消失

B.程序运行时,会因文件存在而出错

C.对文件test.txt进行写操作后,可以随机进行读取

D.对文件test.txt写入的内容总是被添加到文件尾部

1.B2.A3.C4.B5.A6.C7.A8.A9.C10.D11.A12.A13.A14.A15.A16.A17.A18.A19.A20.A21.A22.A23.A24.A25.A26.A27.A28.A29.A30.A31.A32.A33.A34.A35.A36.A37.A38.A39.A40.A

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值