论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > C语言程序设计教程
Tag:新手,函数,指针,数据类型,对象,Turbo,入门,运算符,数组,结构,二级,,tc,游戏,试题,问答,编译,视频教程

1996年4月全国计算机等级考试二级试卷C语言(带答案)

文章类别:C语言程序设计 | 发表日期:2008-9-24 14:47:18

(考试时间120分钟,满分100分)
一、选择题((1)~(40)题每题1分,(41)~(50)题每题2分共60分)

下列各题 A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在度卷上不得分。

1.一个完整的计算机系统包括______
A)主机健盘与显示器 B)计算机与外部设备
C)硬件系统与软件系统 D)系统软件与应用软件

2.十六进制数1000转换成十制数是
A) 4096 B) 1024 C) 2048 D) 8192

3.十进制数269转换成十六进制数是
A)10E B)10D C)10C D)10B

4.假如用八位二进制补码表示带符号的定点整数, 则能表示的十进制数的范 围是
A) -127到+127 B) -128到+128 C) -127到+128 D) -128到+127

5.下列设备中,既可作为输入设备又可作为输出设备的是
A)鼠标器 B)打印机 C)键盘 D)磁盘驱动器

6.下列各叙述中,正确的是
A)正数二进制原码的补码是原码本身
B)所有的十进制数都能准确地转换为有限位二进制小数
C)汉字的计算机机内码就是国标码
D)存储器具有记忆能力,其中的信息任何时候都不会丢失

7.在下列操作中,能导致DOS系统重新启动但不进行系统自检的是
A)加电开机 B)按+

C)按++ D)按RESET按钮

8.假如给定一个带有通配符的文件名F * . ?,则在下列各文件中, 它能代表的文件名是
A) FA.EXE B) F.C C) EF.C D) FABC.COM

9.DOS系统启动后,下列文件中常驻内存的是
A)*.COM B)FORMAT.COM
C)AUTOEXEC.BAT D)COMMAND.COM

10.设A盘的目录结构为(画方框的为目录)
\
┌───┬───┼─────┬─────┬────┐
│ │ │ │ │ A.FOR
ABC [D1] DX.C Q.DAT [D2]
┌───┴┬───┬───┐ ┌──┼───┐
│ │ │ │ │ │ │
B.PAS [D3] Y.BAS A.C A1.C [D4] XYZ.C
┌───┴┬──┬────┐
QR.C NA.C A.TXT B.C
假如当前盘为C盘,A盘的当前目录为\D2,则下列对A盘上文件QR.C的指定中, 合法的是
A)\D2\D4\QR.C B)D4\QR.C
C)A:D4\QR.C D)A:D2\D4\QR.C

11.为了要将当前目录(不是根目录)中所有扩展名为.C的文件同名复制到A 盘的根目录\USER中,正确的命令是
A)COPY A:*.C USER\*.C B)COPY A:*.C A:\USER
C)COPY A:*.C A:USER\ D)COPY A:*.C A:USER\*.C

12.为了在屏幕上一次显示当前盘当前目录下的所有扩展名为.TXT的文件内容, 下列命令中正确的是
A)TYPE *.TXT B)TYPE *.TXT CON
C)COPY *.TXT >CON D)COPY *.TXT CON

13.设当前盘为A盘,为了将当前盘当前目录下的文件AB1.TXT连接在C 盘根目录下的文件XYZ.TXT的后面,正确的命令是
A)COPY C:\XYZ.TXT+AB1.TXT
B)COPY AB1.TXT >>C:\XYZ.TXT
C)TYPE AB1.TXT >C:\XYZ.TXT
D)COPY AB1.TXT+C:\XYZ.TXT >C:\XYZ.TXT

14.设A盘为启动盘,其目录结构为(画方框的为目录)
\
┌──────┴──────┐
[DOS] COMMAND.COM
┌───┴──────┐
[USER] AUTOEXEC.BAT
其中文件AUTOEXEC.BAT的内容为
MD \XYZ
CD \DOS\USER
则由A启动成功后,A盘的当前目录是
A)\DOS\USER B)XYZ
C)\ D)\DOS

15.下列DOS命令中为内部命令的是
A)COMP B)PATH
C)PRINT D)FORMAT

16.设当前盘为C盘,所用的所有软盘已格式化且容量相同,则下列DOS命令中错误的是
A)DISKCOPY A: C: B)DISKCOPY A: A:
C)COPY A:*.* D)COPY A:*.* C:

17.下列DOS命令中,有错误的是
A)TYPE AAB.FOR >PRN B)TYPE ?AB.FOR
C)COPY *.C PRN D)COPY CON PRN

18.设当前盘为C盘,在当前目录下有全部的DOS系统文件与批处理命令文件AB.BAT,且该批处理命令文件的内容为
FORMAT A:/4
MD \XYZ
CD \XYZ
RD \XYZ
MD \XYZ
假如在1.2M软盘驱动器A中插入一张360K容量的软盘片,执行批处理命令文件AB.BAT后,结果A盘的目录结构是
A)根目录
B)根目录── 子目录XYZ──子目录XYZ
C)根目录─┬ 子目录XYZ
└─ 子目录XYZ
D)根目录── 子目录XYZ

19.下列带有通配符的文件名中,能代表文件ABC.FOR的是
A)*.BC.? B)A?.*
C)?BC.* D)?.?

20.设当前盘为C盘,且C盘上含有子目录 \DOS,A盘为只有根目录的启动盘( 根目录下只有三个DOS系统文件与扩展名为 .C的文件).
下列命令组中的两个命令从效果上可以认为等价的是
A)DEL \DOS 与 RD \DOS
B)FORMAT A: 与 DEL A:*.*
C)FORMAT A:/S 与 DEL A:*.?
D)COPY A:F1 F2 与 REN A:F1 F2

21.设A`B和C都是INT型变量,且A=3,B=4,C=5,则一 表达式中,值为0的表达式是
A)'A'&&'B' B)A<=B
C)A││B+C&&BC D)!((A= 'A' && CH <= 'Z')? (CH +32):CH
上面表达式的值是
A)A B)a C)Z D)z

24.若X和Y都是INT型变量,X=100,Y=200,且有下面的程序片段:
PRINT("%D",(X,Y));
上面程序片段的输出结果是
A)200 B)100
C)100 200 D)输出格式符不够,输出不确定的值

25.下面各语句行中,能正是行赋字符串操作的语句行是
A) CHAR ST[4][5]={"ABCDE"};
B) CHAR S[5]={'A','B','C','D','E'};
C) CHAR *S; S="ABCDE";
D) CHAR *S; SCANF("%S",S);

26.若K是INT型变量,且有下面的程序片段:
K = -3;
IF(K<=0) PRINTF("####")
ELSE PRINTF("&&&&");
上面程序片段的输出结果是
A) #### B) &&&&
C) ####&&&& D) 有语法错误,无输出结果

27.若X是INT型变量,且有下面的程序片段:
FOR(X=3;X<6;X++) PRINTF((X%2)?("**%D"):("##%D\N"),X);
上面程序片段的输出结果是
A) **3 B) ##3 C)##3 D) **3##4
##4 **4 **4##5 **5
**5 ##5

28.请读程序:
#INCLUDE
F(CHAR *S)
{CHAR *P=S;
WHILE( *P ! ='\0') P++;
RETURN(P-S);
}
MAIN()
{ PRINTF("%D\N",F("ABCDEF"));}
上面输出结果是
A) 3 B) 6 C) 8 D) 0

29.请读程序:
#INCLUDE
MAIN()
{ INT A; FLOAT B, C;
SCANF("%2D%3F%4F",&A,&B,&C);
PRINTF("\NA=%D,B=%F,C=%F\N",A,B,C);
}
若运行时从键盘上输入9876543210(表示回车),则上面程序的输出结果是
A) A=98, B=765, C=4321
B) A=10, B=765.000000, C=4321.000000
C) A=98, B=765.0, C=4321.0

30.请读程序:
#INCLUDE < STDIO.D>
MAIN()
{ INT N[2],I,J,K;
FOR( I=0;I<2;I++) N[J]=N[I]+1;
PRINTF("%D\N", N[K]);
}
上面程序的输出结果是
A) 不确定的值 B) 3 C) 2 D) 1

31.请读程序片段:
CHAR STR[]="ABCD", *P=STR;
PRINTF("%D\N", *(P+4));
上面程序片段的输出结果是
A)68 B)0 C)字符'D'的地址 D)不确定的值(32)请读程序:
#INCLUDE
MAIN()
{ INT A,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);
}
上面程序的输出结果是
A) 7 B) 8 C) 9 D) 10

33.若要用下面的程序片段使指针变量P指向一个存储型变量的动态存储单元;
INT *P;
P =──── MALLOC( SIZEOF( INT));
则应填入
A) INT B) INT *
C) ( *INT) D) ( INT *)

34.请读程序片段(字符串内没有空格字符):
PRINTF("%D\N", STRLEN("ATS\N012\1\\"));
上面程序片段的输出结果是
A) 11 B) 10
C) 9 D) 8

35.请读程序:
#INCLUDE< STDIP.H>
#INCLUDE< STRING.H>
MAIN()
{ CHAR *SL="ABCDEF", *s2="aB';
s1++; s2++;
PRINTF("%D\N", STRCMP( s1,s2)
}
上面程序的输出结果是
A) 正数 B) 负数
C) 零 D) 不确定的值

36.请读程序:
#INCLUDE< STDIP.H>
FUNC( INT A, INT B)
{ INT C;
C=A+B;
RETURN C;
}
MAIN()
{ INT X=6,Y=7,Z=8,R;
R=FUNC((X--,Y++,X+Y),Z--);
PRINTF("%D\N",R);
}
上面程序的输出结果是
A) 11 B) 20
C) 21 D) 31

37.请读程序:
#INCLUDE< STDIO.H>
INT A[]={2,4,6,8};
MAIN()
{ INT I;
INT *P=A;
FOR(I=0;I<4;I++) A[I]= *P++;
PRINTF("%D\N",A[2]);
}
上面程序输出结果是
A) 6 B) 8
C) 4 D) 2

38.请读程序
#INCLUDE< STDIO.H>
CHAR FUN( CHAR *C)
{ IF( *C<='Z' && *C>='A') *C -='A'-'a';
RETURN *C;
}
MAIN()
{ CHAR S[81], *P=S;
GETS(S);
WHILE( *P)
{ *P=FUN(P); PUTCHAR( *P); P++;}
PUTCHAR('\N');
}
若运行时从键盘上输入OPEN THE DOOR(表示回车), 则一面的输出结果是
A) oPEN tHE dOOR
B) open the door
C) OPEN THE DOOR
D) Open The Door

39.请读程序:
#INCLUDE< STDIO.H>
VOID FUN( INT *S)
{ STATIC INT J=0;
DO
S[J] +=S[J+1];
WHILE( ++J<2);
}
MAIN()
{ INT K, A[10]={ 1,2,3,4,5};
FOR( K=1;K<3;K++) FUN(A);
FOR(K=0;K<5;K++) PRINTF("%D",A[K]);
}
上面程序输出结果是
A) 34756 B) 23445
C) 35745 D) 12345

40.请读程序:
#include< stdio.h>
#define SUB(X,Y) (X) * Y
main()
{int a=3,b=4;
printf("%d\n",SUB(a++,b++));
}
上面程序的输出结果是
A) 12 B) 15
C) 16 D) 20

41.请读程序:
#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

42.请读程序:
#include
main()
{ float x,y;
scanf("%f",&x);
if(x<0.0) y=0.0
else if((x<5.0)&&(x!=2.0))
y=1.0/(x+2.0);
else if(x<10.0) y=1.0/x;
else y=10.0;
printf("%f\n",y);
}
若运行时从键盘上输入2.0(表示回车),则上面程序的输出结果是
A) 0.000000 B) 0.250000
C) 0.500000 D) 1.000000

43.请读程序:
#include
main()
{ int x=1,y=0,a=0,b=0;
switch(x)
{ case 1:
switch(y)
{ case 0: a++;break;
case 1: b++;break;
}
case 2:
a++;b++;break;
}
printf("a=%d,b=%d\n",a,b);
}
上面程序输出结果是
A) a=2,b=1 B) a=1,b=1
C) a=1,b=0 D) a=2,b=2

44.若有下面的程序片段:
int a[12]={0}, *p[3], **pp,i;
for(i=0;i<3;i++)
p[i]=&a[i*4];
pp=p;
则对数组元素的错误引用是
A) PP[0][1] B) a[10] C) P[3][1] D) *(*(P+2)+2)

45.请读程序:
#include
#include
main()
{ float x,y,z;
scanf("%f%f",&x,&y,),
z=x/y;
while(1)
{ if(fabs(z)>1.0)
{x=y; y=z; z=x/y;
}
else break;
}
printf("%f\n",y);
}
若运行时从键盘上输入3.6 2.4(表示回车),则输出结果是
A) 1.500000 B) 1.600000 C) 2.000000 D) 2.400000]

46.请读程序:
#include
f(int b[],int n)
{int i,r;
r=1;
for(i=0;i<=n;i++) r=r*b[i];
return r;
}
main()
{ int x,a[]={2,3,4,5,6,7,8,9};
x=f(a,3);
printf("%d\n",x);
}
上面程序输出结果是
A) 720 B) 120 C) 24 D) 6

47.请读程序:
#include
#include
void fun(char *s)
{ char a[10];
strcpy(a,"STRING");
s=a;
}
main()
{ char *p;
fun(p);
printf("%s\n",p);
}
上面程序的输出结果是( 表示空格)
A) STRING B) STRING
C) STRING D) 不确定的值

48.若已建立下面的链表结构,指针P`S分别提向图中所示的结点,则不能将S所指的结点插入到链末尾的语句组是
data next
head ───┤ E │ │────┤ F │NULL│
↑p │

s ───→
A) s->next=NULL; p=p->next; p->next=s;
B) p=p->next; s->next=p->next; p->next=s;
C) P=P->NEXT; S->NEXT=P; P->next=s;
D) p=( *p).next; ( *s).next=( *p).next; ( *p).next=s;

49.请读程序:
#include
void fun(float *pl,float *p2,float *s)
{ s=(float *)calloc(1,sizeof( float));
*s= *pl + *(p2++)l
}
main()
{ float a[2]={1.1,2.2},b[2]={10.0,20.0}, *s=a;
fun(a,b,s);
printf("%f\n", *s);
}
上面程序的输出结果是
A) 11.100000 B) 12.100000
C) 21.100000 D) 1.100000

50.请读程序:
#include
#include
void fun(char *w,int m)
{ char s, *pl, *p2;
p1=w; p2=w+m-1;
while(pl
main()
{ static char b[]="Goodbye";
char *chp=&b[7];
while(--chp>=&b[0] putchar( *chp);
putchar('\n');
}

8.下面程序输出结果是 .
───
#include
void as( int x,int y,int *cp,int *dp)
{ *cp=x+y;
*dp=x-y;
}
main()
{ int a=4,b=3,c,d;
as(a,b,&c,&d);
printf("%d %d\",c,d);
}

9.请读程序:
#include
main(int argc,char *argv[])
{ int i;
printf("%d\n",argc);
for(i=0;i<=argc-1;i++) printf("%s ",argv[i]);
printf("\n");
}
若上面的程序编译`连接后生成可执行文件ABC.EXE,则输入以下命令行
abc filel file2(表示回车)
程序执行后的输出结果是
.
───

10.条件"20
#define N 5
fun( char *s,char a,int n)
{ int j;
*s=a; j=n;
while(e
void fun(char *al,char *a2,int n)
{ int k;
for( k=0;ks[k])
.
────
return k;
}

16.下面程序的输同结果是 .
───
#include
fun(int x)
{int p;
if(x==0││x==1) return(3);
p=x-fun(x-2);
return p;
}
main()
{printf("%d\n",fun(9));}

17.下面程序的输出结果是
.
───
#include
funa(int a,int b)
{return a+b;}
funb(int a,int b)
{return a-b;}
sub(int(*t)(),int x,int y;)
{return ((*t)(x,y));}
main()
{ int x,(*p)();
p=funa;
x=sub(p,9,3);
x+=sub(funb,8,3);
print("%d\n",x);

18.下面程序的输出结果是
.
──
#include
main()
{ char *p[]={"BOOL",OPK","H","SP"};
int i;
for(i=3;i>=0;i--,i--) printf("%c", *p[i]);
printf("\n");
}

19.为了建立如图所示的存储结构( 即每个结点含两个域, data 是数据域,next是指向结点的指针域,)请填空.
data next

┌─┐
struct link { char data; │19│}node;
└─┘
──

20.下面的的程序用来统计文件中字符的个数,请填空.
#include
main()
{ FILE *fp;
long num=0;
if((fp=fopen("fname.dat","r"))== NULL)
{printf("Can'topen file! \n"); exit(0);}
while
───
{ fgetc(fp); num++;}
printf("num=%d\n",num);
fclose(fp);
}

试题答案

一`选择题((1)~(40)题每题1分,(41)~(50)题每题2分,共60分)
(1) C (2) A (3) B (4) D (5) D
(6) A (7) C (8) B (9) D (10) C
(11) B (12) D (13) A (14) C (15) B
(16) A (17) B (18) A (19) C (20) C
(21) D (22) B (23) B (24) A (25) C
(26) D (27) D (28) B (29) C (30) A
(31) B (32) B (33) D (34) C (35) A
(36) C (37) A (38) B (39) C (40) A
(41) C (42) C (43) A (44) C (45) B
(46) B (47) D (48) C (49) D (50) C
二` 填空题(每空2分,共40分)
(第(2)`(3)空答应小写或大小写混合使用,其它空均须与答案一样)

(1) 外部 (2) DIR ?? C*.*(3) A:\X\Y\W\QR.C (4) 64(5) 92
(6) │6 │pow(sin(x),2) * (a+b)/(a-b) 或 sit(x) * sit(x) * (a+b)/(a-b)
(7) eybdooG (8) 7 1(9) 3abc.exe file1 file2 (注:两个答案,每个1分)
(10) │10│ ((20

视频教程列表
文章教程搜索
 
C语言程序设计推荐教程
C语言程序设计热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058