广西区计算机等级二级C历年试题汇总.docx
《广西区计算机等级二级C历年试题汇总.docx》由会员分享,可在线阅读,更多相关《广西区计算机等级二级C历年试题汇总.docx(18页珍藏版)》请在冰豆网上搜索。
广西区计算机等级二级C历年试题汇总
广西区计算机等级二级C历年试题汇总
一.选择题
1、c语言规定:
在一个源程序中,main函数的位置A
A)必须在最开始B)必须在系统调用的库函数的后面
C)可以任意D)必须在最后
2、下面程序的运行结果是______。
main()
{structcmplx{intx;
inty;
}cnum[2]={1,3,2,7};
printf(”%d\n”,cnum[0].y/cnum[0].x *cnum[l].x); }
A)0 B)1 C)3 D)6
3、表达式18/4*2/8值的数据类型为_A____
A)int B)float C)double D)不确定
4、以下不正确的叙述是D 。
A)在c程序中,逗号运算符的优先级最低
B)在C程序中,APH和aph是两个不同的变量
c)若a和b类型相同,在执行了赋值表达式a=b后b中的值将放入a中,而b中的值不变。
D)当从键盘输入数据时,对于整型变量只能输入整型数值.对于实型变量只能输入实型数值。
5、以下程序的运行结果是______。
#include"stdio.h”
main()
{structdate
{intyear,month,day;
}today;
printf(“%d\n”,sizeof(structdate)); }
A)6 B)8 C)10 D)12
6、以下说法正确的是 。
A)输入项可以为一实型常量,如scanf("%f",3.5);
B)只有格式控制,没有输入项,也能进行正确输入,如scanf("a=%d,b=%d”);
C)当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf (“%4.2f",&f);
D)当输入数据时,必须指明变量的地址,如scanf(“%f",&f);
7、己知各变量的类型说明如下:
int i=8,k,a,b;
unsignedlong w=55;
double x=1.42,y=5.2;
则以下符合c语言语法的表达式是_____。
A)a+=a-=(b=4)*(a=3) B)a=a*3=2
C)x%(-3) D)y=float(i)
8、已知ch是字符型变量,下面不正确的赋值语句是______。
A)ch='a+b'; B) ch='\0'; C)ch='7'+'9'; D)ch=5+9
9、有输入语句:
scanf("a=%d,b=%d,c=%d",&a,&b,&c),为使变量a的值为1.b为3,c为2,从键盘输入数据的正确形式应当是______。
A)132<回车>B)1,3,2<回车>
C)a=lb=3c=2<回车>D)a=1,b=3,c=2<回车>
10、逻辑运算符两侧运算对象的数据类型_____。
A)只能是0或lB)只能是0或非0正数
c)只能是整型或字符型数据D)可以是任何类型的数据
11、一个c程序的执行是从 。
A)本程序的main函数开始,到main函数结束
B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结柬
C)本程序的main函数开始,到本程序文件的最后一个函数结束
D)本程序文件的第一个函数开始,到本程序main函数结束
12、以下程序的输出结果是________。
main()
{inta=100,x=l0,y=20,ok1=5,ok2=0;
if(x if(y!
=10)
if(!
ok1)
a=1;
else
if(ok2) a=10;
a=-1;
printf("%d\n",a);
}
A)1 B)0 C)-1 D)值不确定
13、以下正确的叙述是_____。
A)C语言允许main函数带形参,且形参个数和形参名均可由用户指定
B)C语言允许main函数带形参,形参名只能是argc和argv
C)当main函数带有形参时,传给形参的值只能从命令行中得到
D)若有说明:
main(intargc,char *argv),则形参argc的值必须大于1
14、阅读以下程序:
若假设第一个printf语句输出的是ffca,则第二个printf语句的输出是______。
main()
{inta[l0]={2,4,6,8,10,12,14,16,18,20},*p;
p=a;
printf(“%x\n”,p),
printf(“%x\n”,p+9),
A)ffdd B)ffdc C)ffde D)ffcd
15、以下程序中调用scanf函数给变量a输入数值的方法是错误的,其正确的解释是_____。
main()
{int*p,*q,a,b;
p=&a;
printf("inputa:
");
scanf("%d",*p);
……}
A)*p表示的是指针变量p的地址
B)*p表示的是变量a的值,而不是变量a的地址
c)*p表示的是指针变量p的值
D)*p只能用来说明p是—个指针变量
16、设有程序段intk=10;
while(k=0) k=k-1;
则下面描述中正确的是_______。
A)while循环执行10次 B)循环是无限循环
C)循环体语句一次也不执行 D)循环体语句执行
17、为了避免在嵌套的条件语句if—else中产生二义性,c语言规定:
else总是与_______配对。
A)缩排位置相同的if B)其之前最近的if
c)其之后最近的if D)同一行上的if
18、以下程序的运行结果是_____。
main()
{intm=5;
if(m++>5)printf("%d\n",m);
else printf("%d\n",m--);}
A)4 B)5 C)6 D)7
19、执行以下语句后b的值为_____。
inta=5,b=6,w=1,x=2,y=3,z=4;
(a=w>x)&&(b=y>z);
A)5 B)0 C)6 D)1
20、若有定义:
int a[5];则a数组中首元素的地址可以表示为_____。
A)&a B)a+l C)a D)&a[1]
21、以下程序段_____。
x=-1;
do
{x=x*x;}
while(!
x);
A)是死循环
B)循环执行二次
C)循环执行一次
D)有语法错误
22、若i为整型变量,则循环执行次数是_____。
for(i=2;i==0;) printf("%d",i--);
A)无限次 B)0次 C)1次 D)2次
23、以下有关宏替换的叙述不正确的是______。
A)宏替换不占用运行时间 B)宏名无类型
C)宏替换只是字符替换 D)宏名必须用大写字母表示
24、下面程序的运行结果是______。
#include
main()
{int y=10;
do{y--;}while(--y);
printf("%d\n",y--); }
A)-1 B)1 C)8 D)0
25、下列四组选项中,均不含c语言关键字的选项是______。
A)define B)getc C)include D)while
IF char scanf go
type printf case pow
26、下面程序的运行结果是____。
#include<stdio.h>
voiddelch(char *s)
{inti,j;
char *a;
a=s;
for(i=0,j=0;a[i]!
='\0';i++)
if(a[i]>='0'&&a[i]<='9') {s[j]=a[i];j++;}
s[j]='\0'; }
main()
{char*item="a34bc";
delch(item);
printf("\n%s",item); }
A)abc B)34 C)a34 D)a34bc
27、下列程序段不是死循环的是____。
A)inti=100;B)for(;;);
while
(1)
{i=i%100+1;
if(i>l00)break; }
C)intk=0;D)ints=365;
do{++k;} while(k>=0); while(s);--s;
28、根据定义和数据的插入方式,输入语句的正确形式为_____。
已有定义:
floatf1,f2;
数据的输入方式:
4.52
3.5
A)scanf("%f,%f",&f1,&f2);
B)scanf("%f%f",&f1,&f2);
C)scanf("%3.2f%2.1f",&f1,&f2);
D)scanf("%3.2f,%2.1f",&f1,&f2);
29、在C语言中,引用数组元素时,其数组下标的数据类型允许是_____。
A)整型常量 B)整型表达式
C)整型常量或整型表达式 D)任何类型的表达式
30、下面程序的运行结果是
#include
main()
{int num=0;
while(num<=2)
{num++;
printf("%d\n",num);} }
A)1 B)1 C)1 D)1
2 2 2
3 3
4
31、若有如下语句:
intx=3;
do{printf("%d\n",x-=2);}while(!
(--x));则上面程序段_____。
A)输出的是1 B)输出的是l和-2 C)输出的是3和0 D)是死循环
32、以下能对一维数组a进行正确初始化的语句是______。
A)inta[l0]=(0,0,0,0,0); B) inta[l0]={};
C)inta[]={0}; D) inta[10]={10*1
33、以下不正确的定义语句是_____。
A)doublex[5]={2.0,4.0,6.0,8.0,10.0};B)int y[5]={0,1,3,5,7,9};
C)char c1[]=('1','2','3'',4','5');D)char c2[]={'\x10','\xa','\x8'};
34、下面程序______(每行程序前面的数字表示行号)
1 main()
2 {
3 floata[0]={0.0};
4 inti;
5 for(i=0;i<3;i++)scanf("%d",&a[i]);
6 for(i=1;i<10;i++)a[0]=a[0]+a[i];
7 printf("%f\n",a[0]; }
A)没有错误
B)第3行有错误
C)第5行有错误
D)第7行有错误
35、下面程序段的运行结果是____。
charc[5]={'a','b','\0','c','\0'};
printf("%s",c);}
A)'a''b' B)ab C)abc D)abc
36、下面四个选项中,均是合法的用户标识符的选项是______。
A)A B)float C)b_a D)_123
P_O 1ao goto temp
do _A int INT
37、以下正确的函数形式是____。
A)doublefun(intx,inty)
{z=x+y,returnz;)
B)fun(intx,y)
{intz;
returnz;}
C)fun(x,y)
{intx,y; doublez;}
z=x+y;returnz;}
D)doublefun(intx,inty)
{doublez;
z=x+y;returnz;}
38、若运行以下程序时,从键盘输入3.6 2.4(表示回车),则下面程序的运行结果是_______。
#include<math.h>
#include<stdio.h>
main()
{floatx,y,z;
scanf("%f%f",&x,&y);
z=x/y;
while
(1)
{if(fabs(z)>1.0){x=y;y=z;z=x/y};
elsebreak; }
printf('%f\n",y); }
A)1.500000 B)1.600000 C)2.000000 D)2.400000
39、若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为____。
(假设a[0][0]位于数组的第一个位置上。
)
A)i*m+j B)j*m+i C)i*m+j-1 D)i*m+j+1
40、已知intx=10,y=20,z=30;以下语句执行后x,y,z的值是
if(x>y)
z=x;x=y;y=z;
A)x=10,y=20,z=30B)x=20,y=30,z=30
C)x=20,y=30,z=10D)x=20,y=30,z=20
41、以下叙述不正确的是 。
A)一个c源程序可由一个或多个函数组成
B)一个c源程序必须包含一个main函数
C)c程序的基本组成单位是函数
D)在c程序中,注释说明只能位于一条语句的后面
42、若有定义:
int *p[4];则标识符p_____。
A)是一个指向整型变量的指针B)是一个指针数组名
C)是一个指针,它指向一个含有四个整型元素的一维数组D)说明不合法
43、以下关于运算符优先顺序的描述中正确的是——。
A)关系运算符<算术运算符<赋值运算符<逻辑与运算符
B)逻辑与运算符<关系运算符<算术运算符<赋值运算符
C)赋值运算符<逻辑与运算符<关系运算符<算术运算符
D)算术运算符<关系运算符<赋值运算符<逻辑与运算符
44、若有说明:
inta[3][4]=(0);则下面正确的叙述是_____。
A)只有元素a[0][0]可得到初值0
B)此说明语句不正确
C)数组a中各元素都可得到初值,但其值不一定为0
D)数组a中每个元素均可得到初值0
45、下述对C语言字符数组的描述中错误的是_____。
A)字符数组可以存放字符串
B)字符数组的字符串可以整体输入、输出
C)可以在赋值语句中通过赋值运算符"="字符数组整体赋值
D)不可以用关系运算符对字符数组中的字符串进行比较
46、判断字符串a和b是否相等,应当使用_____。
A)if(a==b) B)if(a=b)
C)if(strcpy(a,b)) D)if(strcmp(a,b))
47、若有以下说明和语句:
struct student
{int age;
int num;
}std,*p;
p=&std;
则以下对结构体变量std中成员age的引用方式不正确的是_______。
A)std.age B) p->age C)(*p).age D) *p.age
48、以下正确的说法是______。
A)定义函数时,形参的类型说明可以放在函数体内
B)return后边的值不能为表达式
C)如果函数值的类型与返回值类型不一致,以函数值类型为准
D)如果形参与实参的类型不一致,以实参类型为准
49、以下不正确的说法为_____。
A)在不同函数中可以使用相同名字的变量
B)形式参数是局部变量
C)在函数内定义的变量只在本函数范围内有效
D)在函数内的复合语句中定义的变量在本函数范围内有效
50、在C语言中(以16位PC机为例),5种基本数据类型的存储空间长度的排列顺序为
A)charC)char
51、以下程序的正确运行结果是______。
main()
{inta=2;
for(i=0;i<3;i++)printf("%4d",f(a)); }
f(inta)
{intb=0;staticintc=3;
b++;c++;
return(a+b+c); }A) 7 7 7B) 7 l0 13C) 7 9 11D)7 8 9
52、以下正确的描述是_______。
A)c语言的预处理功能是指完成宏替换和包含文件的调用
B)预处理指令只能位于c源程序文件的首部
C)凡是C源程序中行首以"#"标识的控制行都是预处理指令
D)C语言的编译预处理就是对源程序进行初步的语法检查
53、请读程序:
#defineADD(x) x+x
main()
{intm=1,n=2,k=3;
intsum=ADD(m+n)*k;
printf("sum=%d",sum);
上面程序的运行结果是_____。
A)sum=9 B)sum=10 C)sum=12 D)sum=18
54、若有语句int*point,a=4;和point=&a; 下面均代表地址的一组选项是_______。
A)a,point,*&a B)&*a,&a,*point
C)*&point,*point,&a D)&a,&*point,point
55、以下错误的描述是_____。
函数调用可以 A)出现在执行语句中
B)出现在一个表达式中
C)做为一个函数的实参
D)做为一个函数的形参
56、已有定义inta=-2;和输出语句:
printf(“%8Lx”,a);以下正确的叙述是 。
A)整型变量的输出格式符只有%d一种
B)%x是格式符的一种,它可以适用于任何一种类型的数据
C)%x是格式符的一种,其变量的值按十六进制输出,但%8Lx是错误的
D)%8Lx不是错误的格式符,其中数字8规定了输出字段的宽度
57、若用数组名作为函数调用的实参,传递给形参的是____。
A)数组的首地址B)数组第一个元素的值
C)数组中全部元素的值D)数组元素的个数
58、当运行以下程序时,从键盘输入Happy!
(表示回车),则下面程序的运行结果是_______。
#include
#include
main()
{charstr[10],*p=str;
gets(p);
printf(“%d\n”,stre(p)); }
stre(char str[])
{intnum=0;
while(*(str+num)!
='\0') num++;
return(num); }
A)7 B)6 C)5 D)10
59、下面有关for循环的正确描述是_____。
A)for循环只能用于循环次数已经确定的情况
B)for循环是先执行循环体语句,后判断表达式
c)在for循环中,不能用break语句跳出循环体
D)for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
60、设有如下定义:
structsk
{intn;
floatxl;
}data,*p;
若要使p指向data中的n域,正确的赋值语句是_____。
A)p=&data.n; B)*p=data.n;
C)p=(structsk*)&data.n; D)p=(structsk*)data.n;
61、若有以下定义和语句,则对a数组元素的正确引用为______。
inta[2][3],(*p)[3];
p=a,
A)(p+1)[0] B)*(*(p+2)+1) C)*(p[l]+1) D)p[1]+2
62、若有以下说明和语句:
char*languge[]={"F0RTRAN“,"BASIC”,"PASCAL","JAVA”,"C”};
char **q; q=language+2';
则语句printf(”%s\n“,*q);______。
A)输出的是language[2]元素的地址
B)输出的是字符串PASCAL
C)输出的是1anguage[2]元素的值,它是字符串PASCAL的首地址
D)格式说明不正确,无法得到确定的输出
63、已有定义intx;floaty;且执行scanf("%3d%f",&x,&y);语句,若从第一列开始输入数据12345678<回车>,则y的值为_____。
A)无定值 B)45.000000 C)678.000000 D)123.000000
64、下面程序的运行结果是_____。
#include
main()
{staticchara[]="Language”,b[]="programe";
char*p1,*p2; intk;
p1=a; p2=b;
for(k=0;k<=7;k++)
if(*(p1+k)==*(p2+k)) printf("%c",*(p1+k)); }
A)gae B)ga C)Language D)有语法错
65、表达式 0xl3&0xl7的值是____。
A)0x17 B)0xl3 C)0xf8 D)0xec
66、若已定义inta=5;下面对
(1),
(2)两个语句的正确解释是_____。
(1)int*p=&a;
(2)*p=a;
A)语句
(1)和
(2)中的,p含义相同,都表示给指针变量p赋值
B)
(1)和
(2)语句的执行结果,都是把变量a的地址值献给指针变量p
C)
(1)在对p进行说明的同时进行初始化,使p指向a(