23.56 10 4写成c语言,1996年4月全国计算机等级考试二级C语言试卷(含答案)

阅读: 评论:0

23.56 10 4写成c语言,1996年4月全国计算机等级考试二级C语言试卷(含答案)

23.56 10 4写成c语言,1996年4月全国计算机等级考试二级C语言试卷(含答案)

一、选择题((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盘的目录结构为(画方框的为目录)

如果当前盘为C盘,A盘的当前目录为D2,则下列对A盘上文件QR.C的指定中,合法的是

A) D2D4QR.C                B) D4QR.C

C) A:D4QR.C                   D) A:D2D4QR.C

(11) 为了要将A盘当前目录(不是根目录)中所有扩展名为.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盘为启动盘,其目录结构为(画方框的为目录)

其中文件AUTOEXEC.BAT的内容为

MD XYZ

CD DOSUSER

则由A盘启动成功后,A盘的当前目录是

A) DOSUSER           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.2软盘驱动器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&&b-c            D) !((a

(22) 请读程序片段:

int i=65536; printf("%dn",i);

上面程序片段的输出结果是

A) 65536             B) 0           C) 有语法错误,无输出结果            D) -1

(23) 设ch是char型变量,其值为A,且有下面的表达式:

ch=(ch>=’A’&&ch<=’Z’)?(ch+32):ch

上面表达式的值是

A) A                B) a               C) Z                     D) z

(24) 若x和y都是int型变量,x=100,y=200,且有下面的程序片段:

printf("%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"):("##%dn"),x);

上面程序片段的输出结果是

A) **3             B) ##3           C) ##3             D) **3##4



(28) 请读程序:

#include

f(char *s)

{ char *p=s;

while( *p!=’’) p++;

return(p-s);

}

main()

{ printf("%dn",f("ABCDEF"));}

上面程序的输出结果是

A) 3         B) 6         C) 8          D) 0

(29) 请读程序:

#include

main()

{ int a; float b, c;

scanf("-?O",&a,&b,&c);

printf("na=%d, b=%f, c=%fn", a, b, c);

}

若运行时从键盘上输入9876543210(表示回车),则上面程序的输出结果是

A) a=98, b=765, c=4321                                    B) a=10, b=432, c=8765

C) a=98, b=765.000000, c=4321.000000          D) a=98, b=765.0, c=4321.0

(30) 请读程序:

#include

main()

{ int n[2], i, j, k;

for(i=0;i<2;i++) n[i]=0;

k=2

for(i=0;ifor(j=0;jprintf("%dn",n[k]);

}

上面程序的输出结果是

A) 不确定的值              B) 3             C) 2              D) 1

(31) 请读程序片段:

char str[]="ABCD", *p=str;

printf("%dn",*(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("%dn",a);

}

上面程序的输出结果是

A) 7            B) 8           C) 9             D) 10

(33) 若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元:

int *p;

p=__________ malloc( sizeof(int));

则应填入

A) int           B) inst *    C) (*int)       D) (int *)

(34) 请读程序片段(字符串内没有空格):

printf("%dn",strlen("ASn0121\"));

上面程序片段的输出结果是

A) 11          B) 10          C) 9            D) 8

(35) 请读程序:

#include

#include

main()

{ char*s1="AbCdEf", *s2="aB";

s1++; s2++;

printf("%dn",strcmp(s1,s2));

}

上面程序的输出结果是

A) 正数          B) 负数          C) 零          D) 不确定的值

(36) 请读程序:

#include

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("%dn",r);

}

上面程序的输出结果是

A) 11            B) 20             C) 21             D) 31

(37) 请读程序:

#include

int a[]={2,4,6,8};

main()

{ int i;

int *p=a;

for(i=0;i<4;i++) a[i]=*p++;

printf("%dn",a[2]);

}

上面程序的输出结果是

A) 6             B) 8             C) 4           D) 2

(38) 请读程序:

#include

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

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) 35743            D) 12345

(40) 请读程序:

#include

#define SUB(X,Y) (X)*Y

main()

{ int a=3, b=4;

printf("%d", SUB(a++, b++));

}

上面程序的输出结果是

A) 12             B) 15               C) 16                  D) 20

(41) 请读程序:

#include

main()

{ int mun=0;

while(num<=2)

{ num++; printf("%dn",num);}

}

上面程序的输出结果是

A) 1          B) 1            C) 1             D) 1



(42) 请读程序:

#include

main()

{ float x,y;

scan("%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("%fn",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=%dn",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;

scan("%f%f",&x,&y);

z=x/y;

while(1)

{ if(fabs(z)>1.0)

{ x=y; y=z; z=x/y;

}

else break

}

printf("%fn",y);

}

若运行时从键盘上输入3.6 2.4(表示回车),则输出的结果是

A) 1.500000              B) 1.600000             C) 2.000000             D) 2.400000

(46) 请读程序:

#include

f(in 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("%dn",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);

x=f(a, 3);

printf("%sn",p);

}

上面程序的输出结果是(└┘表示空格)

A) STRING└┘└┘└┘└┘            B) STRING

C) STRING└┘└┘└┘                    D) 不确定的值

(48) 若已建立下面的链表结构,指针p、s分别指向图中所示的结点,则不能将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=*p1+ *(p2++);

}

main()

{ float a[2]={1.1, 2.2}, b[2]={10.0, 20.0}, *s=a;

fun(a, b, s)

printf("%fn",*s);

}

上面程序的输出结果是

A) 11.100000          B) 12.100000            C) 21.100000            D) 1.100000

(50) 请读程序:

#include

#include

void fun( char *w, int m)

{ char s, *p1, *p2;

p1=w; p2=w+m-1;

while (p1{ s=*p1++; *p1=*p2--; *p2=s;}

}

main()

{ char a[]="ABCDEFG";

fun( a, strlen(a));

puts(a);

}

上面程序的输出结果是

A) GFEDCBA           B) AGADAGA

C) AGAAGAG          D) GAGGAGA

二、填空题(每空2分,共40分)

请将每空的正确答案写在答题卡上【1】-【20】序号后的横线上,答在试卷上不得分。

(1) DOS命令分为内部命令与外部命令,XCOPY命令是 【1】 命令

(2) 为了列出当前盘当前目录中所有第三个字符为C的文件名的有关信息,应该用命令 【2】 。

(3) 设当前盘为A盘,当前目录为XY,A盘上的一个文件QR.C在当前目录下的子目录W中。现已将A盘的当前目录改为DXY,当前盘改为C盘,如需指定A盘上该文件应写成 【3】 。

(4) 用十六进制给存储器中的字节地址进行编号,其地址编号是从0000到FFFF,则该存储器的容量是【4】KB。

(5) 设有两个八位二进制数00010101与01000111相加,其结果的十进制表示为 【5】 。

(6) 数学式子 写成C语言表达式是 【6】 。

(7) 下面程序的输出结果是 【7】 。

#include

main()

{ static char b[]="Goodbye";

char *chp=&b[7];

while( --chp >=&b[0]) putchar( *chp);

putchar(’n’);

}

(8) 下面程序的输出结果是 【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 %dn", c, d);

}

(9) 请读程序:

#include

main( int argc, char *argv[])

{ int i;

printf( ’%dn", argc);

for( i=0; i<=argc+1; i++) printf( "%s ", argv[i]);

printf("n");

}

若上面的程序编译、连接后生成可执行文件ABC.EXE,则输入以下命令行

abc file1 file2(表示回车)

程序执行后的输出结果是 【9】 。

(10) 条件“20

(11) 设二进制数a是00101101,若想通过异或运算a^b使a的高4位取反,低4位不变,则二进制数b应是 【11】 。

(12) 若有以下说明和定义语句,则变量w在内存中所占的字节数是 【12】 。

union aa

{ float x, y;

char c[6];

};

struct st { union aa v; float w[5]; double ave; } w;

(13) 下面程序的输出结果是 【13】 。

#include

#define N 5

fun( char *s, char a, int n)

{ int j;

*s=a; j=n;

while( ereturn j;

}

main()

{ char s[N+1];

int k, p;

for( k=1; k<=N; k++)

s[k]=’A’+k+1;

printf( "%dn", fun(s, ’E’, N));

}

(14) 下面程序的输出结果是 【14】 。

#include

void fun( char *a1, char *a2, int n)

{ int k;

for( k=0; ka2[k]=( a1[k]-’A’-3+26)&+’A’;

a2[n]=’’;

}

main()

{ char s1[5]="ABCD", s2[5];

fun( s1, s2, 4);

puts( s2);

}

(15) 下面的findmax函数返回数组s中最大元素的下标,数组中元素的个数由t传入,请填空。

findmax( int s[], int t)

{ int k, p;

for( p=0, k=p; pif( s[p]>s[k]) 【15】 。

return k;

 }

(16) 下面程序的输出结果是 【16】 。

#include

fun( int x)

{ int p;

if( x==0||x==1) return(3);

p=x-fun( x-2);

return p;

}

main()

{ printf( "%dn", fun(9));}

(17) 下面程序的输出结果是 【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);

printf("%dn", x);

}

(18) 下面程序的输出结果是 【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’t open file! n"); exit(0);}

while 【20】

{ fgetc(fp); num++;}

printf("num=%dn", num);

fclose(fp);

}

1996年4月二级C语言笔试试卷参考答案

一`选择题((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:XYWQR.C

(4) 64

(5) 92

(6) pow(sin(x),2) * (a+b)/(a-b) 或 sit(x) * sit(x) * (a+b)/(a-b)

 (7) eybdooG

 (8) 7 1

 (9) 3  file1 file2 (注:两个答案,每个1分)

 (10) ((20 (11) 11110000

 (12) 34

 (13) 3

 (14) XYZA

 (15) k=p

 (16) 7

 (17) 17

 (18) SO

 (19) struct link *next

 (20) (!feof(fp))或(feof(fp)==0)    育路网

本文发布于:2024-02-01 20:41:44,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170679130539299.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23