谁有四川计算机C语言二级考试的真题或模拟题?最好多给我几套,有答案的。你要多少分,只要我有

2007年4月,全国计算机等级考试二级笔试试卷。

c语言程序设计

(考试时间120分钟,满分100分)

一、选择题((1)-(10)每小题2分,(11)-(50) 65438+每小题0分,***60分)以下为a)、b)、c)。

(1)下列说法正确的是(B)

a)算法的效率只与问题的规模有关,与数据的存储结构无关。

b)算法的时间复杂度是指执行算法所需的计算工作量。

c)数据的逻辑结构与存储结构一一对应。

d)算法的时间复杂度与空间复杂度相关。

(2)结构化程序设计中,模块划分的原则是(D)

a)每个模块应包括尽可能多的功能。

b)每个模块的规模应尽可能大。

c)模块之间的链接应尽可能紧密。

d)模块内的高内聚和模块间的低耦合。

(3)下列说法正确的是(a)

a)软件测试的主要目的是发现程序中的错误。

b)软件测试的主要目的是确定程序中错误的位置。

c)为了提高软件测试的效率,最好由程序员自己完成软件测试。

d)软件测试是为了证明软件中没有错误。

(4)下列选项中,(c)不是面向对象编程的特点。

a)继承

b)多态性

c)类比

d)封装

(5)下列关于队列的说法正确的是(D)

a)队列属于非线性表。

b)队列根据“先进后出”的原则组织数据

c)队列删除队列末尾的数据。

d)队列根据“先进先出”的原则组织数据

(6)对于下面的二叉树

A

公元前

D E F X

Y Z

前序遍历的结果是(c)

A) DYBEAFCZX

B) YDEBFZXCA

C) ABDYECFXZ

D) ABCDEFXYZ

(7)如果二叉树中有n个度为2的节点,则二叉树的叶节点数为(A)。

A) n+1

B) n-1

C) 2n

d)不适用

(8)在下面的关系运算中,可以在不改变关系表中属性个数的情况下减少元组个数的是(b)。

a)和

b)薪酬

c)投影

d)笛卡尔乘积

(9)在E-R图中,用来表示实体间关系的图是(C)

a)矩形

b)椭圆形

c)菱形

d)平行四边形

(10)下列说法中错误的是(a)

a)在数据库系统中,数据的物理结构必须与逻辑结构一致。

b)数据库技术的根本目标是解决数据共享问题。

c)数据库设计是指在现有数据库管理系统的基础上建立数据库。

d)数据库系统需要操作系统的支持。

在(11)算法中,每一个需要执行的操作都必须有明确严格的规定,属于算法的(c)。

a)合法性

b)可行性

c)确定性

d)贫困

(12)下列说法中错误的是(D)

a)计算机不能直接执行C语言编写的源程序。

b)C编译器编译完C程序后,生成的带后缀的文件。obj是一个二进制文件。

c)带有后缀的文件。obj和带后缀的文件。链接器生成的exe是一个二进制文件。

带后缀的二进制文件。obj和。exe可以直接运行。

(13)根据C语言规定的用户标识符命名规则,标识符中不能出现的是(b)。

a)大写字母

b)连接器

c)数字字符

d)下划线

(14)下列说法中错误的是(C)

A)C语言是一种结构化编程语言。

b)结构化程序由三个基本结构组成:顺序、分支和循环。

c)三种基本结构组成的程序只能解决简单的问题。

d)结构化编程提倡模块化设计方法。

(15)对于正常运行的C程序,下列说法正确的是(A)。

a)程序的执行总是从主函数开始,到主函数结束。

b)程序的执行总是从程序的第一个函数开始,到主函数结束。

c)程序的执行总是从主函数开始,到程序的最后一个函数结束。

d)程序的执行总是从程序的第一个函数开始,到程序的最后一个函数结束。

(16)变量已被正确定义。要通过scanf ("%d% c% d% c ",&;a1。c 1;a2和ampC2);该语句将值10和20赋给变量a1和a2,将字符X和Y赋给变量c1和c2。下面显示的正确输入形式是(注意:□代表空格字符)(d)

A) 10 □ x □ 20 □ y <回车>

B) 10 □ x20 □ y < Enter >

C) 10 □ x < Enter >

D) 10x < Enter >

20□Y < enter > 20□Y < enter >

(17)如果有一个代数表达式(其中e只表示自然对数的底数,而不是变量),下列能正确表示该代数表达式的C语言表达式是(C)。

A)sqrt(abs(n^x+e^x))

B) sqrt(fabs(pow(n,x)+pow(x,e)))

C)sqrt(fabs(pow(n,x)+exp(x)))

sqrt(fabs(pow(x,n)+exp(x)))

(18)有一个定义:int k = 0;在以下选项的四个表达式中,与其他三个表达式不同的值是(a)

A)k++

B)k+=1

C)++k

D)k+1

(19)有以下程序,其中%u表示输出为无符号整数(B)。

主()

{无符号整数x = 0xFFFF/* x的初始值是十六进制数*/

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

}

程序运行后的输出结果是

A)-1

B)65535

C)32767

D)0xFFFF

(20)让变量X和Y被正确定义和赋值。在下列if语句中,(c)在编译时会产生错误信息。

a)if(x++);

b)如果(x & gty & amp& ampy!=0);

c)如果(x & gty) x- -

d)如果(y & lt0) {;}

else y++;else x++;

(21)下列选项中,x为大于1的奇数时,取值为0的表达式(d)。

A)x%2==1

B)x/2

C)x%2!=0

D)x%2==0

(22)下列说法正确的是(c)

A)A)break语句只能在switch语句体中使用。

B)B)continue语句的作用是使程序的执行流程跳出所有包含它的循环。

C)C)break语句只能在循环体和switch语句体中使用。

d)在循环体中使用break语句与continue语句具有相同的效果。

(23)有以下程序(a)

主()

{int k=5,n = 0;

开关(k)

{ case 1:case 3:n+= 1;打破;

违约;n = 0;k-;

情况2:情况4:n+= 2;k-;打破;

}

printf("%d ",n);

} while(k & gt;0 & amp& ampn & lt5);

}

程序运行后的输出结果是

A)235

B)0235

C)02356

2356

(24)有以下程序

勉()

{int i,j;

for(I = 1;我& lt4;i++)

{ for(j = I;j & lt4;j++) printf("%d*%d=%d ",I,j,I * j);

printf(" \ n ");

}

}

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

a)1 * 1 = 1 * 2 = 2 1 * 3 = 3 B)1 * 1 = 1 1 * 2 = 2 1 * 3 = 3

2*1=2 2*2=4 2*2=4 2*3=6

3*1=3 3*3=9

c)1 * 1 = 1D)1 * 1 = 1

1*2=2 2*2=4 2*1=2 2*2=4

1*3=3 2*3=6 3*3=9 3*1=3 3*2=6 3*3=9

(25)下列法律字符常量是(a)

A)"\x13 "

B)"\018 "

C)"65 "

D)"\n "

(26)在C语言中,函数返回值的类型最终取决于(a)

a)定义函数时,函数头中指定的函数类型

B)B)return语句中表达式值的类型

c)调用函数时主函数传递的参数类型

d)定义函数时形参的类型

(27)已知大写字母A的ASCII码是65,小写字母A的ASCII码是97。下列说法中不能将变量C中的大写字母转换成相应小写字母的是(d)。

c=(c-A)和amp+'a '

B)c=c+32

C)c=c-'A'+'a '

c =(' A '+c)& amp;-" a "

(28)具有以下功能

利息(char *s)

{ char * t = s;

while(* t++);

返回(t-s);

}

这个函数的作用是(b)

a)比较两个字符的大小

b)计算由s表示的字符串占用的存储字节数

c)计算由s表示的字符串的长度

d)将S表示的字符串复制到字符串t中

(29)假设现有定义:浮点x;那么下面定义指针变量P并赋初值的语句中(d)是正确的。

a)float * p = 1024;

b)int * p =(float x);

浮动p = & ampx;

浮动* P = & ampx;

(30)有以下程序

#包括

主()

{int n,* p = NULL

* p = & ampn;

printf("输入n:");scanf("%d ",& ampp);printf("输出n:");printf("%d\n ",p);

}

这个程序试图通过指针P读取变量n的数据并输出,但是程序中有很多错误。下列说法正确的是(a)。

A)int n,* p = NULL

b)* p = & amp;n;

C)scanf("%d ",& ampp)

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

(31)下面程序中函数f的作用是:当flag为1时,从小到大排序;当标志为0时,从大到小排序。

void f(int b[],int n,int flag)

{int i,j,t;

for(I = 0;我

for(j = I+1;j

如果(旗帜?b[I]& gt;b[j]:b[i]

}

主()

{int a[10]={5,4,3,2,1,6,7,8,9,10},I;

f(& amp;a[2],5,0);f(a,51);

for(I = 0;我& lt10;i++) printf("%d," a[I]);

}

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

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

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

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

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

(32)有以下程序

void f(int b[])

{ int I;

for(I = 2;我& lt6;i++)b[I]* = 2;

}

主()

{int a[10]={1,2,3,4,5,6,7,8,9,10},I;

f(a);

for(I = 0;我& lt10;i++) printf("%d ",a[I]);

}

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

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

1,2,6,8,10,12,7,8,9,10

C)1,2,3,4,10,12,14,16,9,10,

D)1,2,6,8,10,12,14,16,9,10,

(33)有以下程序

typedef结构{int b,p;} A;

Void f(A c) /*注意:c是结构变量名*/

{ int j;

c . b+ = 1;c . p+= 2;

}

主()

{ int I;

A a={1,2 };

f(a);

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

}

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

A)2,3

B)2,4

c)1.4

D)1,2

(34)有以下程序

主()

{int a[4][4]={{1,4,3,2,},{8,6,5,7,},{3,7,2,5,},{4,8,6,1,},I,j,k,t;

for(I = 0;我& lt4;i++)

for(j = 0;j & lt3;j++)

for(k = j+1;k & lt4;k++)

if(a[j][I]& gt;a[k][I]){ t = a[j][I];a[j][I]= a[k][I];a[k][I]= t;}/*按列排序*/

for(I = 0;我& lt4;i++)printf("%d ",a[I][j]);

}

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

1,6,5,7,

8,7,3,1,

C)4、7、5、2、

D)1,6,2,1,

(35)有以下程序

主()

{int a[4][4]={{1,4,3,2,},{8,6,5,7,},{3,7,2,5,},{4,8,6,1,},I,k,t;

for(I = 0;我& lt3;i++)

for(k = I+I;k & lt4;k++) if(a[i][i]

for(I = 0;我& lt4;i++)printf("%d ",a[0][I]);

}

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

A)6,2,1,1

B)6、4、3、2、

C)1,1,2,6,

D)2、3、4、6、

(36)有以下程序

void f(int *q)

{ int I = 0;

for(;我& lt5;i++)(* q)++;

}

主()

{int a[5]={1,2,3,4,5},I;

f(a);

for(I = 0;我& lt5;i++)printf("%d ",a[I]);

}

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

A)2,2,3,4,5,

B)6、2、3、4、5、

C)1,2,3,4,5,

D) 2、3、4、5、6、

(37)有以下程序

#包括

主()

{char p[20]={'a ',' b ',' c ',' d'},q[]="abc ",r[]= " abcde ";

strcpy(p+strlen(q),r);strcat(p,q);

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

}

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

A)20 9

B)9 9

C)20 11

D)11 11

(38)有以下程序

#包括

主()

{char p[20]={'a ',' b ',' c ',' d'},q[]="abc ",r[]="abcde "

strcat(p,r);Strcpy(p+strlen(q),q);

Printf("%d \n ",sizeof(p));

}

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

A)9

B)6

C)11

D)7

(39)有以下程序

#包括

主()

Void f (char p [] [10],int n)/*字符串从小到大排序*/

{ char t[10];int i,j;

for(I = 0;我

for(j = I+1;j

if(strcmp(p[i],p[j])& gt;0) {strcpy(t,p[I]);strcpy(p[i],p[j]);strcpy(p[i],t);}

}

主()

{char p[5][10]={"abc "," aabdfg "," abbd "," dcdbe "," CD " };

f(p,5);

printf("%d\n ",strlen(p[0]));

}

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

A) 2

B) 4

C) 6

D) 3

(40)有以下程序

void f(int n,int *r)

{ int r 1 = 0;

if(n % 3 = = 0)r 1 = n/3;

else if(n % 5 = = 0)r 1 = n/5;

else f( - n,& ampr 1);

* r = r 1;

}

主()

{int m=7,r;

女(男,& ampr);printf("%d\n,r ");

}

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

A) 2

B) 1

C)3

D) 0

(41)有以下程序。

main(int argc,char *argv[])

{int n=0,I;

for(I = 1;I n = n * 10+* argv[I]--0;

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

}

编译连接后,生成可执行文件tt.exe。如果它正在运行,请输入以下命令行。

tt 12 345 678

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

A) 12

B) 12345

C)12345678

D) 136

(42)有以下程序

int a = 4;

整数f(整数n)

{ int t = 0;静态int a = 5;

if(n % 2){ int a = 6;t++ = a++;}

else { int a = 7;t++ = a++;}

返回t+a++;

}

主()

{int s=a,I = 0;

for(;I〈2;i++)s+= f(I);

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

}

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

A)24

B)28

C)32

D)36

(43)有一个名为init.txt的文件,内容如下:

#定义HDY(A,B) A/B

# define PRINT(Y) Printf("y=%d\n,Y)

有以下程序

#include "init.txt "

主()

{int a=1,b=2,c=3,d=4,k;

K=HDY(a+c,b+d);

打印(K);

}

关于这个项目,下列说法正确的是(D)

a)编译错误

b)操作错误

c)运行结果为y=0。

d)运行结果为y=6。

(44)有以下程序

主()

{char ch[]="uvwxyz ",* pc

Pc = chprintf(" % c \ n " ,*(PC+5));

}

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

A)z

B)0

c)元素ch[5]的地址

d)字符y的地址

(45)有以下程序

结构S { int n;int a[20];};

空f(结构S *P)

{int i,j,t;

for(I = 0;in-1;i++)

for(j = I+1;jn;j++)

如果(p->;a[I]& gt;p->;a[j]){ t = p-& gt;a[I];p->;a[I]= p-& gt;a[j];p->;a[j]= t;}

}

主()

{ int I;struct S = { 10,{2,3,1,6,8,7,5,4,10,9 } };

f(& amp;s);

for(I = 0;i printf("%d ",s . a[I]);

}

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

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

B)10,9,8,7,6,5,4,3,21,

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

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

(46)有以下程序

结构S { int n;int a[20];};

void f(int *a,int n)

{ int I;

for(I = 0;I a[I]+= I;

}

主()

{ int I;struct S = { 10,{2,3,1,6,8,7,5,4,10,9 } };

f(南非,南非);

for(I = 0;i printf("%d ",s . a[I]);

}

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

A)2,4,3,9,12,12,11,11,18,9,

B)3,4,2,7,9,8,6,5,11,10,

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

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

(47)有以下程序段

typedef结构节点{ int data结构节点* next} *节点;

节点p;

下列说法正确的是(c)

A)p是指向struct节点结构变量的指针的指针。

b)节点p;语句错误

C)p是指向struct节点结构变量的指针。

D)p是struct节点结构变量。

(48)有以下程序

主()

{无符号字符a=2,b=4,c=5,d;

d = a | b;d & amp= c;printf("%d\n ",d);}

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

A)3

B)4

C)5

D)6

(49)有以下程序

#包括

主()

{ FILE * fpint k,n,a[6]={1,2,3,4,5,6 };

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

fprintf(fp," %d%d\n ",a[0],a[1],a[2]);fprintf(fp," %d%d%d \n ",a[3],a[4],a[5]);

fclose(FP);

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

fscanf(fp," %d%d ",& ampk & amp;n);printf("%d%d\n ",k,n);

fclose(FP);

}

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

A)1 2

B)1 4

123 4

D) 123 456

(50)有以下程序

#包括

主()

{ FILE * fpint i,a[6]={1,2,3,4,5,6k };

fp=fopen("d3.dat "," w+b ");

fwrite(a,sizeof(int),6,FP);

fseek(fp,sizeof(int)*3,SEEK _ SET);/*该语句使读取文件的位置指针从文件头向后移动3 int data */

fread(a,sizeof(int),3,FP);fclose(FP);

for(I = 0;我& lt6;i++) printf("%d ",a[I]);

}

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

A)4,5,6,4,5,6,

1,2,3,4,5,6,

C)4,5,6,1,2,3,

D)6,5,4,3,2,1,

填空题(每题2分,***40分)请将每题的正确答案写在答题卡上序号从[1]到[20]的横线上,答案不在试卷上计分。注意:用命令关键字填空必须完整。

(1)在深度为7的全二叉树中,度为2的节点数为_ _ _ 63 _ _ _个。

(2)软件测试分为白盒(箱)测试和黑盒(箱)测试,等价类划分方法属于_ _黑盒(或黑盒)测试。

(3)在数据库系统中,实现各种数据管理功能的核心软件称为_ _数据库管理系统。

(4)软件生命周期可以分为几个阶段,一般分为定义阶段、开发阶段和维护阶段。编码和测试属于开发的_ _ _ _ _阶段。

(5)在用于结构分析的数据流图(DFD)中,通过使用数据字典准确地解释了其中的图形元素。

(6)执行以下程序后的输出结果是a=14。

主()

{ int a = 10;

a=(3*5,a+4);printf("a=%d\n ",a);

}

(7)执行以下程序时,输入1234567890,while循环体将执行0次。

#包括

主()

{ char ch

while((ch = getchar())= = ' 0 ')printf(" # ");

}

(8) (8)下面这个程序的运行结果是m=4 k=4 i=5 k=5。

int k = 0;

无效资金(整数)

{ m+= k;k+= m;printf("m=%d\n k=%d ",m,k++);}

主()

{ int I = 4;

fun(i++);printf("i=%d k=%d\n ",I,k);

}

(9) (9)下面的程序运行结果是# &;。

主()

{int a=2,b=7,c = 5;

开关(a & gt0)

{案例1:开关(b & lt0)

{ case 1:switch(“@”);打破;

案例2: printf("!");打破;

}

情况0:开关(c==5)

{ case 0:printf(" * ");打破;

案例1:printf(" # ");打破;

案例二:printf(" $ ");打破;

}

默认值:printf(& amp;);

}

printf(" \ n ");

}

(10)以下程序的输出是9。

#包括

主()

{ printf("%d\n ",strlen(" IBM \ n 012 \ 1 \ \ ");

}

(11) Charch = "$ "已被定义;int i=1,j;执行j=!ch & amp& ampi++之后,I的值是1。

(12)以下程序的输出是5 ^ 4。

#包括

主()

{ char a[]={'\1 ',' \2 ',' \3 ',' \4 ',' \ 0 ' };

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

}

(13)有定义语句:int a[][3]={{0},{1},{ 2 } };,数组元素a[1][2]的值为0。

(14)下面这个程序的作用是求数组X中两个相邻元素的和,依次存入数组A,然后输出。请填空。

主()

{int x[10],a[9],I;

for(I = 0;我& lt10;i++)

scanf("%d ",& ampx[I]);

for(I = 1;我& lt10;i++)

a[I-1]= x[I]+x[I-1];

for(I = 0;我& lt9;i++)

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

printf(" \ n ");

(15)下面这个程序的作用是:用指针指向三个整数变量,通过指针操作找出三个数的最大值并输出到屏幕上。请填写空格:

主()

{int x,y,z,max,*px,*py,*pz,* pmax

scanf("%d%d%d ",& ampx & amp;y & amp;z);

px = & ampx;

py = & ampy;

pz = & ampz;

pmax = & ampmax

*pmax=*px(或* pmax = x);

if(* pmax & lt;* py)* pmax = * py;

if(* pmax & lt;* pz)* pmax = * pz;

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

}

(16)以下程序的输出是10。

int fun(int*x,int n)

{如果(n==0)

返回x[0];

else返回x[0]+fun(x+1,n-1);

}

主()

{int a[]={1,2,3,4,5,6,7 };

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

}

(17)以下程序的输出是35

#包括

主()

{char *s1,*s2,m;

s 1 = S2 =(char *)malloc(sizeof(char));

* s 1 = 15;

* s2 = 20

m = * s 1+* S2;

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

}

(18)有说明。

结构日期{整数年;int月;int日;};

请写一个定义语句,将D定义为上述结构变量,并依次为其成员年、月、日赋初值:结构数据d = {2006,10,1 };

(19)有一个定义:FILE * fw,请完成下面的语句来打开文件,以便可以继续写到文本文件readme.txt的末尾

fw=fopen("readme.txt "," a ")

2007年4月全国计算机等级考试二级C语言笔试答案

一、选择题:

1-5 24134

6-10 31321

11-15 34231

16-20 43113

21-25 43421

26-30 14241

31-35 22412

36-40 23232

41-45 42411

46-50 13241

二、填空:

1.63

2、墨盒

3.DBNS

4、发展

5、数据字典

6、a-14

7,0

8、无人接听

9,#和符号

10,9

11,1

12,5_4

13,13 0

14,i=1

15,X[i-1]

16,无人接听

17,10

18,40

19,无人接听

20,“20a”