急求计算机二级考试(C语言)试题
(1)数据的存储结构参考d。
(a)存储在外部存储器中的数据(b)数据占用的存储空间量。
(c)数据在计算机中的顺序存储方式(d)数据在计算机中的逻辑结构表示。
(2)下列关于栈的描述,错误的是b。
(a)堆栈是一个先进后出的优先表。
(b)堆垛只能按顺序存放。
(三)堆栈具有记忆功能。
(d)在插入和删除栈的操作中,不需要改变栈底指针。
(3)对于长度为n的线性表,在最坏的情况下,以下排序方法对应的正确比较次数为d。
(a)冒泡顺序是N/2 (B)冒泡顺序是N。
(c)快速排序是N (D)快速排序是N(N-1)/2。
(4)顺序搜索长度为n的线性表,最坏情况下所需的比较次数为c。
(A)log2n (B)n/2 (C)n (D)n+1
(5)下列对线性表的描述中,A是正确的。
a)存储空间不一定是连续的,每个元素的存储顺序是任意的。
b)存储空间不一定是连续的,前一个元素必须存储在后一个元素之前。
c)存储空间必须是连续的,并且每个前面元件必须存储在后面元件的前面。
d)存储空间必须是连续的,每个元素的存储顺序是任意的。
(6)下列关于软件测试的描述中,C是正确的。
a)软件测试的目的是证明程序是否正确。
b)软件测试的目的是使程序正确运行。
c)软件测试的目的是在程序中发现尽可能多的错误。
d)软件测试的目的是使程序符合结构化原则。
(7)为了使模块尽可能独立,需要B。
(a)模块的内聚性应尽可能高,模块之间的耦合性应尽可能强。
(b)模块的内聚性应尽可能高,模块间的耦合性应尽可能弱。
(c)模块的内聚性应尽可能低,模块之间的耦合性应尽可能弱。
(d)模块的内聚性应尽可能低,模块之间的耦合性应尽可能强。
(8)下列描述中正确的是d。
(a)程序是软件;(b)软件开发不受计算机系统的限制。
(c)软件既是逻辑实体,也是物理实体。(d)软件是程序、数据和相关文档的集合。
(9)数据独立性是数据库技术的重要特征之一。所谓数据独立,指的是d。
(a)数据和程序独立储存。
(b)不同的数据存储在不同的文件中。
(c)不同的数据只能由相应的应用程序使用。
(d)以上三种说法都不正确。
(10)用树形结构表示实体间关系的模型是c。
(a)关系模型(b)网络模型(c)层级模型(d)以上三者都是。
(11)算法有五个特点。下列选项中,B不属于算法特征。
(a)贫穷(b)简单(c)可行性(d)确定性
(12)下列选项中,A是C语言的法定常数。
(一)-80。(B)-080 (C)-8e1.0 (D)-80.0e
(13)下列说法中正确的是c。
(a)用C语言实现的算法必须有输入输出操作。
(b)用C语言实现的算法可以没有输出,但必须有输入。
(C)C程序实现的算法可以没有输入,但必须有输出。
(d)C程序实现的算法可以没有输入,也没有输出。
(14)以下不能定义为用户标识符为d。
Main (B)_0 (C)_int (D)sizeof
(15)下列选项中,B不是合法常数。
(A)1.234 e04(B)1.234 E0(C)1.234 e+4(D)1.234 E0
(16)如果以下程序C可用,数字字符0的ASCII值为48。
主()
{
char a='1 ',b = ' 2
printf("%c,",b++);
printf("%d\n ",b-a);
}
程序运行后的输出结果是
(A)3,2 (B)50,2 (C)2,2 (D)2,50
(17)具有以下过程a
主()
{
int m=12,n = 34
printf("%d%d ",m++,++ n);printf("%d%d\n ",n++,++ m);
}
程序运行后的输出结果是
(A)12353514(B)12353513(C)12343514(D)12343513
(18)有以下语句:int b;char c[10];,正确的输入语句是b。
A)scanf("%d%s ",& ampb & amp;c);B) scanf("%d%s ",& ampb,c);
c)scanf("%d%s ",b,c);D)scanf("%d%s ",b,& ampc);
(19)具有以下过程a
主()
{
int m,n,p;
scanf("m=%dn=%dp=%d ",& ampm & amp;n & amp;p);
printf("%d%d%d\n ",m,n,p);
}
如果您想从键盘输入数据,使变量M中的值为123,N中的值为456,P中的值为789,那么正确的输入是
a)M = 123N=456 P = 789 B)M = 123N = 456 P = 789 C)M = 123,N = 456,P=789 D)123 456 789
(20)有以下程序b
主()
{
int a,b,d = 25
a = d/10% 9;b = a & amp& amp(-1);
printf("%d,%d\n ",a,b);
}
程序运行后的输出结果是
A)6,1 B)2,1 C)6,0 D)2,0
(21)具有以下过程d。
主()
{
int i=1,j=2,k = 3;
if(i++ = = 1 & amp;& amp(++j==3||k++==3))
printf("%d %d %d\n ",I,j,k);
}
程序运行后的输出结果是
1 2 3 (B)2 3 4 (C)2 2 3 (D)2 3 3
(22)如果整数变量A,B,C,D中的值依次为:1,4,3,2。
然后条件表达式aA) 1 B)2 C)3 D)
(23)有以下程序b
主()
{
int p[8]={11,12,13,14,15,16,17,18},i=0,j = 0;
while(i++ & lt;7)if(p[I]% 2)j+= p[I];
printf("%d\n ",j);
}
程序运行后的输出结果是
A)42 B)45 C)56 D)60
(24)有以下程序c
主()
{
char a[7]= " A0 \ 0a 0 \ 0 ";int i,j;
I = sizeof(a);j = strlen(a);
printf("%d %d\n ",I,j);
}
程序运行后的输出结果是
A)2 2 B)7 6 C)7 2 D)6 2
(25)下列能正确定义一维数组的选项是b。
A)int a[5]={0,1,2,3,4,5 };B)char a[]={0,1,2,3,4,5 };
C)char a={'A ',' B ',' C ' };d)int a[5]= " 0123 ";
(26)有以下程序a
int f1(int x,int y){ return x & gt;y?x:y;}
int f2(int x,int y){ return x & gt;y?y:x;}
主()
{
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
27)现有定义:char a [] = "XYZ ",b [] = {'x ',' y ',' z ' };下列说法中正确的是c。
A)数组A和B的长度相同;b)数组A的长度小于数组b的长度。
c)数组A的长度大于数组b的长度D)以上说法都不正确。
28)有以下程序d。
void f(int *x,int *y)
{
int t;
t = * x;* x = * y;* y = t;
}
主()
{
int a[8]={1,2,3,4,5,6,7,8},I,*p,* q;
p = a;q = & ampa[7];
while(p{f(p,q);p++;q-;}
for(I = 0;我& lt8;i++)printf("%d ",a[I]);
}
程序运行后的输出结果是
A)8,2,3,4,5,6,7,1,B)5,6,7,8,1,2,3,4,
C)1,2,3,4,5,6,7,8,D)8,7,6,5,4,3,2,1,
29)有以下程序d。
主()
{
int a[3][3],*p,I;
p = & ampa[0][0];
for(I = 0;我& lt9;i++)p[I]= I;
for(I = 0;我& lt3;i++)printf("%d ",a[1][I]);
}
程序运行后的输出结果是
a)0 1 2 B)1 2 3 C)2 3 4D)3 4 5
(30)下列说法中错误的是a。
a)对于double类型的数组,不能直接使用数组名作为一个整体来输入或输出数组。
b)数组名代表数组所占存储区域的第一个地址,其值不可更改。
c)当程序执行过程中数组元素的下标超出定义的下标范围时,系统会给出“下标越界”的错误信息。
d)数组元素的数量可以通过赋予初始值来确定。
(31)有如下程序c。
#定义N 20
fun(int a[],int n,int m)
{int i,j;
for(I = m;我& gt= n;I-)a[I+1]= a[I];
}
主()
{
int i,a[N]={1,2,3,4,5,6,7,8,9,10 };
fun(a,2,9);
for(I = 0;我& lt5;i++)printf("%d ",a[I]);
}
程序运行后的输出结果是
a)10234 B)12344 C)12334D)12234
32)有以下程序b。
主()
{
int a[3][2]={0},(*ptr)[2],I,j;
for(I = 0;我& lt2;i++)
{ ptr = a+I;scanf("%d ",ptr);ptr++;}
for(I = 0;我& lt3;i++)
{ for(j = 0;j & lt2;j++)printf("-",a[I][j]);
printf(" \ n ");
}
}
如果运行时输入为:1 23,则输出结果为
a)错误消息B)1 0 C)1 2 D)1 0
2 0 3 0 2 0
0 0 0 0 3 0
33)有以下程序b。
prt(int *m,int n)
{ int I;
for(I = 0;我)
主()
{
int a[]={1,2,3,4,5},I;
prt(a,5);
for(I = 0;我& lt5;i++)
printf("%d ",a[I]);
}
程序运行后的输出结果是
A}1,2,3,4,5,B}2,3,4,5,6,C}3,4,5,6,7,D}2,3,4,5,1,
34)有以下程序a。
主()
{int a[]={1,2,3,4,5,6,7,8,9,0},* p;
for(p = a;p}
程序运行后的输出结果是
A)1,2,3,4,5,6,7,8,9,0,B)2,3,4,5,6,7,8,9,10,1,
C)0,1,2,3,4,5,6,7,8,9,D)1,1,1,1,1,1,1,1,1,
35)有以下程序d。
#定义第3页
void F(int x){ return(P * x * x);}
主()
{printf("%d\n ",F(3+5));}
程序运行后的输出结果是
A)192 B)29 C)25 D)编译错误。
36)有以下程序c。
主()
{ int c = 35printf("%d\n ",c & ampc);}
程序运行后的输出结果是
A)0 B)70 C)35 D)1
37)下列说法中正确的是d。
a)预处理命令行必须位于源文件的开头。
b)在源文件的一行中可以有多个预处理命令。
c)宏名必须用大写字母表示。
d)宏替换不占用程序的运行时间。
38)如果有下面的解释和定义C,
联合dt
{ int a;char b;双c;}数据;
下列说法中错误的是
A)A)数据的每个成员的起始地址是相同的。
b)变量数据占用内存的字节数等于成员c占用的字节数。
c)程序段:data . a = 5;printf("%f\n ",data . c);输出结果是5.000000。
d)数据可以用作函数的自变量。
39)在下面的语句或语句组中,能正确赋值字符串的是C。
a)char * sp;*sp= "对!";b)char s[10];s= "对!";
c)char s[10];*s= "对!";D)char *sp="right!";
40)提供以下指令c。
typedef结构ST
{龙a;int b;char c[2];}新;
以下描述中正确的是
a)上面的描述形式是非法的B)ST是结构类型。
C)NEW是一个结构类型D)NEW是一个结构变量。
41)有如下程序b。
主()
{int a=1,b;
for(b = 1;b & lt=10;b++)
{ if(a & gt;=8)破;
if(a % 2 = = 1){ a+= 5;继续;}
a-= 3;
}
printf("%d\n ",b);
}
程序运行后的输出结果是
A) 3 B) 4 C)5 D) 6
42)有以下程序a。
主()
{char s[]="159 ",* p;
p = s;
printf("%c ",* p++);printf("%c ",* p++);
}
程序运行后的输出结果是
a)15 B)16 C)12D)59
43)具有以下功能d
乐趣(char *a,char *b)
{while((*a!= ' \ 0 ')& amp;& amp(*b!= ' \ 0 ')& amp;& amp(*a==*b))
{ a++;b++;}
return(* a-* b);
}
该功能的作用是
a)计算由a和b指示的字符串长度之间的差
B)将B表示的字符串连接到a表示的字符串。
c)将B表示的字符串连接到a表示的字符串。
d)比较由a和b表示的字符串的大小
44)有以下程序b。
主()
{int num[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},I,j;
for(I = 0;我& lt4;i++)
{ for(j = 0;j & lt= I;j++)printf("L ",' ');
for(j = _ _ _ _ _);j & lt4;j++)printf("M ",num[I][j]);
printf(" \ n ");
}
}
要输出数组的右上角三角形,如下所示
1 2 3 4
6 7 8
11 12
16
程序下划线中应该填写的是
A)i-1 B)i C)i+1 D)4-i
45)有以下程序d。
point(char * p){ p+= 3;}
主()
{char b[4]={'a ',' b ',' c ',' d'},* p = b;
点(p);printf("%c\n ",* p);
}
程序运行后的输出结果是
a)a)B)B)C)C)D)D)
46)如果程序中有如下解释和定义语句A。
char fun(char *);
主()
{
char *s="one ",a[5]={0},(*f1)()=fun,ch;
......
}
以下选项中fun函数的正确调用语句是
a)(* f 1)(a);b)* f 1(* s);c)乐趣(& ampa);d)ch = * f 1(s);
47)有以下结构描述和变量定义,如图。
指针p、q和r分别指向这个链表中的三个连续节点。
结构节点
{int数据;结构节点* next}*p、*q、* r;
现在需要从链表中删除Q指向的节点,保持链表的连续性。
下列不能完成指定操作的语句是d。
A)P->next = q-& gt;接下来;B)p->next = p-& gt;下一个-& gt;接下来;
c)p->next = r;d)p = q-& gt;接下来;
48)下列对结构型变量td的定义中,C是错误的。
A)typedef结构aa B)结构aa C)结构D)结构
{ int n;{ int n;{ int n;{ int n;
浮动m;浮动m;浮动m;浮动m;
} AA} td} aa} td
AA td结构aa td结构aa td
49)以下与函数fseek(fp,0L,SEEK_SET)相同的函数是d。
a)feof(FP)B)ftell(FP)C)fgetc(FP)D)rewind(FP)
50)有以下程序b。
#包括
void WriteStr(char *fn,char *str)
{ FILE * fp
fp=fopen(fn," w ");fputs(str,FP);fclose(FP);
}
主()
{
WriteStr("t1.dat "," start ");
WriteStr("t1.dat "," end ");
}
程序运行后,文件t1.dat中的内容为
a)开始B)结束C)开始结束D)结束
1.二叉树有18个度为2的节点,所以二叉树有_ _ _ _ _个叶节点。
答案:19
2.在面向对象的方法中,一个类的实例叫做_ _ _ _。
答案:反对
3.程序中诊断和纠正错误的工作通常被称为_ _ _ _ _。
答:调试
4.在关系数据库中,数据表示为二维表,每个二维表称为_ _ _ _ _。
回答:关系。
5.问题解决方案的正确完整描述叫做_ _ _
答案:算法
6.如果在操作过程中从键盘输入以下程序:10 20 30输出结果是_ _ _ _ _
#包括
主()
{
int i=0,j=0,k = 0;
scanf("%d%*d%d ",& amp我& ampj & amp;k);printf("%d%d%d\n ",I,j,k);
}
答案:10 30 0
7.以下程序的输出是_ _ _
#定义S(x) 4*x*x+1
主()
{
int i=6,j = 8;
printf("%d\n ",S(I+j));
}
答案:81
*8.以下程序的输出是_ _ _
主()
{int a=3,b=4,c=5,t = 99
if(b if(a printf("%d%d%d\n ",a,b,c);
}
答案:4399
9.以下程序的输出是_ _ _
主()
{
int a,b,c;
a = 10;b = 20c =(a % b & lt;1)| |(a/b & gt;1);
printf("%d %d %d\n ",a,b,c);
}
答案:10 20 0
10.以下程序的输出是_ _ _
主()
{char c1,C2;
for(c1='0 ',c2 = ' 9c 1 printf(" \ n ");
)
答案:0918273645
11.已知字符A的ASCII码值为65。如果从键盘输入以下程序:B33。然后
输出结果是_ _ _
#包括
主()
{char a,b;
a = getchar();scanf("%d ",& ampb);
A = A-' A '+' 0 ';b = b * 2;
printf("%c %c\n ",a,b);
}
答案:1 B
12.在下面的程序中,fun函数的作用是求一个3行4列的二维数组中每个元素的最大值。请填空。
void fun(int,int,int(*)[4],int *);
主()
{int a[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],I;
fun(3,4,a,b);
for(I = 0;我& lt3;i++)printf("M ",b[I]);
printf(" \ n ");
}
void fun(int m,int n,int ar[][4],int *bar)
{
int i,j,x;
for(I = 0;I { x = ar[I][0];
for(j = 0;j _ _ _ _ _ _ _ _ = x;
)
}
)
答案:bar[i]
13.下列程序的输出是_ _ _ _ _ _
void swap(int x,int y)
{ int t;
t = x;x = y;y = t;printf("%d %d ",x,y);
}
主()
{ int a=3,b = 4;
互换(a,b);printf("%d %d\n ",a,b);
}
答案:4 3 3 4
14.以下程序的输出是_ _ _
#包括
void fun(char *s,int p,int k)
{ int I;
for(I = p;我)
主()
{ char s[]= " abcdefg ";
fun(s,3,strlen(s));卖出期权;
}
答案:abcfg
17.下列程序的输出是_ _ _ _ _ _
结构节点
{ int k;
结构节点*链接;
};
主()
{结构节点m[5],*p=m,* q = m+4;
int I = 0;
而(p!=q)
{ p->;k = ++ I;p++;
q->;k = i++;q-;
}
q->;k = I;
for(I = 0;我& lt5;i++)printf("%d ",m[i]。k);
printf(" \ n ");
}
答案:13431
18.下面程序中慧文的作用是检查一个字符串是否是回文。当字符串是回文时,
该函数返回字符串:yes!否则,函数返回字符串:no!,并在主函数中输出。所谓的回文是
正向和反向拼写是相同的,例如:adgda。请填空。
#包括
char *汇文(char *str)
{char *p1,* p2int i,t = 0;
p 1 = str;p2 = _ _ _ _ _ _
for(I = 0;我& lt= strlen(str)/2;i++)
if(*p1++!= * p2-){ t = 1;打破;}
if(_ _ _ _ _ _ _)return(" yes!");
else返回(“不!”);
}
主()
{ char str[50];
printf(" Input:");scanf("%s ",str);
printf(" % s \ n " ,_ _ _ _ _ _);
}
答案:18)STR+(strlen(STR)-1)
19) !t
20)汇文(字符串)