一、选择题((1)-(40)每小题1分,(41)-(50)每小题2分,共60分)
下列各题 A) 、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1) 用8位无符号二进制数能表示的最大十进制数为
A) 127 B) 128 C) 255 D) 256
(2) 在64位高档微机中,一个字长所占的二进制位数为
A) 8 B) 16 C) 32 D) 64
(3) 在Windows环境下,为了复制一个对象,在用鼠标拖动该对象时应同时按住
A) Alt键 B)Esc键 C)Shift键 D)Ctrl键
(4) 在Windows菜单中,暗淡(灰色)的命令项表示该命令
A) 暂时不能用 B) 正在执行 C) 包含下一层菜单 D) 包含对话框
(5) 在DOS环境下,为了得到TYPE命令的帮助信息,正确的DOS命令为
A) TYPE B) TYPE/H C) TYPE/* D) TYPE/?
(6) 下列选项中,能作为合法DOS文件名的是
A) ANP/A.DAT B) ABCCOM C) ECD.BASIC D) XY+Z.TXT
(7) 下列叙述中正确的是
A) 在Windows环境下,最大化的窗口是不能移动的
B) 在Windows环境下,应用程序窗口最小化后,该应用程序暂停执行
C) 在Windows环境下,只有最小化的窗口才能关闭
D) 在Windows环境下,不能关闭最大化的窗口
(8) 在Windows环境下,工具栏中的复制按钮是
A) 打印机图标 B) 剪刀标志 C) 复制标志 D) 粘贴标志
(9) 在Windows98环境下,若要将整个屏幕上显示的内容存入剪贴板,可以按
A) Ctrl+PrintScreen键 B) Alt+PrintScree键
C) Shift+PrintScreen键 D) PrintScreen键
(10) 目前,计算机病毒扩散最快的途径是
A) 通过软件复制 B) 通过网络传播
C) 通过磁盘考贝 D) 运行游戏软件
(11) 在QBASIC集成开发环境中,在编辑源程序后要运行程序,应按下键盘上的
A) F2键 B) F5键 C) Enter键 D) End键
(12) 关于QBASIC源程序语句中行号的说法正确的是
A) 必须有行号 B) 不允许有行号 C) 根据需要可有可无 D) 只允许有标号
(13) 在QBASIC中,常量3E1的数据类型是
A) 字符串 B) 单精度实型 C) 双精度实型 D) 整型
(14) 在下列四个式子中,非法的QBASIC表达式是
A) a=abc B) 5>3+3 C) a+b=c D) 5<>5
(15) QBASIC表达式3^3/3MOD2的值是
A) 1 B) -1 C) 3 D) 0
(16) 在以下属于合法的QBASIC变量名是
A) X-3 B) 4y C) n$1 D) b.1
(17) 定义一个3×3的二维数组,正确的语句是
A) DIM a(0 TO 3,0 to 3) B)DIM a(2000 to 2002,0 TO 2)
C) DIM a(3),a(3) D)DIM a(1 To 3)
(18) 下列语句中合法的是
A) PRINT a=atn B) PRINT”SIN(3.14)”+”COS(3.14″
C) PRINT TAB(10) “QB” D) PRINT USING”####”,1234.56
(19) 在QBASIC中,下列运算符优先级最高的是
A) MOD B) NOT C) / D) ^
(20) 正确的单行自定义函数语句是
A) DEF fn(x)=3.14159*x^2 B) DEFINE fn(x)=3.14129*x^2
C) DEF fnn(x)=3.14159*x^2 D) DEF fnn(x)=3.14159*x^2 END
(21) 表达式INT(4*RND+1)*(INT(4*RND-1))值的范围是
A) [0,8] B) [-1,8] C) [-3,8] D)[-4,8]
(22) 有如下程序段
CONST C=”Wang”
C$=”a”
PRINT LEN(C);LEN(C$)
其输出结果为
A) Wang a B) 4 1 C) 1 1 D) 重复定义,程序出错
(23) 有如下程序段
a%=12.8:b!=14.5
PRINT a%,b!
其输出结果为
A) 12.8 4 B) 12 14.5 C) 12.8 15 D) 13 14.5
(24) 有如下程序
READ a,b,c
RESTORE k
READ c,c,d
DATA 1,2
K: DATA 3,4,5
PRINT a;b;c;d
END
A) 1 2 3 4 B) 1 2 3 5 C) 3 4 5 4 D) 1 2 4 5
(25) 以下语句中错误的是
A) INPUT”x,y=”;a,b B) INPUT”x,y=”,c,d
C) INPUT, “x,y=”,e,f D) INPUT; “x,y=”,g,h
(26) 实现选择结构”如果XA) IF x =y THEN
a=-15 a=-15
PRINT a ELSE a=15
END IF END IF
PRINT a
C) IF x>y THEN a=-15 D) IF x>=y THEN GO TO d
a=15 a=15
PRINT a d: a=-15
END PRINT a
END
(27) 以下语句中正确的是
A) FOR 1 TO 10 STEP 2 B) FOR x=1,9 STEP3
C) FOR x=10 TO-10 STEP-10 D) FOR x=10 TO 50 NEXT
(28) 有如下程序
DIM k AS INTEGER, y AS INTEGER
LET y=3
FOR k=1 TO 5 step-1
Y=y+k
NEXT k
PRINT y;k
END
其输出结为
A) 3 1 B) 4 0 C) -1 6 D) 4 1
(29) 有如下程序
DIM x AS INTEGER, y AS INTEGER
FOR x=1 TO 2
FOR y=0 TO X=-1
PRINT x*y
NEXT y
NEXT x
END
内层循环的循环体的总执行次数是
A) 1 B) 2 C) 3 D) 4
(30) 有如下程序
DIM x AS INTEGER, y AS INTEGER
X=0
READ y
WHILE y<>-9999 AND x<>3
IF y>x THEN x=y
READ y
WEND
DATA-9999,9,8,3,9999
PRINT ABS(y)
END
运行后的输出结果为
A) 9 B) -9999 C) 3 D) 9999
(31) 有如下程序
a$=”12″
b$=”24″
c$=b$+a$
d=VAL(c$)
PRINT d\100
END
运行后的输出结果是
A) 12 B) 36 C)34 D) 24
(32) 有如下程序
FOR j=1 TO 5
a=(a+j)MOD 5
NEXT j
PRINT a
END
运行后的输出结果是
A) 0 B) 5 C) 25 D) 50
(33) 当EOF()函数返回的值为-1时,表示文件指针指向文件的
A) 开头 B) 第一个记录 C) 末尾 D) 最后一个记录
(34) 有如下程序
FOR x=1 TO 4
z=0
FOR y=1 TO x+2
z=z+1
NEXT y
PRINT z;
NEXT x
END
运行后的输出结果是
A) 3 4 5 6 B) 4 5 6 7 C) 5 6 7 8 D) 6 7 8 9
(35) 有如下程序
DEF fna(x,y)=x^2+y^2
X=4
Y=3
PRINT fna(x,y)
END
运行后的输出结果是
A) 5 B)7 C)25 D)49
(36) 有如下程序
m$=”ABCDE”
MID$(m$,1,5)= “abcde”
PRINT m$
END
运行后的输出结果是
A) abcdeABCDE B) ABCDEabcde C) abcde D) ABCDE
(37) 有如下程序
FOR j=1 TO 10
READ a
IF a MOD 2=0 THEN sum=sum+a
NEXT j
PRINT”sum=”;sum
DATA 1,3,6,10,15,21,28,36,45,55
END
运行后的输出结果是
A) 55 B) 80 C) 140 D) 220
(38) 有如下程序
x=1
DO
X=2*x+1
num=num+1
LOOP UNTIL x>100
PRINT num,x
END
运行后的输出的结果是
A) 6 127 B)8 127 C)127 8 D)127 8
(39) 有如下程序
sum=0
FOR i=1 TO 9
IF i<>10 THEN
Sum=sum+1
ELSE
Sum=sum+2
END IF
NEXT I
PRINT sum
END
运行后输出结果是
A) 1 B) 9 C) 49 D) 55
(40) 有如下程序
m$=”*”
i=1
FOR k=3 TO 1 STEP -1
x$=string$(k+i,m$)
PRINT x$
m$=m$+”*”
i=-i
NEXT k
END
运行后的输出结果是
A) ** B) **** C) **** D) ****
*** *** * **
**** ** ** ******
(41) 有如下程序
DECLARE SUB f(m%,n%,g%)
CALL f(87,69,g%)
PRINT g%
END
SUM f(m%,n%,g%)
a=m%
b=n%
DO
C=a MOD b
a=b
b=c
LOOP WHILE c<>0
g%=a
END SUB
运行后的输出结果是
A) 3 B) 18 C) 69 D)87
(42) 有如下程序
INPUT n
i=2
t=-1
DO WHILE i*i<=n
IF n MOD i=0 THEN
t=0
END IF
i=i+1
LOOP
PRINT t
END
运行时输入257,输出结果是
A) 0 B) 1 C) -1 D) 257
(43) 有如下程序
month=INT(RND*3+1)+6
SELECT CASS month
CASE 1 TO 3
season$=”First”
CASE 4 TO 6
season$=”Second”
CASE 7 TO 9
season$=”Third”
CASE ELSE
season$=”Fourth”
END SELECT
PRINT season$
END
运行后的输出结果是
A) First B)Second C)Thire D)不能确定
(44) 有如下程序
DECLARE FUNCTION f(n)
INPUT n
PRINT f(n)
END
FUNCTION f(n)
if n=0 THEN f=0 ELSE f=n+f(n-1)
END FUNCTION
键盘输入n运行后的输出结果是78,则n的值是
A) 10 B)11 C)12 D)13
(45) 有如下程序
CLS:SCREEN 13:COLOR 2
x=180:y=100:r=50
CIRCLE(x,y),50
CIRCLE(180,100),r
END
该程序在屏幕上显示的是
A) 一个圆 B) 两个同心圆 C) 两个不同心的圆 D) 没有显示
(46) 有如下程序
SCREEN 13
COLOR 2
LINE(10,10)-(50,50)
LINE(50,50)-(10,90)
END
程序所画两条线段
A) 关于一点对称 B) 关于一条垂直的直线对称
C) 关于一条水平的直线对称 D) 重合
(47) 有如下程序
FOR m=3 TO 5
FOR j=1 TO m-2
FOR k=j TO 3
n=n+k
NEXT k
NEXT j
NEXT m
END
运行后n的值为
A) 21 B) 25 C) 31 D) 42
(48) 有如下程序
m$=”a”
n$=”b”
o$=LCASE$(m$)
p$=UCASE$(n$)
END
运行结果是
A) a 0 B 0 B) A 0 b0 C) a 97 B 66 D) A 65 b 98
(49) 语句OPEN”A.DAT”FOR RANDOM AS#1 LEN=30表示此文件每个记录
A)长度等于30个字符 B)长度等于30个字节
C)长度小于或等于30个字节 D)长度小于或等于30个字符
(50) 有如下程序
DIM x(3,3)
FOR k=1 TO 2
For j=1 TO 2
IF k=j THEN
x(k,j)=1
ELSE
x(k,j)=0
END IF
NEXT j:NEXT k
OPEN”diagonal.dat”FOR OUTPUT AS#1
FOR k=1 TO 2
PRINT#1,x(k,1);x(k,2)
NEXT k
CLOSE#1
END
执行程序,屏幕上显示的结果是
A) 0 1 B) 1 0 C) 0 0 D) 没有任何显示
1 0 0 1 1 1
二、填空题(每空2分,共20分)
请将每空的正确答案写在答题卡上【1】-【10】序号的横线上,答在试卷上不得分。
(1) 用十六进制给存储器中的字节地址进行编号,若地址编号从000到FFFF,则该存诸器的容量为【1】KB。
(2) 假设在当前盘的当前目录下有两个文件A.TXT和B.TXT,现要将文件B.TXT合并连接到文件A.TXT的后面。若使用COPY命令,则完整的命令为【2】。
(3) E-mail地址由用户名和域名两部分组成,这两部分的分隔符为【3】。
(4) 假设在当前盘当前目录下有一个可执行程序USER.EXT。现要执行该程序,并要求在执行过程中将显示输出的结果信息存入当前盘当前目录的文件OUT.DAT中,则完整的DOS命令为【4】。
(5) 在DOS环境下,表示打印机的设备文件名为【5】 。
(6) 数据式aeutcos(wt+v)的QBASIC表达式为【6】。
(7) 常数-0.00013579的标准化的指数形式是【7】。
(8) 有如下程序
a=1357:b=246
c=LEN(str$(a)+str$(b))
PRINT c
END
运行后,输出的值是【8】。
(9) 四个字符串”Xab”、”"XYZ”、”def”及”dE”中最大者为【9】。
(10) 有如下程序
FOR j=1 TO 11
j=j+1
IF j MOD 4=0 THEN n=n+1
NEXT j
PRINT”n=”;n
END
运行后,输出的值是【10】。
(11) 有如下程序
x=5:y=-20
IF NOT x>0 THEN
x=y-3
ELSE
y=y+3
END IF
PRINT x-y;y-x
END
运行后的输出结果是【11】。
(12) 设a=2,b=3,c=4,d=5,表达式3>2*b OR a=c AND b<>c OR c>d的值是【12】。
(13) 有如下程序
FOR i=1 TO 5
FOR x=i TO 5 STEP 1
IF i=2 AND x<5 THEN PRINT”*”;
NEXT x
NEXT i
end
运行后输出的结果是【13】。
(14) 随机生成100个-500到500间的整数(含-500和500),并找出其中第k大的数。请在【14】、【15】处填入适当内容将程序补充完整。
DIM a(100)
INPUT k
FOR i=1 TO 100
a(i)=INT(【14】*RND)-500:PRINT a(i);
NEXT i
PRINT
FOR i=1 TO k
FOR j=i+1 TO 100
IF【15】THEN SWAP a(i),a(j)
NEXT j
NEXT i
PRINT”a(“;k;”)=”;a(k);
END
(15) 有如下程序
DIM i AS INTEGER,x AS INTEGER
X=1:y=1:I=1
DO WHILE i<4
f=x+y
x=y
y=f
PRINT f
i=i+1
LOOP
END
运行后的输出的结果是【16】。
(16) 有如下程序
DIM tel(10)AS STRING*8
FOR i=1 TO 4
READ tel(i)
NEXT I
FOR i=1 TO 4
IF LEFT$(tel(i),1)=”2″THEN
tel(i)=”6″+tel(i)
ELSE
tel(i)=tel(i)+”9″
END IF
NEXT i
PRINT tel(1),tel(2)
DATA 6543210,2345678,2457788,8237777
END
运行后输出的结果是【17】。
(17) 下面的程序从键盘输入一个正整数n,计算并输出比n小,并且与n互素的数的个数。(两个数互素是指它们的最大公约数等于1)
DECLARE FUNCTION gcd(a,b)
INPUT n
Phi=1
FOR i=2 TO n-1
IF gcd(n,i)=1 THEN phi=【18】
NEXT i
END
FUNCTION gcd(a,b)
IF b=0 THEN
tmp=【19】
ELSE
IF b=1 THEN tmp=1 ELSE tmp=gcd(b, 【20】)
ENDIF
gd=tmp
END FUNCTION
运行后,输出的值是。
2008年11月14日
2003年4月全国计算机等级考试二级QBASIC笔试试卷
2003年4月全国计算机等级考试二级C笔试试卷(含答案)
一、选择题((1)~(40)每小题1分,(41)~(55)每小题2分,共60分)
下列各题 A) 、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1) 用8位无符号二进制数能表示的最大十进制数为
A) 127 B) 128 C) 255 D) 256
(2) 在64位高档微机中,一个字长所占的二进制位数为
A) 8 B) 16 C) 32 D) 64
(3) 在Windows环境下,为了复制一个对象,在用鼠标拖动该对象时应同时按住
A) Alt键 B)Esc键 C)Shift键 D)Ctrl键
(4) 在Windows菜单中,暗淡(灰色)的命令项表示该命令
A) 暂时不能用 B) 正在执行 C) 包含下一层菜单 D) 包含对话框
(5) 在DOS环境下,为了得到TYPE命令的帮助信息,正确的DOS命令为
A) TYPE B) TYPE/H C) TYPE/* D) TYPE/?
(6) 下列选项中,能作为合法DOS文件名的是
A) ANP/A.DAT B) ABCCOM C) ECD.BASIC D) XY+Z.TXT
(7) 下列叙述中正确的是
A) 在Windows环境下,最大化的窗口是不能移动的
B) 在Windows环境下,应用程序窗口最小化后,该应用程序暂停执行
C) 在Windows环境下,只有最小化的窗口才能关闭
D) 在Windows环境下,不能关闭最大化的窗口
(8) 在Windows环境下,工具栏中的复制按钮是
A) 打印机图标 B) 剪刀标志 C) 复制标志 D) 粘贴标志
(9) 在Windows98环境下,若要将整个屏幕上显示的内容存入剪贴板,可以按
A) Ctrl+PrintScreen键 B) Alt+PrintScree键
C) Shift+PrintScreen键 D) PrintScreen键
(10) 目前,计算机病毒扩散最快的途径是
A) 通过软件复制 B) 通过网络传播
C) 通过磁盘考贝 D) 运行游戏软件
(11) 以下叙述中正确的是
A) C语言比其他语言高级
B) C语言可以不用编译就能被计算机识别执行
C) C语言以接近英语国家的自然语言和数学语言作为语言的表达形式
D) C语言出现的最晚,具有其他语言的一切优点
(12) C语言中用于结构化程序设计的三种基本结构是
A) 顺序结构、选择结构、循环结构 B) if、switch、break
C) for、while、do-while D) if、for、continue
(13) 在一个C程序中
A) main函数必须出现在所有函数之前 B) main函数可以在任何地方出现
C) main函数必须出现在所有函数之后 D) main函数必须出现在固定位置
(14) 下列叙述中正确的是
A) C语言中既有逻辑类型也有集合类型
B) C语言中没有逻辑类型但有集合类型
C) C语言中有逻辑类型但没有集合类型
D) C语言中既没有逻辑类型也没有集合类型
(15) 下列关于C语言用户标识符的叙述中正确的是
用户标识符中可以出现在下划线和中划线(减号)
用户标识符中不可以出现中划线,但可以出现下划线
用户标识符中可以出现下划线,但不可以放在用户标识符的开头
用户标识符中可以出现在下划线和数字,它们都可以放在用户标识符的开头
(16) 若有以下程序段(n所赋的是八进制数)
int m=32767,n=032767
printf(“%d,%o/n”,m,n);
执行后输出结果是
A) 32767,32767 B) 32767,032767
C) 32767,77777 D) 32767,077777
(17) 下列关于单目运算符++、–的叙述中正确的是
A) 它们的运算对象可以是任何变量和常量
B) 它们的运算对象可以是char型变量和int型变量,但不能是float型变量
C) 它们的运算对象可以是int型变量,但不能是double型变量和float型变量
D) 它们的运算对象可以是char型变量、int型变量和float型变量
(18) 若有以下程序段
int m=0xabc,n=0xabc;
m-=n;
printf(“%X\n”,m);
执行后输出结果是
A) 0X0 B) 0×0 C) 0 D) 0XABC
(19) 有以下程序段
int m=0,n=0; char c=’a';
scanf(“%d%c%d”,&m,&c,&n);
printf(“%d,%c,%d\n”,m,c,n);
若从键盘上输入:10A10<回车>,则输出结果是:
A) 10,A,10 B) 10,a,10 C) 10,a,0 D) 10,A,0
(20) 有以下程序
main()
{ int i;
for(i=0;i<3;i++)
switch(i)
{ case 1: printf(“%d”,i);
case 2: printf(“%d”,i);
default: printf(“%d”,i);
}
}
执行后输出结果是
A) 011122 B) 012 C) 012020 D) 120
(21) 有以下程序
main()
{ int i=1,j=1,k=2;
if((j++‖k++)&&i++) printf(“%d,%d,%d\n”,i,j,k);
}
执行后输出结果是
A) 1,1,2 B) 2,2,1 C) 2,2,2 D) 2,2,3
(22) 有以下程序
main()
{ int a=5,b=4,c=3,d=2;
if(a>b>c)
printf(“%d\n”,d);
else if((c-1>=d)==1)
printf(“%d\n”,d+1);
else
printf(“%d\n”,d+2)
}
执行后输出结果是
A) 2 B) 3 C) 4 D) 编译时有错,无结果
(23) 有以下程序
main()
{ int p[7]={11,13,14,15,16,17,18},i=0,k=0;
while(i<7&&p[i]%2){k=k+p[i];i++;}
printf(“%d\n”,k);
}
执行后输出结果是
A) 58 B) 56 C) 45 D) 24
(24) 有以下程序
main()
{ int i=0,s=0;
do{
if(i%2){i++;continue;}
i++;
s +=i;
}while(i<7);
printf(“%d\n”,s);
}
执行后输出结果是
A) 16 B) 12 C) 28 D) 21
(25) 有以下程序
main()
{ int i=10,j=1;
printf(“%d,%d\n”,i–,++j);
}
执行后输出结果是
A) 9,2 B) 10,2 C) 9,1 D) 10,1
(26) 有以下程序
main()
{ char a,b,c,*d;
a=’\'; b=’\xbc’;
c=’\0xab’; d=”\017″;
print(“%c%c%c\n”,a,b,c,*d);
}
编译时出现错误,以下叙述中正确的是
A) 程序中只有a=’\';语句不正确 B) b=’\xbc’;语句不正确
C) d=”\0127″;语句不正确 D) a=’\';和c=’\0xab’;语句都不正确
(27) 有以下程序
int fl(int x,int y)
{ return x>y?x:y; }
int f2(int x,int y)
{ return x>y?y:x; }
main()
{ int a=4,b=3,c=5,d,e,f;
d=f1(a,b); d=f1(d,c);
e=f2(a,b); e=f2(e,c);
f=a+b+c-d-e;
printf(“%d,%d,%d\n”,d,f,e);
}
执行后输出结果是
A) 3,4,5 B) 5,3,4 C) 5,4,3 D) 3,5,4
(28) 有如下程序
void f(int x,int y)
{ int t;
if(x}
main()
{ int a=4,b=3,c=5;
f(a,b); f(a,c); f(b,c);
printf(“%d,%d,%d\n”,a,b,c);
}
执行后输出结果是
A) 3,4,5 B) 5,3,4 C) 5,4,3 D) 4,3,5
(29) 若有以下定义和语句
#include
int a=4,b=3,*p,*q,*w;
p=&a; q=&b; w=q; q=NULL;
则以下选项中错误的语句是
A) *q=0; B) w=p; C) *p=a; D) *p=*w;
(30) 有以下程序
int *f(int *x,int *y)
{ if(*x<*y)
return x;
else
return y;
}
main()
{ int a=7,b=8,*p,*q,*r};
}
执行后输出结果是
A) 7,8,8 B) 7,8,7 C) 8,7,7 D) 8,7,8
(31) 有以下程序
main()
{ char *s[]={“one”,”two”,”three”},*p;
p=s[1];
printf(“%c,%s\n”,*(p+1),s[0]);
}
执行后输出结果是
A) n,two B) t,one C)w,one D) o,two
(32) 有以下程序
main()
{ int x[8]={8,7,6,5,0,0},*s;
s=x+3
printf(“%d\n”,s[2]);
}
执行后输出结果是
A) 随机值 B) 0 C) 5 D) 6
(33) 以下能正确定义数组并正确赋初值的语句是
A) int N=5,b[N][N]; B) int a[1][2]={{1},{3}};
C) int c[2][]={{1,2},{3,4}}; D) int d[3][2]={{1,2},{34}};
(34) 有以下程序
main()
{ int m[][3]={1,4,7,2,5,8,3,6,9};
int i,j,k=2;
for(i=0;i<3;i++)
{ printf(“%d”,m[k][i]); }
}
执行后输出结果是
A) 4 5 6 B) 2 5 8 C) 3 6 9 D) 7 8 9
(35) 以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。
#define N 10
void arrin(int x[N])
{ int i=0;
while(i scanf(“%d”, );
}
在下划线处应填入的是
A) x+i B)&x[i+1] C)x+(i++) D)&x[++i]
(36) 有以下程序
main()
{ char s[]=”\n123\\”;
printf(“%d,%d\n”,strlen(s),sizeof(s));
}
执行后输出结果是
A) 赋初值的字符串有错 B) 6,7 C) 5,6 D) 6,6
(37) 阅读以下函数
fun(char *s1,char *s2)
{ int i=0;
while(s1[i]==s2[i]&& s2[i]!=’\0′)i++;
return(s1[i]== && s2{i}!==’\0′);
}
此函数的功能是
A) 将s2所指字符串赋给s1
B) 比较s1和s2所指字符串的大小,若s1比s2的大,函数值为1,否则函数值为0
C) 比较s1和s2所指字符串是否相等,若相等,函数值为1,否则函数值为0
D) 比较s1和s2所指字符串的长度,若s1比s2的长,函数值为1,否则函数值为0
(38) 以下叙述中正确的是
A) 全局变量的作用域一定比局部变量的作用域范围大
B)静态(static)类别变量的生存期贯穿于整个程序的运行期间
C)函数的形参都属于全局变量
D)未在定义语句中赋初值的auto变量和static变量的初值都是随机值
(39) 设有如下说明
typedef struct
{ int n; char c; double x;}STD;
则以下选项中,能正确定义结构体数组并赋初值的语句是
A) STD tt[2]={{1,’A',62},{2, ‘B’,75}};
B) STD tt[2]={1,”A”,62},2, “B”,75};
C) struct tt[2]={{1,’A'},{2, ‘B’}};
D)structtt[2]={{1,”A”,62.5},{2, “B”,75.0}};
(40) 有以下程序
main()
{ union { unsigned int n;
unsigned char c;
}u1;
ul.c=`A`;
printf(“%c\n”,u1.n);
}
执行后输出结果是
A) 产生语法错 B) 随机值 C) A D) 65
(41) 有以下程序
main()
{ char str[]=”xyz”,*ps=str;
while(*ps)ps++;
for(ps–;ps-str>=0;ps–) puts(ps);
}
执行后的输出结果是
A) yz B) z C) z D) x
xyz yz yz xy
xyz xyz
(42) 有以下程序
main()
{ int a[][3]={{1,2,3},{4,5,0}},{*pa}[3],i;
pa=a;
for(i=0;i<3;i++)
if(i<2) pa[1][i]=pa[1][i]-1;
else pa[1][i]=1;
printf(“%d\n”,a[0][1]+a[1][1]+a[1][2]);
}
执行后输出结果是
A) 7 B) 6 C) 8 D) 无确定值
(43) 有以下程序
void fun(int *a,int i,int j)
{ int t;
if(i { t=a[i];a[i]=a[j];a[j]=t;
fun(a,++i,–j);
}
}
main()
{ int a[]={1,2,3,4,5,6},i;
fun(a,0,5)
for(i=0;i<6;i++)
printf(“%d”,a[i]);
}
执行后的输出结果是
A) 6 5 4 3 2 1 B) 4 3 2 1 5 6 C) 4 5 6 1 2 3 D) 1 2 3 4 5 6
(44) 有以下程序
main(int arge,char *argv[])
{ int n,i=0;
while(arv[1][i]!=’\0′
{ n=fun(); i++;}
printf(%d\n”,n*argc);
}
int fun()
{ static int s=0;
s+=1;
return s;
}
假设程序经编译、连接后生成可执行文件exam.exe,若键入以下命令行
exam 123<回车>
则运行结果为
A) 6 B)8 C)3 D)4
(45) 以下程序段中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是
A) main() B) main
{ int *p; { int *p;
fun(p); fun(&p);
}
}
int fun(int *p) int fun(int **p)
{ int s; p=&s;} { int s;*p=&s;}
C) #include D) #include
main() main()
{ int *p; { int *p;
fun(&p); fun(p);
} }
int fun(int **p) int fun(int *p)
{ *p=(int *)malloc(2);} { p=(int *)malloc(sizeo(int));}
(46) 若要说明一个类型名STP,使得定义语句STP s等价于char *s,以下选项中正确的是
A) typedef STP char *s; B) typedef *char STP;
C) typedef stp *char; D) typedef char* STP;
(47) 设有如下定义
struct ss
{ char name[10];
int age;
char sex;
}std[3],*p=std;
下面各输入语句中错误的是
A) scanf(“%d”,&(*p).age); B) scanf(“%s”,&std.name);
C) scanf(“%c”,&std[0].sex) D) scanf(“%c”,&(p->sex));
(48) 设char型变量x中的值为10100111,则表达式(2+x)^(~3)的值是
A) 10101001 B) 10101000 C) 11111101 D) 01010101
(49) 以下叙述中不正确的是
A)C语言中的文本文件以ASCⅡ码形式存储数据
B)C语言中对二进制文件的访问速度比文本文件快
C)C语言中,随机读写方式不适用于文本文件
D)C语言中,顺序读写方式不适用于二进制文件
(50) 以下程序企图把从终端输入的字符输出到名为abc.txt的文件中,直到从终端读入字符#号时结束输入和输出操作,但程序有错。
#include
main()
{ FILE *fout; char ch;
fout=fopen(‘abc.txt’,'w’);
ch=fgetc(stdin);
while(ch!=’#')
{ fputc(ch,fout);
ch=fgetc(stdin);
}
fclose(fout);
}
出错的原因是
A) 函数fopen调用形式错误 B) 输入文件没有关闭
C) 函数fgetc调用形式错误 D) 文件指针stdin没有定义
二、填空题(每空2分,共20分)
请将每空的正确答案写在答题卡上【1】-【20】序号的横线上,答在试卷上不得分。
(1) 用十六进制绘存储器中的字节地址进行编号,若地址编号从000到FFFF,则该存诸器的容量为【1】KB。
(2) 假设在当前盘的当前目录下有两个文件A.TXT和B.TXT,现要将文件B.TXT合并连接到文件A.TXT的后面。若使用COPY命令,则完整的命令为【2】。
(3) E-mail地址由用户和域名两部分组成,这两部分的分隔符为【3】。
(4) 假设在当前盘当前目录下有一个可执行程序USER.EXE。现要执行该程序,并要求在执行过程中将显示输出的结果信息存入当前盘当前目录的文件OUT.DAT中,则完整的DOS命令为【4】。
(5) 在DOS环境下,表示打印机的设备文件名为【5】 。
(6) 若有语句
int i=-19,j=i%4;
printf(“%d\n”,j);
则输出结果是 【6】 。
(7) 若有程序
main()
{ int i,j;
scanf(“i=%d,j=%d”;&i,&j);
printf(“i=%d,j=%d\n”,i,j);
}
要求给i赋10,给j赋20,则应该从键盘输入 【7】 。
(8) 若有以下程序
main()
{ int p,a=5;
if(p=a!=0)
printf(“%d\n”,p);
else
printf(“%d\n”,p+2);
}
执行后输出结果是 【8】 。
(9) 若有以下程序
main()
{ int a=4,b=3,c=5,t=0;
if(a if(a printf(“%d %d %d\n”,a,b,c);
}
执行后输出结果是 【9】 。
(10) 若有以下程序
main()
{ int a[4][4]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0}};
int i,j,s=0;
for(i=0;i<4;i++)
{ for(j=0;j<4;j++)
{ if(a[i][j]<0)continue;
if(a[i][j]==0)break;
s+=a[i][j];
}
}
printf(“%d\n”,s);
}
执行后输出的结果是 【10】 。
(11) 若有以下程序
main()
{ char a;
a=’H'-’A'+’0′;
print(“%c\n”,a);
}
执行后的输出结果是 【11】 。
(12) 若有以下程序
int f(int x,int y)
{ return(y-x)*x; }
main()
{ int a=3,b=4,c=5,d;
d=f(f(3,4),f(3,5));
printf(“%d\n”,d);
}
执行后输出的结果是【12】。
(13) 函数YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
其构成规律是:
第0列元素和主对角线无素均为1
其余元素为其左上方和正上方元素之和
数据的个数每行递增1
请将程序补充完整。
#defint N 6
void YangHui(int *[N][N])
{ int i,j;
x[0][0]=1
for(i=1;i { x[i][0]= 【13】 =1;
for(j=1;j x[i][j]= 【14】 ;
}
}
(14) 以下函数的功能是删除字符串s中的所有数字字符。请填空。
void dele(char *s)
{ int n=0,i;
for(i=0,s[i];i++)
if(【15】)
s[n++]=s[i];
s[n]=【16】;
}
(15) 设函数findbig已定义为求3个数中的最大值。以下程序将利用函数指针调用findbig函数。请填空。
main()
{ int findbig(int,int,int);
int (*f)(),x,yz,z,big;
f=【17】;
scanf(“%d%d%d”,&x,&y,&z);
big=(*f)(x,y,z);
printf(“bing=%d\n”,big);
}
(16) 以下程序的输出结果是【18】 。
#defint MCRA(m) 2*m
#define MCRB(n,m) 2*MCRA(n)+m
main()
{ int i=2,j=3;
printf(“%d\n”,MCRB(j,MCRA(i)));
}
(17) 设有以下定义
struct ss
{ int info;struct ss *link;}x,y,z;
且已建立如下图所示链表结构:
□□ →□□→□□
X Y Z
请写出删除点y的赋值语句【19】 。
(18) 已有文本文件test.txt,其中的内容为:Hello,everyone!。以下程序中,文件test.txt已正确为”读”而打开,由文件指针fr指向该文件,则程序的输出结果是 【20】 。
#include
main()
{ FILE *fr; char str[40];
……
fgets(str,5,fr);
printf(“%s\n”,str);
fclose(fr);
}
2003年4月全国计算机等级考试二级C笔试答案
一、选择题
1-5:CDDAD 6-10:BACDB 11-15:CABDB 16-20:ADCAA
21-25:CBDAB 26-30:DCDAB 31-35:CBDCC 36-40:CCBAC
41-45:CAAAC 46-50:DBDDA
二、填空题
(1) 64
(2) COPY A.TXT+B.TXT A.TXT
(3) @
(4) USER >OUT.DAT
(5) PRN或LPT1或LPT2
(6) -3
(7) i=10,j=20
(8) 1
(9) 5 0 3
(10) 58
(11) 7
(12) 9
(13) x[i][i]和x[i-1][j-1]+x[i-1][j]
(14) !(s[i]>=’0′&&s[i]<=’9′)和’\0′
(15) findbig
(16) 16
(17) x.link=y.link;
(18) Hell