二级C语言笔试真题及答案已再修改.docx
- 文档编号:26992309
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:15
- 大小:20.23KB
二级C语言笔试真题及答案已再修改.docx
《二级C语言笔试真题及答案已再修改.docx》由会员分享,可在线阅读,更多相关《二级C语言笔试真题及答案已再修改.docx(15页珍藏版)》请在冰豆网上搜索。
二级C语言笔试真题及答案已再修改
2006年4月二级C语言笔试真题及答案
1、选择题,(1-40)每题1分,(41-50)每题2分,共60分)
下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
11)以下不合法的用户标识符是
A)j2_KEY
B)Double
C)4d
D)_8_
12)以下不合法的数值常量是
A)011
B)lel
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)ntx[][3]={{1,2,3},{4,5,6}};
D)intx[2][3]={1,2,3,4,5,6};
17)若要求从键盘读入含有空格字符的字符串,应使用函数
A)getc()
B)gets()
C)getchar()
D)scanf()
删18)下四个程序中,完全正确的是
A)#include B)#include
main(); main()
{/*programming*/ {/*/programming/*/
printf(“programming!
\n”); }printf(“programming!
\n”);}
C)#include D)include
main() main()
{/*/*programming*/*/ {/*programming*/
printf(“programming!
\n”);} printf(“programming!
\n”);}
19)若有定义:
floatx=1.5;inta=1,b=3,c=2;则正确的switch语句是
A)switch(x) B)switch((int)x);
{case1.0:
printf(“*\n”);{case1:
printf(“*\n”);
case2.0:
printf(“**\n”);}case2:
printf(“**\n”);}
C)switch(a+b) D)switch(a+b)
{case1:
printf(“*\n”); {case1:
printf(*\n”);
case2+1:
printf(“**\n”);} casec:
printf(“**\n”);}
20)若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值,以下选项中错误的程序是
A)main() B)floatfun(inta,intb){……}
{……x=fun(2,10);……} main()
floatfun(inta,intb){……} {……x=fun(i,j);……}
C)floatfun(int,int); D)main()
main() {floatfun(inti,intj);
{……x=fun(2,10);……} ……x=fun(i,j);……}
floatfun(inta,intb){……} 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=getchar())=='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分别指向一个链表中连续的三个结点。
structnode
{
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
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=1x
D)while构成无限循环
31)有以下程序
main()
{inta=0,b=0,c=0,d=0;
if(a=1)b=1;c=2;
elsed=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,0D)编译有错
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(duoblea){returna*=a;}
intfun2(dpublex,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=0;i<7;i++)
if(p[i][0]=='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++;}//(*q)++为q所指的变量值加1
}//‘h’+1==h
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);printf(“%d\n”,x);
}
程序执行时,给变量x输入10,程序的输出结果是
A)55
B)54
C)65
D)45
40)有以下程序
intfun(intx[],intn)
{staticintsum=0,i;
for(i=0;i returnsum; } 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[0],s.ch[1]); } 在16位编译系统上,程序执行后的输出结果是 A)21,43 B)43,21 C)43,00 D)21,00 删除42)有以下程序 main() {char*p[]={“3697”,”2584”}; 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 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语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中 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)str与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 D)C语言的预处理不能实现宏定义和条件编译的功能 删50)以下叙述中错误的是 A)可以通过typedef增加新的类型 B)可以用typedef将已存在的类型用一个新的名字来代表 C)用typedef定义新的类型名后,原有类型名仍有效 D)用typedef可以为各种类型起别名,但不能为变量起别名
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 语言 笔试 答案 修改