二级C语言真题.docx
《二级C语言真题.docx》由会员分享,可在线阅读,更多相关《二级C语言真题.docx(34页珍藏版)》请在冰豆网上搜索。
二级C语言真题
二级C语言真题2006年04月
一、选择题
下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。
1、下列选项中小属于结构化程序设计方法的是______。
A)自顶向下 B)逐步求精
C)模块化 D)可复用
2、两个或两个以上的模块之间关联的紧密程度称为______。
A)耦合度 B)内聚度
C)复杂度 D)数据传输特性
3、下列叙述中正确的是______。
A)软件测试应该由程序开发者来完成
B)程序经调试后—般不需要再测试
C)软件维护只包括对程序代码的维护
D)以上三种说法都不对
4、按照“后进先出”原则组织数据的数据结构是______。
A)队列 B)栈
C)双向链表 D)二叉树
5、下列描述中正确的是______。
A)线性链表是线性表的链式存储结构
B)栈与队列是非线性结构
C)双向链表是非线性结构
D)只有根结点的二叉树是线性结构
6、对如下二叉树
进行后序遍历的结果为______。
A)ABCDEF B)DBEAFC
C)ABDECF D)DEBFCA
7、在深度为7的满二叉树中,叶子结点的个数为______。
A)32 B)31
C)64 D)63
8、“商品”与“顾客”两个实体集之间的联系一般是______。
A)—对— B)—对多
C)多对一 D)多对多
9、在E-R图中,用来表示实体的图形是______。
A)矩形 B)椭圆形
C)菱形 D)三角形
10、数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是______。
A)DB包含DBS和DBMS B)DBMS包含DB和DBS
C)DBS包含DB和DBMS D)没有任何关系
11、以下不合法的用户标识符是______。
A)j2KEY B)Double C)4d D)_8_
12、以下不合法的数值常量是______。
A)011 B)le1 C)8.0E0.5 D)0xabcd
13、以下不合法的字符常量是______。
A)'\018' B)'\''' C)'\\' D)'\xcc'
14、表达式3.6-5/2+1.2+5%2的值是______。
A)4.3 B)4.8 C)3.3 D)3.8
15、以下能正确定义字符串的语句是______。
A)charstr[]={'\064'}; B)charstr="\x43";
C)charstr="; D)charstr[]="\0";
16、以下数组定义中错误的是______。
A)intx[][3]={0}; B)intx[2][3]={{1,2},{3,4},{5,6}};
C)intx[][3]={{1,2,3},{4,5,6}}; D)intx[][3]={1,2,3,4,5,6};
17、若要求从键盘读入含有空格字符的字符串,应该使用函数______。
A)getc() B)gets() C)getchar() D)scanf()
18、以下四个程序中,完全正确的是______。
A)#include<stdio.h>
main();
{/*programming*/
printf("programming!
\n");}
B)#include<stdio.h>
main()
{/*/programming/*/
printf("programming!
\n");}
C)#include<stdio.h>
main()
{/*programming*/
printf("programming!
\n");}
D)include<stdio.h>
main()
{/*/*programming*/*/
printf("programming!
\n");}
19、若有定义:
floatx=1.5;inta=1,b=3,c=2;则正确的switch语句是______。
A)switch(x)
{case1.0:
printf("*\n");
case2.0:
printf("**\n");}
B)switch((int)x);
{case1:
printf("*\n");
case2:
printf("**\n");}
C)switch(a+b)
{case1:
printf("*\n");
case2+1:
printf("**\n");}
D)switch(a+b))
{case1:
pfintf("*\n")};
casec:
printf("**\n"));}
20、若各选项中所有变量已正确定义,函数fun中通过return语句返回一个函数值,以下选项中错误的程序是______。
A)mam()
{……x=fun(2,10);……}
fioatfun(inta,intb){……}
B)floatfun(inta,intb){……}
main()
{……x=fun(i,j);……}
C)floatfun(intint);
main()
{……x=fun(2,10);……}
floatfun(inta,intb){……}
D)main()
{floatfun(inti,intj);
……x=fun(i,j);……}
floatfun(inta,intb){……}
21、在以下给出的表达式中,与while(E)中的(E)不等价的表达式是______。
A)(!
E=0) B)(E>0||E<0) C)(E=0) D)(E!
=0)
22、要求通过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=getchan())='N') printf("%c",ch);
23、已定义以下函数
intfun(int*p)
{return*p;}
fun函数返回值是______。
A)不确定的值 B)—个整数
C)形参p中存放的值 D)形参p的地址值
24、若有说明语句:
double*p,a;则能通过scanf语句正确给输入项读入数据的程序段是______。
A)*p=&a;scanf("%lf',p); B)*p=&a;scanf("%f",P);
C)P=&a;scanf("%lf',*p); D)p=&a;scanf("%lf",p);
25、现有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向—个链表中连续的三个结点。
streetnode
{chardata;
structnode*next;
}*p,*q,*r;
现要将q和r所指结点交换前后位置,同时要保持链表的连续,以下不能完成此操作的语句是______。
A)q->next=r->next;p->next=r,r->next=q;
B)p->next=r,q->next=r->next;r->next=q;
C)q->next=r->next;r->next=q;p->next=r,
D)r->next=q;P->next=r;q->next=r->next;
26、有以下程序段
structst
{intx;int*y;}*pt;
inta[]={1,2},b[]={3,4};
structstc[2]={10,a,20,b};
pt=c;
以下选项中表达式的值为11的是______。
A)*pt->y B)pt->x C)++pt->x D)(pt++)->x
27、设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为______。
A)EOF B)非0值 C)0 D)NULL
28、设有以下语句
inta=1,b=2,c;
c=a^(b<<2);
执行后,c的值为______。
A)6 B)7 C)8 D)9
29、有以下程序
#include<stdio.h>
main()
{charc1,c2,c3,c4,c5,c6;
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
c5=getchar(); c6=getchar();
putchar(c1); putchar(c2);
printf("%c%c\n",c5,c6);
}
程序运行后,若从键盘输入(从第1列开始)
123<回车>
45678<回车>
则输山结果是______。
A)1267 B)1256 C)1278 D)1245
30、有以下程序
main()
{inty=10;
while(y-);printf("y=%d\n",y);
}
程序执行后的输出结果是______。
A)y=0 B)y=1 C)y=1 D)while构成无限循环
31、有以下程序
main()
{inta=0,b=0,c=0,d=0;
if(a=1)b=1;c=2;
else d=3;
printf("%d,%d,%d,%d\n",a,b,c,d);
}
A)0,1,2,0 B)0,0,0,3 C)1,1,2,0 D)编译有错
32、有以下程序
main()
{inti,j,x=0;
for(i=0;i<2;i++)
{x++;
for(j=0;j<=3;j++)
{if(j%2)continue;
x++;
}
x++;
}
printf("x=%d\n",x);
程序执行后的输出结果是______。
A)x=4 B)x=8 C)x=6 D)x=12
33、有以下程序
intfun1(doublea){returna*=a;}
intfun2(doublex,doubley)
{doublea=0,b=0;
a=fun1(x);b=fun1(y);return(int)(a+b);
}
main()
{doublew;w=fun2(1.1,2.0);......}
程序执行后变量W中的值是______。
A)5.21 B)5 C)5.0 D)0.0
34、有以下程序
main()
{inti,t[][3]={9,8,7,6,5,4,3,2,1};
for(i-0;i<3;i++)printf("%d",t[2-i][i]);
}
程序执行后的输出结果是______。
A)753 B)357 C)369 D)751
35、有以下程序
fun(charp[][10])
{intn=0,i;
for(i=O;i<7;i++)
if(p[i][O]=T)n++;
returnn;
}
main()
{charstr[][10]={"Mon","Tue","Wed","Thu","Fri","Sat","Sun"};
printf("%d\n",fun(str));
}
A)1 B)2 C)3 D)0
36、有以下程序
main()
{inti,s=0,t[]={1,2,3,4,5,6,7,8,9};
for(i=0;i<9;i+=2)s+=*(t+i);
printf("%d\n",s);
}
A)45 B)20 C)25 D)36
37、有以下程序
voidfun1(char*p)
{char*q;
q=p;
while(*q!
='\0')
{(*q)++;q++;}
}
main()
{chara[]={"Program"},*p;
p=&a[3];fun1(p);printf("%s\n",a);
}
程序执行后的输出结果是______。
A)Prohsbn B)Prphsbn C)Progsbn D)Program
38、有以下程序
voidswap(char*x,char*y)
{chart;
t=*x;*x=*y;*y=t;
}
main()
{char*s1="abc",*s2="123";
swap(s1,s2);printf("%s,%s\n",s1,s2);
}
程序执行后的输出结果是______。
A)123,abc B)abc,123 C)1bc,a23 D)321,cba
39、有以下程序
intfun(intn)
{if(n=1)return1;
else
return(n+fun(n-1));
}
main()
{intx;
scanf("%d",&x);x=fun(x);pfintf("%d\n",x);
}
执行程序时,给变量x输入10,程序的输出结果是______。
A)55 B)54 C)65 D)45
40、有以下程序
intfun(intx[],intn)
{staticintsum=0,i;
for(i=0;i<n;i++)sum+=x[i];
return sum;
}
main()
{inta[]={1,2,3,4,5},b[]={6,7,8,9},s=0;
s=fun(a,5)+fun(b,4);printf("%d\n",s);
}
程序执行后的输出结果是______。
A)45 B)50 C)60 D)55
41、有以下程序
main()
{union
{charch[2];
intd;
}s;
s.d=0x4321;
printf("%x,%x\n",s.ch[O],s.ch[1]);
}
在16位编译系统上,程序执行后的输出结果是______。
A)21,43 B)43,21 C)43,00 D)21,00
42、有以下程序
main()
{char*p[]={"3697","2548"};
inti,j; longnum=0;
for(i=0;i<2;i++)
{j=0;
while(p[i][j]!
='\0')
{if((p[i][j]-'0')%2)num=10*num+p[i][j]-'0';
j+=2;
}
}
printf("%d\n",num);
}
程序执行后的输出结果上______。
A)35 B)37 C)39 D)3975
43、执行以下程序后,test.txt文件的内容是(若文件能正常打开)______。
#include<stdio.h>
main()
{FILE*fp;
char*s1="Fortran",*s2="Basic";
if((fp=fopen("test.txt","wb"))=NULL)
{printf("Can'topentest.txtfile\n");exit
(1);}
fwrite(s1,7,1,fp); /*把从地址s1开始的7个字符写到fp所指文件中*/
fseek(fp,0L,SEEK_SET);/*文件位置指针移到文件开头*/
fwrite(s2,5,1,fp);
fclose(fp);
}
A)Basican B)BasicFortran C)Basic D)FortranBasic
44、以下叙述中错误的是______。
A)C语言源程序经编译后生成后缀为.obj的目标程序
B)C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件
C)用C语言编写的程序称为源程序,它以ASCⅡ代码形式存放在—个文本文件中
D)C言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
45、以下叙述中错误的是______。
A)算法正确的程序最终—定会结束
B)算法正确的程序可以有零个输出
C)算法正确的程序可以有零个输入
D)算法正确的程序对于相同的输入—定有个相同的结果
46、以下叙述中错误的是______。
A)C程序必须由—个或—个以上的函数组成
B)函数调用可以作为—个独立的语句存在
C)若函数有返回值,必须通过return语句返回
D)函数形参的值也可以传回给对应的实参
47、设有以下定义和语句
charstr[20]="Program",*p;
p=str;
则以下叙述中正确的是______。
A)*p与str[0]中的值相等
B)sb与p的类型完全相同
C)str数组长度和p所指向的字符串长度相等
D)数组str中存放的内容和指针变量p中存放的内容相同
48、以下叙述中错误的是______。
A)C程序中的#include和#define行均不是C语句
B)除逗号运算符外,赋值运算符的优先级最低
C)C程序中,j++;是赋值语句
D)C程序中,+、-、*、/、%号是算术运算符,司用于整型和实型数的运算
49、以下叙述中正确的是______。
A)预处理命令行必须位于C源程序的起始位置
B)在C语言中,预处理命令行都以"#"开头
C)每个C程序必须在开头包含预处理命令行:
#include<stdio.h>