二级c语言考试改卷标准,2012年二级C语言笔试标准预测试卷二

单项选择题

1. 栈和队列的共同特点是( )。

A.都是先进先出

B.都是先进后出

C.只允许在端点处插入和删除元素

D.没有共同点

2. 数据的存储结构是指( )。

A.数据所占的存储空间

B.数据的逻辑结构在计算机中的存放形式

C.数据在计算机中的顺序存储方式

D.存储在计算机外存中的数据

3. 关系数据库管理系统能实现的专门关系运算包括( )。

A.排序、索引、统计

B.选择、投影、连接

C.关联、更新、排序

D.显示、打印、制表

4. 已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是( )。

A.acbed

B.decab

C.deabc

D.cedba

5. 在单链表中,增加头结点的目的是( )。

A.方便运算的实现

B.使单链表至少有一个结点

C.标识表结点中首结点的位置

D.说明单链表是线性的链式存储实现

6. 设有二元关系R和三元关系S,下列运算合法的是( )。

A.R∩S

B.R∪S

C.R-S

D.R×S

7. 两个或两个以上模块之间联系的紧密程度称为( )。

A.耦合性

B.内聚性

C.复杂性

D.数据传输特性

8. 设a=1, b=2, c=3, d=4,则表达式:“a<b?a: b<b?a: c<d?a: d”的结果为( )。

A.4

B.3

C.2

D.1

9. 若有定义:“int a=4, b=5; float x=3.4, y=2.1;”,则下列表达式的值为( )。

(float)(a+b)/2+(int)x%(int)y;

A.5.5

B.55

C.5.500000

D.55.00000

10. 下列程序的输出结果是( )。

main()

{int a, 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

11. 以下叙述中不正确的是( )。

A.在不同的函数中可以使用相同名字的变量

B.函数中的形式参数是局部变量

C.在一个函数内定义的变量只在本函数范围内有效

D.在一个函数内的复合语句中定义的变量在本函数范围内有效

12. 以下能正确定义二维数组的是( )。

A.int a[][3];

B.int a[][3]={2*3};

C.int a[][3]={};

D.int a[2][3]={{1}, {2}, {3, 4}};

13. 下列程序的输出结果是( )。

#include<stdio.h>

main()

{ int a=3, b=2, c=1;

if(a<b)

if(b<0)c=0;

else c++;

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

}

A.2

B.0

C.1

D.不确定的值

14. 要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,下列正确的程序段是( )。

A.while((ch=getchar())!='N')printf("%c", ch);

B.while(ch=getchar()!='N')printf("%c", ch);

C.while(ch=getchar()=='N')printf("%c", ch);

D.while((ch=getchar())=='N')printf("%c", ch);

15. 下列说法不正确的是( )。

A.调用函数时,实参可以是表达式

B.调用函数时,实参与形参可以共用内存单元

C.调用函数时,将实参的值复制给形参,使实参变量和形参变量在数值上相等

D.调用函数时,实参与形参的类型必须一致

16. 下列选项中不是字符常量的是( )。

A.'\v'

B.'\x2a'

C.'a'

D."\0"

17. 若已包括头文件<string.h>且已有定义char s1[18], s2={"ABCDE")和int i,现要将字符串”ABCDE”赋给s1,下列语句错误的是( )。

A.strcpy(s1, s2)

B.strcpy(s1, "ABCDE");

C.s1="ABCDE";

D.for(i=0; i<6; i++)s1[i]=s2[i]

18. 在位运算中,操作数每左移两位,其结果相当于( )。

A.操作数乘以2

B.操作数除以2

C.操作数除以4

D.操作数乘以4

19. 以下程序的输出结果是( )。

main()

{int a=7, b=8,*p, *q, *r;

p=&a; q=&b;

r=P; p=q; q=r;

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

}

A.8,7,8,7

B.7,8,7,8

C.8,7,7,8

D.7,8,8,7

20. 有下列程序:

fun(int x, int y)

{ static int m=0, i=2;

i+=++m;m=i+x+y; return m;

}

main()

{int j=1, m=1, k;

k=fun(j, m); printf("%d," , k);

k=fun(j, m);printf("%d\n", k);

}

执行后的输出结果是( )。

A.5,5

B.5,11

C.11,11

D.11,5

21. 下列程序的运行结果为( )。

#include<stdio.h>

main()

{ struct date

{int year, month,day;

}today;

printf("%d\n", sizeoI(struct date));

}

A.8

B.6

C.10

D.12

22. 有以下程序:

#include<stdio.h>

Struct stu

{int num;

char name[-10];

int age; }

void fun(struct stu *p)

{printf("%s\n", (*p). name); }

main()

{

struct stu students[3]={{9801, "Zhang", 20}, {9802, "Wang", 19}, {9803, " Zhao", 18}}

fun(students+2);

}

输出的结果是( )。

A.Zhang

B.Zhao

C.Wang

D.18

23. 有以下程序

viod fun(int a, int b, int c)

{a=456; b=567; c=678; )

main()

{int x=10, y=20, z=30;

fun(x, y, z);

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

}

输出的结果是( )。

A.30,20,10

B.10,20,30

C.456,567,678

D.678,567,456

24. 有以下结构说明和变量定义,指针P、q、r分别指向链表中的3个连续结点。

struct node

{int data; struct node*next; ) *p, *q, *r;

现要将q所指结点从链表中删除,同时要保持链表的连续,以下不能按要求完成操作的语句是( )。

A.p->next=q->next;

B.p-next=p->next->next;

C.p->next=r;

D.p=q->next;

25. 有定义:“int a=2, b=3, c=4;”,则下列选项中值为0的表达式是( )。

A.(!a==1)&&(!b==0)

B.(a<b)&&!c||1

C.a&&b

D.a||(b+b)&&(c-a)

26. 设fun()函数的定义形式为( )。

void fun(char ch,float x){…}

则下列对函数fun的调用语句中,正确的是

A.fun("abc", 3.0);

B.t=fun('D', 16.5);

C.fun('65', 2.8);

D.fun(32, 32);

27. 有下列程序:

main()

{char p[]={'a', 'b', 'c'), q[]="abc";

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

}

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

A.4 4

B.3 3

C.3 4

D.4 3

28. 有下列程序:

main()

{int k=5, n=0;

while(k>0)

{switch(k)

{default: break;

case 1: n=n+k;

case 2:

case 3: n+=k;

}

k--;

}

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

}

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

A.0

B.4

C.6

D.7

29. 有以下程序:

main()

{int a[]={2, 4, 6, 8, 10), y=0, X, *p;

p=&a[1];

for(x=1; x<3; x++) y+=p[x];

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

}

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

A.10

B.11

C.14

D.15

30. 有下列程序:

void sort(int a[], int n)

{ int i, j, t;

for(i=0; i<n=1; i++)

for(j=i+1; j<n; j++)

if(a[i]<a[j]){t=a[i]; a[i]=a[j]; a[j]=t; )

}

main()

{ int aa[10]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10), i;

sort(aa+2, 5);

for(i=0; i<10; i++)printf("%d, ", aa[i]);

printf("\n");

}

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

A.1,2,3,4,5,6,7,8,9,10,

B.1,2,7,6,3,4,5,8,9,10,

C.1,2,7,6,5,4,3,8,9,10,

D.1,2,9,8,7,6,5,4,3,10

31. 有以下程序:

#include<stdio.h>

int abc(int u, int v);

main()

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

c=abc(a, b);

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

}

int abc(int u, int v)

{int w;

while(v)

{w=u%v; u=v; v=w; }

return;

}

输出结果是( )。

A.6

B.7

C.8

D.9

32. 下列程序的输出结果是( )。

int f1(int x, int y){return x>y? x: y; }

int f2(int x, int y){return x>y? y: x; }

main()

{int a=4, b=3, c=5, d=2, e, f, g;

e=f2(f1(a, b), f1(c, d));

f=f1(f2(a, b), f2(c, d));

g=a+b+c+d-e-f;

printf("%d, %d, %d\n", e, f, g);}

A.4,3,7

B.3,4,7

C.5,2,7

D.2,5,7

33. 语句int(*ptr)()的含义是( )。

A.ptr是一个返回值为int的函数

B.ptr是指向int型数据的指针变量

C.ptr是指向函数的指针,该函数返回一个int型数据

D.ptr是一个函数名,该函数的返回值是指向int型数据的指针

34. 下述程序的输出结果是( )。

#include<stdio.h>

main()

{char ch[2][5]={"1234", "5678"), *p[2];

int i, j, s=0;

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

p[i]=ch[i];

for(i=0: i<2; i++)

{ s=p[i][j]='0';

printf("%d", s);}

}

A.6357

B.6135

C.1357

D.691357

35. 下述程序的输出结果是( )。

#include<stdio.h>

main()

{im a[2][3]={{1, 2, 3}, {4, 5, 6}}, (*p)[3], i;

p=a;

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

{if(i<2)

p[1][i]=p[1][i]-1;

else

p[1][i]=1; }

printf("%d\n", a[0][1]+a[1][1]+a[1][2]); }

A.8

B.7

C.12

D.9

36. 若有以下说明,则( )不是对strcpy库函数正确的涮用。strcpy库函数用于复制一个字符串:char*str1="abcd", str2[10], *str3="hijklmn", *str4[2], *str5="aaaa";

A.strcpy(str2, str1)

B.strcpy(str3, str1)

C.strcpy(str1, str2)

D.strcpy(str5, str1)

37. 执行下述程序后,输出的结果是( )。

#include<stdio.h>

#define S(X)X*X

void main()

{ int a=9, k=3, m=2;

a/=S(k+m)/S(k+m);

printf("%d", a);

}

A.1

B.4

C.9

D.0

38. 已知有如下结构体:

struct sk

{ int a;

float b;

}data, *p;

若有p=&data, 则对data的成员a引用正确的是( )。

A.(*p). data.a

B.(*p). a;

C.p->data. a

D.p. data. a

39. 下述程序的输出结果是( )。

#include<stdio.h>

void main()

{int b[6]={2, 4, 6, 8, 10, 12};

int *p=b,**q=&p;

printf("%d,", *(p++));

printf("%d,", **q);

}

A.4,4

B.2,2

C.4,5

D.2,4

40. 以下程序的输出结果是( )。

main()

{int i, k, a[10], p[3];

k=5;

for(i=0; i<10; i++)a[i]=i;

for(i=0; i<3; i++)p[i]=a[i*(i+1)];

for(i=0; i<3; i++)k+=p[i]*2;

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

}

A.20

B.21

C.22

D.23

填空题

1. 在一个容量为32的循环队列中,若头指针front=3,尾指针rear=2,则该循环队列中共有______个元素。

2. 一棵二叉树第6层(根结点为第一层)的结点最多为______个。

3. 度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为______。

4. 数据库管理系统常见的数据模型有层次模型、网状模型和______3种。

5. 在面向对象的程序设计中,类描述的是具有相似性质的=组______。

6. 数据管理技术发展经过人工管理、文件系统和数据系统3个阶段,其中数据独立性最高的阶段是______。

7. 已有定义:“double *p;”,请写出完整的语句,利用malloc函数使p指出一个双精度型的动态存储单位______。

8. 若a=1,b=2,则表达式!(x=a)||(y=b)&&0的值是______。

9. 在循环中,continue语句与break语句的区别是:______语句只是结束本次循环,然后进行循环的条件判定。

10. 下列程序的运行结果是______。

#define POWER(x) ((x)*(x))

main()

{ int i=1;

printf("%d, %d", POWER(i++), i);

}

11. 下列程序的输出结果是______。

#include<stdio.h>

fun()

{ static int a=0;

a+=3; printf("%d", a);

}

main()

{ int cc;

for(cc=1; cc<5; cc++)fun();

printf("\n");

}

12. 设有以下程序:

main()

{int a, b, k=4, m=8, *p1=&. k, *p2=&m;

a==&m;

b=(*p1)/(*p2)+7;

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

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

}

执行该程序后,a的值为______,b的值为______。

13. 以下程序运行后的输出结果是______。

main()

{int a=0;

a+=(a=8);

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

}

14. 设有如下程序:

main()

{int n1, n2;

scanf("%d", &n2);

while(n2 !=0)

{n1=n2%10;

n2=n2/10;

printf("%d", n1);

}

}

程序运行后,如果从键盘上输入1298,则输出结果为______。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值