C语言二级复习题及其答案.docx
- 文档编号:23179969
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:95
- 大小:52.23KB
C语言二级复习题及其答案.docx
《C语言二级复习题及其答案.docx》由会员分享,可在线阅读,更多相关《C语言二级复习题及其答案.docx(95页珍藏版)》请在冰豆网上搜索。
C语言二级复习题及其答案
二级C笔试考前练习习题
(1)
1.若变量已正确定义并赋值,对库函数错误调用的是C
A)k=scanf("%d%d",&i,&j);
B)printf("\\%d\\\n",k);
C)getchar(ch);
D)putchar(ch);
2.要求定义一个返回值为double类型的名为mysum的函数,其功能为求两个double类型数的和值,正确的定义是:
D
A)mysum(doublea,b)
{return(a+b);}
B)mysum(doublea,doubleb)
{returna+b;}
C)doublemysum(inta,intb);
{returna+b;}
D)doublemysum(doublea,doubleb)
{retrun(a+b);}
3.以下是对fun函数的正确调用:
fun(a+b,fun(a+b,(a,b)));
则fun函数有__2___个形参。
4.若有以下函数:
intfun(intx)
{return(1+x*x);}
则语句printf("%d\n",fun(fun(fun(fun
(1)))));的输出结果是677
5.下面程序的输出是___A____。
chars[]="ABCD";
voidmain()
{ char*p;
for(p=s;*p;p++)printf("%s\n",p);
}
A)ABCD B)A C)D D)ABCD
BCD B C ABC
CD CB AB
DD A A
6.以下程序的输出结果是B
#include
voidmain()
{inta,b,d=241;
a=d/100%9
b=(-1)&&(+1);
printf("%d,%d",a,d);
}
A)6,1 B)2,1 C)6,0 D)2,0
7.关于if后一对圆括号中的表达式,以下叙述中正确的是D
A)只能用逻辑表达式
B)只能用关系表达式
C)既可用逻辑表达式也可用关系表达式
D)可用任意表达式
8.有以下程序
#include
voidmain()
{inta,b;
for(a=1,b=1;a<=100;a++)
{if(b>=20)break;
if(b%3==1)
{b+=3;
continue;}
b-=5;
}
printf("%d\n",a);
}
程序运行后的输出结果是8
A)7 B)8 C)9 D)10
9.有以下程序
intf(intn)
{if(n==1)return1;
elsereturnf(n-1)+1;
}
voidmain()
{inti,j=0;
for(i=1;i<5;i++)j+=f(i);
printf("%d\n",j);
}
程序运行后的输出结果是B
A)15 B)10 C)6 D)3
10.有以下程序
intb=2;
intfunc(int*a)
{b+=*a;return(b);}
voidmain()
{inta=2,res=2;
res+=func(&a);
printf("%d\n",res);
}
程序运行后的输出结果是B
A)4 B)6 C)8 D)10
二级C笔试考前练习习题
(2)
1.若有以下定义:
floatx;inta,b,c=2;,则正确的switch语句是C
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");
case1+2:
printf("**\n");
}
D)
switch(a+b)
{case1:
printf("*\n");
casec:
printf("**\n");
}
2.执行下面程序片段的结果是B
intx=123;
do
{printf("%d\n",x--);}while(!
x);
A)打印出321 B)打印出123
C)不打印任何内容 D)陷入死循环
3.下列与表达式“b=(a<0?
-1:
a>0?
1:
0)”的功能等价选项是B
A)b=0;
if(a>=0)
if(a>0)b=1;
elseb=-1;
B)if(a>0)b=1;
elseif(a<0)b=-1;
elseb=0
C)if(a)
if(a<0)b=-1;
elseif(a>0)b=1;
elseb=0;
D)b=-1;
if(a)
if(a>0)b=1;
elseif(a==0)b=0;
elseb=-1;
4.若有以下定义:
chara;intb;floatc;doubled;则表达式“a*b+d-c”值的类型为D
A)float B)int C)char D)double
5.有以下程序
floatfun(intx,inty)
{return(x+y);
}
voidmain()
{inta=2,b=5,c=8;
printf("%3.0f\n",fun((int)fun(a+c,b),a-c));
}
程序运行后的输出结果是B
A)编译出错 B)9 C)21 D)9.0
6.若已定义:
inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;
其中0≤i≤9,则对a数组元素不正确的引用是D
A)a[p-a] B)*(&a[i]) C)p[i] D)a[10]
7.以下叙述中正确的是()
A)全局变量的作用域一定比局部变量的作用域大
B)静态(static)类型变量的生存期贯穿于整个程序的运行期间
C)函数的形参都属于全局变量
D)未在定义语句中赋初值的auto变量和static变量的初值都是随机值
8.若有如下程序:
voidmain()
{chara[][9]={"china","Japan","USA","France"};
printf("\’%s\’\n",a[2]);
}
则程序运行后的输出结果是B
A)’Japan’ B)’USA’ C)USA D)’inaJapanUSAFrance’
9.有以下程序:
voidmain()
{intx=0xFFFF;printf("%d\n",x--);}
执行后的输出结果是C
A)32767 B)-1 C)65535 D)-32768
10.以下程序的输出结果是A
#include
#include
voidmain()
{staticcharstr[12]={‘s’,’t’,’r’,’i’,’n’,’g’};
printf("%d\n",strlen(str));
}
A)6 B)7 C)11 D)12
二级C笔试考前练习习题(3)
1.若变量c为char类型,能正确判断出c为小写字母的C语言表达式是D
A)’a’<=c<=‘z’ B)(c>=‘a’)||(c<=‘z’)
C)(‘a’=C) D)(c>=‘a’)&&(c<=‘z’)
2.下面程序的输出结果是A
voidmain()
{intx=2,y=0,z;
x+=3+2;printf("%d",x);
x*=y=z=4;printf("%d",x);
}
A)728 B)无法计算 C)7,4 D)8,4
3.有如下程序
voidmain()
{intx=1,a=0,b=0;
switch(x)
{ case0:
b++;
case1:
a++;
case2:
a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
程序运行后的输出结果是A
A)a=2,b=1 B)a=1,b=1 C)a=1,b=0 D)a=2,b=2
4.以下选项中,正确的if-else语句是B
A)if(x!
=0)
printf("%d",x)
else
printf("%d",-x);
B)if(x!
=0)
{x=x+y;printf("%d",x);}
else
printf("%d",-x);
C)if(x!
=0)
x=x+y;printf("%d",x);
else
printf("%d",-x);
D)if(x!
=0)
{x=x+y;printf("%d",x)};
else
printf("%d",-x);
5.有以下程序段
intn=0,p;
do{scanf("%d",&p);n++;}while(p!
=12345&&n<3);
此处do-while循环的结束条件是D
A)p的值不等于12345并且n的值小于3
B)p的值等于12345并且n的值大于等于3
C)p的值不等于12345或者n的值小于3
D)p的值等于12345或者n的值大于等于3
6.若有如下程序段:
voidmain()
{intn=0;
while(printf("*"))
{n++;
if(n<3)break;}
}
则下列描述正确的是B
A)其中循环控制表达式与0等价
B)其中循环控制表达式与’0’等价
C)其中循环控制表达式是不合法的
D)以上说法都不对
7.C语言中main函数参数的非法表示形式是A
A)main(char*argv[],intargc) B)main(inta,char**b)
C)main(inty,char*x[]) D)main(intargv,char*argc[])
8.设有如下枚举类型定义:
enumlanguage{Basic=3,Assembly,Ada=100,COBOL,Fortran};
枚举类型Fortran的值为C
A)4 B)7 C)102 D)103
9.阅读下述程序段:
y=-1;
if(x!
=0)
if(x>0)
y=1;
else
y=0;
该程序段所描述的数学关系是C
A)y=-1(x<0)
0(x=0)
1(x>0)
B)y=1(x<0)
0(x=0)
-1(x>0)
C)y=0(x<0)
-1(x=0)
1(x>0)
D)y=-1(x<0)
1(x=0)
0(x>0)
10.设有数组定义:
chararray[]="China";字符数组array所占的空间为C
A)4个字节 B)5个字节 C)6个字节 D)7个字节
二级C笔试考前练习习题(4)
1.下面叙述正确的是C
A)define和auto都不能定义为用户标识符
B)可以把define和auto定义为用户标识符
C)可以把define定义为用户标识符,但auto是C语言的关键字
D)可以把auto定义为用户标识符,但define是C语言的关键字
2.以下的for循环C
for(x=0,y=0;(y!
=123)&&(x<4);x++);
A)是无限循环 B)循环次数不定
C)执行4次 D)执行3次
3.下述对C语言字符数组的描述中错误的是()
A)字符数组可以存放字符串
B)字符数组中的字符串可以整体输入、输出
C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值
D)不可以用关系运算符对字符数组中的字符串进行比较
4.设有定义:
inta,*p=&a,**pp=&p;,则与a=100;等价的语句为B
A)**p=100; B)**pp=100; C)&*p=100; D)*pp=100;
5.有以下程序
intx=3;
do{printf("%d",x-=2);}while(!
(--x));
程序运行后的输出结果是C
A)1 B)30 C)1-2 D)死循环
6.执行下面程序的正确结果是D
#include
voidmain()
{floata=1.9;
switch(a)
{case0:
printf("0000");
case1:
printf("1111");
case2:
printf("3333");
}
printf("%f",a);
}
A)1.900000 B)111133331.900000
C)33331.900000 D)编译出错
7.对下述程序,正确的判断是A
voidmain()
{inta,b;
scanf("%d,%d",&a,&b);
if(a>b)a=b;b=a;
elsea++;b++;
printf("%d,%d",a,b);}
A)有语法错误不能通过编译 B)若输入4,5则输出5,6
C)若输入5,4则输出4,5 D)若输入5,4则输出5,5
8.若有如下程序:
sub(intn)
{intt;
if(n==1)returnt=5;
elset=sub(n-1)+3;
returnt;}
voidmain()
{printf("%d\n",sub(5));}
则程序运行后的输出结果是A
A)17 B)18 C)19 D)20
9.设有如下程序:
#include
#include"string.h"
voidmain()
{staticchars1[20],s2[20];
scanf("%s",s1);scanf("%s",s2);
if(strcmp(s1,s2))printf("@");
elseprintf("$");
printf("%d\n",strlen(strcat(s1,s2)));
}
如果从键盘上输入name<回车>name1<回车>,则程序运行后的输出结果是D
A)$8 B)@10 C)$9 D)@9
10.以下程序
#include
#include
voidmain()
{chara1[80],a2[80],*s1=a1,*s2=a2;
gets(s1);gets(s2);
if(!
strcmp(s1,s2))printf("*");
elseprintf("#");
printf("%s\n",s2);
printf("%d\n",strlen(strcat(s1,s2)));
}
如果从键盘上输入:
book<回车>
book<空格><回车>
则输出结果是B
A)*8 B)#9 C)#6 D)*9
二级C笔试考前练习习题(5)
1.以下程序运行后,输出结果是D
#include
ss(char*s)
{char*p=s;
while(*p)p++;
return(p-s);
}
voidmain()
{char*a="abded";
inti;
i=ss(a);
printf("%d\n",i);
}
A)8 B)7 C)6 D)5
2.若有如下程序:
intsub()
{staticintn=1;
intx=1;
x*=n;n++;
returnx;}
voidmain()
{intn,t=1;
for(n=1;n<6;n++)t*=sub();
printf("%d\n",t);
}
则程序运行后的输出结果是C
A)15 B)60 C)120 D)720
3.在C语言中,函数的隐含存储类别是C
A)static B)auto C)extern D)register
4.有以下程序:
intf1(doublea)
{returna*a;}
intf2(doublex,doubley)
{doublea,b;
a=f1(x);
b=f1(y);
returna+b;
}
voidmain()
{doublew;
w=f2(1.1,2.0);
…
}
变量w中的值是C
A)5.21 B)5 C)5.0 D)0.0
5.若有以下定义语句:
doublea[5];inti=0;
不能正确给a数组元素输入数据的语句是A
A)scanf("%lf%lf%lf%lf%lf",a);
B)for(i=0;i<=5;i++)scanf("%lf",a+i);
C)while(i<5)scanf("%lf",&a[i++]);
D)while(i<5)scanf("%lf",a+i);
6.以下程序的输出结果是A
voidmain()
{charss[16]="test\0\n\"";
printf("%d,%d\n",strlen(ss),sizeof(ss));
}
A)4,16 B)7,7 C)16,16 D)4,7
7.以下说法正确的是B
A)宏定义是C语句,所以要在行末加分号
B)可以使用#undef命令来终止宏定义的作用域
C)在进行宏定义时,宏定义不能层层置换
D)对程序中用双引号括起来的字符串内的字符,与宏名相同的要进行置换
8.以下程序的输出结果是D
#include
voidmain()
{structstru{inta,b;
charc[6];
};
printf("%d\n",sizeof(stru));
}
A)6 B)8 C)10 D)14
9.若有如下定义:
ints[3];
则下面表达式中不能代表数组元素s[1]的地址的是D
A)&s[1] B)&s[0]+1 C)s+1 D)s++
10.有以下程序
voidmain()
{intaa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};
inti,s=0;
for(i=0;i<4;i++)s+=aa[i][1];
printf("%d\n",s);
}
程序运行后的输出结果是B
A)11 B)19 C)13 D)20
二级C笔试考前练习习题(6)
1.若以下对fun函数的调用是正确的:
x=fun(fun(a,b,c),(a+b,a+c),a+b+c);
则fun函数的形参个数为A
A)3 B)4 C)5 D)6
2.以下程序调用findmax函数返回数组中的最大值
findmax(int*a,intn)
{int*p,*s;
for(p=a,s=a;p-a if()s=p; return(*s); } voidmain() {intx[5]={12,21,13,6,18}; printf("%d\n",findmax(x,5)); } 在()处应填入的是B A)p>s B)*p>*s C)a[p]>a[s] D)p-a>p-s 3.若指针p已正确定义,要使p指向两个连续的整型动态存储单元,则正确语句是C A)p=2*(int*)malloc(sizeof(int)); B)p=(int*)calloc(2*sizeof(int)); C)p=(int*)malloc(2*sizeof(int)); D)p=2*(int*)calloc(sizeof(int)); 4.下列程序的输出结果是D include #include voidmain() {charstr1[50]="xyz",str2[50]="abcd",str3[50]="ABCD",*p1=str2,*p2=str3; strcpy(str1+2,strcat(p1+2,p2+1)); printf("%s",str1);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 二级 复习题 及其 答案