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