上海市计算机二级考试C语言复习资料题目Word下载.docx
《上海市计算机二级考试C语言复习资料题目Word下载.docx》由会员分享,可在线阅读,更多相关《上海市计算机二级考试C语言复习资料题目Word下载.docx(61页珍藏版)》请在冰豆网上搜索。
chararr[]="
ABCD"
char*ptr;
for(ptr=arr;
ptr<
arr+4;
ptr++)
printf("
%s\n"
,ptr);
A、ABCDB、AC、DD、ABCD
BCD
CD
D
6.C语言的auto型变量是()
A、存储在动态存储区中。
B、存储在静态存储区中。
C、存储在计算机CPU的寄存器中。
D、存储在外存储器中。
7.测试文件是否结束函数的函数名是()
A、feofB、EOFC、eofD、FEOF
8.下面程序段的输出结果是()
inta[][4]={1,2,3,4,5,6,7,8,9,10,11,12},(*p)[4];
p=a;
printf(“%d\n”,*(*(p)+2));
A、1B、5C、3D、7
9.C语言规定:
在一个源程序中,main函数的位置是()
A、必须在最开始B、必须在系统调用的函数的后面
C、可以任意D、必须在最后
10.一个C程序的执行是从()
本程序的main函数开始,到main函数结束
本程序的第一个函数开始,到本程序文件的最后一个函数结束
本程序的main函数开始,到本程序文件的最后一个函数结束
本程序文件的第一个函数开始,到本程序main函数结束
11.下面的四个选项中,均是不合法的用户标识符的选项是()
A、AB、floatC、b-aD、_123
P_0la0gototemp
do_AintINT
12.下面四个选项中,均是合法转义字符的选项是()
A、’\’’B、’\’C、’\018’D、’\\0’
‘\\’‘\017’‘\f’‘\101’
‘\n’‘\”’‘xab’‘x1f’
13.sizeof(float)是()
A、一个双精度型的表达式B、一个整型表达式
C、一种函数调用D、一个不合法的表达式
sizeof的使用
使用sizeof可以计算某种数据类型的数据字节数。
格式为:
sizeof(数据或数据类型或变量名)
sizeof的使用如表1-2所示。
表1-2sizeof的使用
定义
计算数据或类型的长度
inti,j;
sizeof(int)=2,sizeof(i)=2,sizeof(10)=2
longs;
sizeof(long)=4,sizeof(s)=4,sizeof(50000)=4,sizeof(10L)=4
floata,b;
sizeof(float)=4,sizeof(b)=4,sizeof(9.8F)=4
doublef1,f2;
sizeof(double)=8,sizeof(f1)=8,sizeof(9.8)=8
charch;
sizeof(char)=1,sizeof(ch)=1,sizeof(‘a’)=1,sizeof(‘\101’)=1
15.若有以下定义和语句,且0<
16.若二维数组a有m列,则在a[i][j]前的元素个数为()
A、j*m+iB、i*m+jC、i*m+j-1D、i*m+j+1
17.对两个数组a和b进行如下初始化
chara[]=”ABCDEF”;
charb[]={‘A’,’B’,’C’,’D’,’E’,’F’};
则以下叙述正确的是()
A、a与b数组完全相同B、a与b长度相同
C、a和b中都存放字符串D、a数组比b数组长度长
18.C语言中有关全局变量的说法,正确的是()
A、在使用到它的所有文件中均需定义
B、在函数体外定义一次
C、在main函数中定义
在main函数外定义
19.若有数组名作为函数调用时的实参,则传递给该函数形参的是()
A、数组的首地址B、数组的第一个元素的值
C、数组中全部元素的值D、数组元素的个数
20.下面程序段的输出结果是()
inta[][3]={1,2,3,4,5,6,7,8,9,10,11,12},(*p)[3];
printf(“%d\n”,*(*(p+1)+2));
A、3B、4C、6D、7
21.不属于C语言程序基本结构的是()
A)顺序结构B)选择结构C)函数结构D)循环结构
23.十进制数123转换成十六进制数是。
A)7AHB)7BHC)7CHD)7DH
24.C语言中合法的字符常量是。
A)'
\058'
B)'
ab'
C)'
\xab'
D)”\0”
25.下列字符中,ASCⅡ码值最小的是。
A)AB)aC)0D)空格
26.下面程序输出结果是__________
main()
{intk=0;
charc='
A'
;
do
{switch(c++)
{case'
:
k++;
break;
case'
k--;
C'
k+=2;
D'
k=k%2;
continue;
E'
k=k*10;
default:
k=k/3;
k++;
}while(c<
'
G'
);
printf("
k=%d\n"
k);
}
A)k=3B)k=4C)k=2D)k=0
27.设有如下定义:
intx=l,y=-1;
,则语句:
%d\n"
,(x--&
++y));
的输出结果是()
A)1B)0C)-1D)2
28.C语言规定,函数返回值的类型是由。
return语句中的表达式类型所决定
调用函数时的主调函数类型所决定
调用函数时系统临时决定
在定义该函数时所指定的函数类型所决定
29.下列定义中,不是指针数组定义的是。
A)int*p[5];
B)float*q[4];
C)int(*r)[6];
D)char*w[7];
30.以下程序运行结果为__________
#definePT3.5
#defineS(x)PT*x*x
{inta=1,b=2;
%4.1f\n"
S(a+b));
A)14.0B)31.5C)7.5D)10.5
31.下面程序输出结果是()
{chara[]="
ABCDEFG"
k,*p;
fun(a,0,2);
fun(a,4,6);
a);
fun(char*s,intp1,intp2)
{charc;
while(p1<
p2)
{c=s[p1];
s[p1]=s[p2];
s[p2]=c;
p1++;
p2--;
A)ABCDEFGB)DEFGABCC)GFEDCBAD)CBADGFE
32.以下程序的输出结果是()
{inta=1,i;
for(i=0;
i<
4;
i++)
func(a));
func(a)
inta;
{intb=0;
staticintc=1;
b++;
c++;
return(a+b+c);
A)4444B)4455C)4567D)5678
33.执行下面的程序后,y的值是__________
{inta[]={2,4,6,8,10};
inty=1,x,*p=a+1;
for(x=0;
x<
3;
x++)y+=*(p+x);
y);
A)17B)18C)19D)20
34.若使用下述程序段将整数30和浮点数5.5分别赋给变量a和b,那么输入应该是()
floatb;
scanf("
a=%d,b=%f"
&
a,&
b);
A)305.0B)a=30,b=5.5C)30,5.5D)a=30b=5.5
35.设有如下定义:
int(*ptr)();
则以下叙述中正确的是()
A)ptr是指向一维数组的指针变量
B)ptr是指向int型数据的指针变量
C)ptr是指向函数的指针,该函数返回一个int型数据
D)ptr是一个函数名,该函数的返回值是指向int型数据的指针
36.设有以下定义:
inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
int(*ptr)[3]=a,*p=a[0];
则以下能够正确表示数组元素a[1][2]的表达式的是()
A)*(*ptr+1)[2]B)*(*(p+5))
C)(*ptr+1)+2D)*(*(a+1)+2)
37.若有以下定义和语句,且0<
10,则对数组元素的错误引用是()
inta[]={0,1,2,3,4,5,6,7,8,9},*p,i;
p=a;
A)*(a+i)B)a[p-a]C)p+iD)*(&
38.执行下面的程序后,a的值是()
#defineSQR(X)X*X
{inta=10,k=2,m=1;
a/=SQR(k+m)/SQR(k+m);
a);
A)10B)1C)9D)0
39.表达式18/4*sqrt(4.0)/8的值的数据类型为()
A)intB)float
C)doubleD)不确定
40.当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是()
if(a<
b)
if(c<
d)x=1;
else
c)
if(b<
d)x=2;
elsex=3;
elsex=6;
elsex=7;
A)1B)2C)3D)6
41.判断char型变量ch是否为大写字母的正确表达式()
A)’A’<
=ch<
=’Z’B)(ch>
=’A’)and(ch<
=’z’)
C)(ch>
=‘A’)&
&
(ch<
=’Z’)D)(‘A’<
=ch)||(‘Z’>
=ch)
42.以下程序的输出结果是()
main()
{inti,k,a[10],p[3];
k=5;
for(i=0;
10;
i++)a[i]=i;
i++)p[i]=a[i*(i+1)];
i++)k+=p[i]*2;
k);
A)20B)21C)22D)23
43.下面程序的运行结果是()
{charch[7]={"
65ab21"
};
inti,s=0;
ch[i]>
='
0'
ch[i]<
9'
i+=2)s=10*s+ch[i]-'
s);
A)12ba56B)6521C)6D)62
44.以下程序运行后的结果是()。
{chars[]="
12345678"
intv[4]={0,1,1,0},k,i;
for(k=0;
s[k];
k++)
{switch(s[k])
{case'
1'
i=0;
case'
2'
i=1;
3'
i=2;
4'
i=3;
v[i]++;
for(k=0;
k<
k++)printf("
%d"
v[k]);
A)0123B)0118C)5678D)0246
46.二进制数1110111B转换成十六进制数是()
A)77HB)37HC)73HD)E7H
47.能正确表示a和b同时为正或同时为负的逻辑表达式是()
A)(a>
=0‖b>
=0)&
(a<
0‖b<
0)B)(a>
=0&
b>
0&
b<
0)
C)(a+b>
0)&
(a+b<
=0)D)a*b>
48.要把高级语言编写的源程序转换为目标程序,需要使用()
A)编辑程序B)驱动程序C)诊断程序D)编译程序
49.英文小写字母d的ASCII码为100(十进制),英文大写字母D的ASCII码为()
A)50B)66C)52D)68
50.下面程序输出结果是()
voidprtv(int*x)
{printf("
++*x);
{inta=25;
prtv(&
a);
A)23B)24C)25D)26
51.下面程序的输出是()
intaa[3][3]={{2},{4},{6}};
{inti,*p=&
aa[0][0];
for(i=0;
i<
2;
i++)
{if(i==0)
aa[i][i+1]=*p+1;
++p;
*p);
A)23B)26C)33D)36
53.试写出下列数学表达式的C语言表达式
54.下面程序的输出结果是()
#include<
stdio.h>
{char*a="
1234"
fun(a);
);
fun(char*s)
{chart;
if(*s){t=*++s;
putchar(t);
fun(s);
55.若有定义及赋值:
inta[6][6],*p;
p=*a;
则下列各式中能表示元素a[0][1]列地址的表达式是()
A)&
a[0]+1B)a[0]+1C)*(p+1)D)p+1
56.如果用八位二进制补码表示带符号的定点整数,则能表示的十进制数的范围是()
A)-127到+127B)-128到+128C)-127到+128D)-128到+127
57.若有定义及赋值:
inty,*p,*p1;
p=&
y;
p1=p;
*p1=4;
则可以输出变量y的地址的语句是()
A)printf("
%u\n"
,y);
B)printf("
,*p1);
C)printf("
,*p);
D)printf("
,&
y);
58.设有inty,u=0,x=15,下列各项中不能使y值为0的是()
A)y=x∧x;
B、y=x∣u;
C、y=x>
>
4;
D、y=x&
u;
59.二进制数1111111.101B转换成十六进制数是()
A)FF.AHB)FF.5HC)7F.AHD)7F.5H
60.字符串”123”在计算机内所占用的字节数是()个。
A)1B)2C)3D)4
61.C语言中最基本的数据类型包括()
A)整型、实型、逻辑型B)整型、实型、字符型
C)整型、字符型、逻辑型D)整型、实型、逻辑型、字符型
62.C语言中有关do—while循环的说法,正确的是()
A)在if语句内不能再使用do-while语句构成的循环
B)do-while语句构成的循环必须用break语句才能退出
C)do-while语句构成的循环,当while语句中的表达式值为非零时结束循环
D)do-while语句构成的循环,当while语句中的表达式值为零时结束循环
63.在C语言中,不正确的int类型的常数是()
A)32768B)0C)037D)Xaf
64.设有如下定义:
inta=2,b=1,c=3,d=4,m=2,n=2;
则执行表达式:
(m=a>
b)&
(n=c>
d)后,n的值为()
A)1B)2C)3D)0
65.设a,b类型正确,语句:
,(a=2)&
(b=-2));
的执行结果是()
A)2B)–2C)1D)0
69.下列定义中,不是指针数组定义的是()
D)char*w[7];
70.不能进行++和--运算的数据类型是()
A)指针变量B)整型变量C)整型常量D)字符变量
71.已知:
inta,b;
用语句scanf("
%d%d"
输入a、b的值时,不能作为输入数据分隔符的是()
A),B)空格C)回车D)[Tab]键
72.为表示关系x>
=y>
=z,应使用C语言表达式()
A)(x>
=y)&
(y>
=z)B)(x>
=y)AND(y>
=z)
C)(x>
=z)D)(x>
74.以下不正确的描述是()
A)break语句不能用于循环语句和switch语句外的任何其它语句
B)在switch语句中使用break语句或continue语句的作用相同
C)在循环语句中使用continue语句结束本次循环,但不会终止整个循环
D)在循环语句中使用break语句是,会跳出循环体,提前结束循环
75.若有以下定义和语句
chars[12]="
abook!
"
,strlen(s));
则输出结果是()
A)12B)8C)7D)6
76.以下程序的输出结果是()
{inta=2,i;
staticintc=3;
A)777B)777C)789D)789
77.执行下面的程序后,y的值是()
A)17B)18C)19D)20
79.设有以下定义:
则以下能够正确表示数组元素a[1][2]值的表达式的是()
A)*(*ptr+1)[2]B)*(*(P+5))
80.设有如下的程序段:
charstr[]="
Hello"
char*ptr;
ptr=str;
执行完上面的程序段后,*(ptr+5)的值为()
A)'
B)'
\0'
C)不确定的值D)'
的地址
81.假设已定义chara[10]和char*p=a,下面的赋值语句中,正确的是()
A)a[10]="
TurboC"
B)a="
C)*p="
D)p="
83.下列程序的输出结果是()
{inta[5]={2,4,6,8,10},*p,**k;
k=&
p;
*(p++));
**k);
A)44B)22C)24D)46
84.如有structstudent
{intno;
charname[20];
charsex;
struct
{intyear;
intmonth;
intday;
}birth;
structstudents;
对变量s赋值"
1984年11月11日"
正确方式是()
A)year=1984;
month=11;
day=11;
B)birth.year=1984;
birth.month=11;
birth.day=11;
C)s.year=1984;
s.month=11;
s.day=11;
D)s.birth.year=1984;
s.b