c语言s1=1 3 5 99,1999年4月全国计算机等级考试二级C语言笔试试题及答案

这是一份关于计算机基础知识和C语言程序设计的考试试题,包括选择题和填空题,涵盖了操作系统、数据存储、编程语言、病毒特征、数据类型、输入输出等多个方面的知识。试题涉及DOS命令、内存管理、字符串处理、文件操作、循环结构、函数调用等内容,旨在测试考生对计算机基础知识和C语言编程的掌握程度。
摘要由CSDN通过智能技术生成

一、选择题((1)-(40)每小题1分, (41)-(50)每小题2分, 共60分)

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

(1)微型计算机的性能主要取决于

A.内存

B.中央处理器

C.硬盘

D.显示卡

(2)有一个数值152,它与十六进制数6A相等,那么该数值是

A.二进制数

B.八进制数

C.十进制数

D.四进制数

(3)使用超大规模集成电路制造的计算机应该归属于

A.第一代

B.第二代

C.第三代

D.第四代

(4)已知英文字母a的ASCII代码值是十六进制数61H,那么字母d的ASCII代码值是

A.34H

B.54H

C.24H

D.64H

(5)一片存储容量是1.44MB的软磁盘,可以存储大约140万个

A.ASCII字符

B.中文字符

C.磁盘文件

D.子目录

(6)在MS-DOS环境中同时按下[Ctrl]和[Break]两个键,其作用是

A.终止当前操作

B.暂停当前操作

C.关机

D.热启动

(7)将二进制数10000001转换为十进制数应该是

A.127

B.129

C.126

D.128

(8)磁盘处于写保护状态,那么磁盘中的数据

A.不能读出,不能删改,也不能写入新数据

B.可以读出,不能删改,也不能写入新数据

C.可以读出,可以删改,但不能写入新数据

D.可以读出,不能删改,但可以写入新数据

(9)微型机启动后,DOS提示符是C:\>,现提示符变为C:\USER>,则说明刚执行过命令

A.PROMPT

B.PROMPT USER

C.PROMPT SP$G

D.CD USER

(10)MS-DOS文件系统目录的组织形式属于

A.关系型结构

B.网络型结构

C.树型结构

D.直线型结构

(11)应用软件系统TH的总容量大约1MB,其主要程序文件存放在C:\TH目录中,而数据文件存放在C:\TH\DATA目录中,如果将它们完整地复制到A盘, 应该使用的命令是

A.XCOPY C:\TH A:\

B.XCOPY C:\TH A:\ /S

C.XCOPY C:\TH A:\ /M

D.XCOPY C:\TH A:\ /P

(12)执行COPY A.TXT+B.TXT 这个DOS命令后,得到的磁盘文件是

A.A.TXT

B.B.TXT

C.AB.TXT

D.A+B.TXT

(13)在WINDOWS中,将一个应用程序窗口最小化之后,得到的磁盘文件是

A.仍在后台运行

B.暂时停止运行

C.完全停止运行

D.出错

(14)CD-ROM属于

A.感觉媒体

B.表示媒体

C.表现媒体

D.存储媒体

(15)在因特网(Internet)中电子公告板的缩写是

A.FTP

B.WWW

C.BBS

D.E-mail

(16)设x、y、z和k都是int型变量,则执行表达式:x=(y=4,z=16,k=32)后,x的值为

A.4

B.16

C.32

D.52

(17)设有如下的变量定义:

int i=8, k, a, b;

unsigned long w=5;

double x=1, 42, y=5.2;

则以下符合C语言语法的表达式是

A.a+=a-=(b=4)*(a=3)

B.x%(-3);

C.a=a*3=2

D.y=float(i)

(18)假定有以下变量定义:

int k=7,x=12;

则能使值为3的表达式是

A.x%=(k%=5)

B.x%=(k-k%5)

C.x%=k-k%5

D.(x%=k)-(k%=5)

(19)以下叙述中正确的是

A.输入项可以是一个实型常量,如:scakf("%f",3.5);

B.只有格式控制,没有输入项,也能正确输入数据到内存,例如:scakf("a=%d,b=%d");

C.当输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如:scakf("%4.2f",&f);

D.当输入数据时,必须指明变量地址,例如:scakf("%f",&f);

(20)设x和y均为int型变量,则以下语句:x+=y,y=x-y;x-=y;的功能是

A.把x和y按从大到小排列

B.把x和y按从小到大排列

C.无确定结果

D.交换x和y中的值

(21)以下程序的输出结果是

A.10 10

B.12 12

C.11 10

D.11 13

main()

{ int a=12,b=12;

printf("%d,%d\n",- -a,+ +B);

}

(22)以下程序运行后,输出结果是

A.cde

B.字符c的ASCII码值

C.字符c的地址

D.出错

main()

{ char *s="abcde";

s+=2;

printf("%ld\n",s);

}

(23)以下程序输出结果是

A.7

B.6

C.5

D.4

main()

{ int m=5;

if(m++>5)printf("%d\n",m);

esle printf("%d\n",m- -);

}

(24)当a=1,b=3,c=5,d=5时,执行下面一段程序后,x的值为

A.1

B.2

C.3

D.6

if(a

if(c else

if(a

if(b else x=3;

else x=6;

else x=7;

(25)在执行以下程序时,如果从键盘上输入,ABCdef,则输出为

A.ABCdef

B.abcDEF

C.abc

D.DEF

#include

main()

{ char ch;

while((ch=getchar())!='\n')

{ if(ch>='A' && ch<='Z')ch=ch+32;

else if(ch>='a' && ch<='z')ch=ch-32;

printf("%c",ch);

}

printf("\n");

}

(26)下面能正确进行字符串赋值操作的语句是

A.char s[5]={"ABCDE"};

B.char s[5]={'A','B','C','D','E'};

C.char *s;s="ABCDEF";

D.char *s; scanf("%s",s);

(27)执行以下程序段时

A.循环体将执行一次

B.循环体将执行两次

C.循环体将执行无限次

D.系统将提示有语法错误

X=-1;

do {x=x*x; } while(! x);

(28)执行以下程序后,输出的结果是

A.-1

B.1

C.8

D.0

main ()

{ int y=10;

do { y - -;} while(- - y);

printf("%d\n",y - -);

}

(29)在下列选项中,没有构成死循环的程序段是

A.int i=100

B.for( ; ;);

while(1)

{ i=i0+1;

if(i>100)break;

}

C.int k=1000;

D.int s=36;

do{++k;} while(k>=10000); while(s);--s;

(30)执行语句: for(i=l:i++<4:);后,变量i的值是

A.3

B.4

C.5

D.不定

(31)以下程序运行后,如果从键盘上输入ABCDE,则输出结果为

A.8

B.7

C.6

D.5

#include

#include

func

{ int num=0;

while(*(str+num)!='\0')num++;

return(num);

}

main()

{ char str[10],*p=str;

gets(p); printf("%d\n",func(p));

}

(32)运行以下程序后,如果从键盘上输入 china#,则输出结果为

A.2,0

B.5,0

C.5,5

D.2,5

#include

mair()

{ int v1=0,v2=0;

char ch;

while((ch=getchar())!='#')

switch(ch)

{ case 'a';

case 'h';

default; v1++;

case '0'; v2++;

}

printf("%d,%d\n",v1,v2);

}

(33)若以下程序所生成的可执行文件名为filel.exe;当打入以下命令执行该程序时;

FILEL CHINA BEIJING SHANGHAI

程序的输出结果是

A.CHINA BEIJING SHANGHAI

B.FILEL CHINA BEIJING

C.C B S

D.F C B

main(int argc,char *argv[])

{ while(arge-->0)

{ ++argv;printf("%s ",*argv);}

}

(34)下面程序运行的结果是

A.2ba56

B.6521

C.6

D.62

main()

{ char ch[7]={65ab21"};

int i,s=0

for(i=0;ch[i]>='0' && ch[i]<='9';i+=2)

s=10*s+ch[i]-'0';

printf("%d\n",s);

}

(35)运行下面的程序,如果从键盘上输入:

ab

c

def

则输出结果为

A.a

B.a

C.ab

D.abcdef

b b c

c c d

d d

e

f

#include

#define N 6

main()

{ char c[N];

int i=0;

for( ;i

for( i=0;i }

(36)以下程序运行后,输出结果是

A.8

B.7

C.6

D.5

#include

ss(char *s)

{ char *p=s;

while(*p)p++;

return(p-s);

}

main()

{ char *a="abded";

int i;

i=ss(a);

printf("%d\n",i);

}

(37)以下程序运行后,输出结果是

A.8,15

B.8,16

C.8,17

D.8,8

func(int a, int

B.

{ static int m=0,i=2;

i+=m+1;

m=i+a+b;

return(m);

}

main()

{ int k=4,m=1,p;

p=func(k,m);printf("%d,",p);

p=func(k,m);printf("%d\n",p);

}

(38)以下程序运行后,输出结果是

A.49.5

B.9.5

C.22.0

D.45.0

#include

#define PT 5.5

#define S(x)PT* x * x

main()

{ int a=1,b=2;

printf("%4.1f\n",S(a+

B.);

}

(39)以下程序运行后,输出结果是

A.ABCDEFG

B.CDG

C.abcdefgh

D.abCDefGh

main()

{ static char a[]="ABCDEFGH",b[]="abCDefGh";

char *p1,*p2;

int k;

p1=a; p2=b;

for(k=0;k<=7;k++)

if(*(p1+k)==*(p2+k))

printf("%c",*(p1+k));

printf("\n");

)

(40)以下程序运行后,a的值是

A.4

B.1

C.0

D.运行时出错,a无定值

main()

{ int a,k=4,m=6,*p1=&k,*p2=&m;

a=p1==&m;

printf("%d\n",a);

}

(41)以下程序运行后,输出结果是

A.84

B.99

C.95

D.44

int d=1;

fun(int p)

{ int d=5;

d+=p++;

printf("%d,

D.;

}

main()

{ int a=3;

fun(a);

d+=a++;

printf("%d\n,

D.;

}

(42)以下程序运行后,输出结果是

A.6385

B.22

C.33

D.693825

main()

{ char ch[2][5]={'693","825"},*p[2];

int i,j,s=0;

for(i=0;i<2;i++)p[i]=ch[i];

for(i=0;i<2;i++)

for(j=0;p[i][j]='0' && p[i][j]<='9';j+=2)

s=10*s+p[i][j]-'0';

printf("%d\n",s);

}

(43)以下程序运行后,输出结果是

A.1

B.7

C.9

D.11

fut(int **s, int p[2][3])

{ **s=p[1][1];}

main()

{ int a[2][3]={1,3,5,7,9,11}, *p;

p=(int *)malloc(sizeof(int));

fut(&p,a);

printf("%d\n",*P);

}

(44)设有如下定义:

int a=1,b=2,c=3,d=4,m=2,n=2:

则执行表达式:(m=a>

B.&&(n=c>

D.后,n的值为

A.1

B.2

C.3

D.0

(45)在执行以下程序时,为了使输出结果为:t=4,则给a和b输入的值应满足的条件是

A.a>b

B.a<0 0 0   D.>a>b

main()

{ int s,t,a,b;

scanf("%d,%d",&a,&

B.;

s=1; t=1;

if(a>0)s=s+1;

if(a>

B.t=s+t;

else if(a==

B.t=5;

else t=2*s;

printf("t=%d\n",t);

}

(46)以下程序的输出结果是

A.x=4

B.x=8

C.x=6

D.x=12

main()

{ int i,j,x=0;

for(i=0;i<2;i++)

{ x++;

for(j=0;j<=3;j++)

{ if(j%2)continue;

x++;

}

x++;

}

printf("x=%d\n",x);

}

(47)以下程序运行后,输出结果是

A.1234567

B.7654321

C.1711717

D.7177171

#inchude

#inchude

fun(char *w, int n)

{ char t, *s1,*s2;

s1=w: s2=w+n-1;

while(s1

{ t=*s1++;

*s1=*s2--;

*s2=t;

}

}

main()

{ char *p;

p="1234567";

fun(p,strlen(p));

puts(p);

}

(48)运行以下程序后,如果从键盘上输入65 14,则输出结果为:

A.m=3

B.m=2

C.m=1

D.m=1

main()

{ int m, n;

printf("Enter m,n;"); scanf("%d%d", &m,&n):

while (m!=n)

{ while (m>n)m-=n;

while (n>m)n-=m;

}

printf("m=%d\n",m);

}

(49)以下程序运行后,如果从键盘上输入:

book

book

则输出的结果是

A.*8

B.#9

C.#6

D.*9

#include

main()

{ char a1[80],a2[80],*s1=a1, *s2=a2;

gets(s1); gets(s2);

if(! strcmp(s1,s2))printf("*");

esle printf("#");

printf("%d/n",strlen(strcat(s1,s2)));

}

(50)以下程序运行后,输出结果是

A.10000

B.10010

C.00110

D.10100

main()

{ int y=18,i=0,j,a[8];

do

{ a[i]=y%2; i++

y=y/2;

} while(y>=1)

for(j=i-1;j>=0;j--)printf("%d",a[j];

printf("\n");

}

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

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

(1) DOS中的自动批处理文件的全名是 【1】 。

(2) 在DOS启动盘中,除COMMAND.COM外,还有两个必备的系统文件,它们是MSDOS.SYS(或IBMDOS.COM)与【2】 。

(3) 在DOS下,要将当前目录中AB.TXT文件设置为只读属性,应该使用的完整命令行是【3】 。

(4) 在DOS下,要查看当前目录中所有批处理文件的总字节数,应该使用的完整命令行是 【4】 。

(5) 计算机病毒除有破坏性、潜伏性和激发性外, 还有一个最明显的特性是 【5】 。

(6) 若想通过以下输入语句使a中存放字符串1234,b中存放字符5,则输入数据的形式应该是【6】

 :

 .

 char a[10],b;

 scanf("a=%s b=%c",a,&b);

 :

 .

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

 char b[]="ABCD";

 main()

 { char *chp;

 for(chp=b; *chp: chp+=2) printf("%s",chp);

 printf("\n");

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

 #define MAX 3

 int a [MAX];

 main()

 { fun1( ); fun2( a ); printf("\n");}

 fun1( )

 { int k, t=0;

 for (k=0; k

 }

 fun2(int b[])

 { int k;

 for(k=0; k

 }

(9) 以下程序输出的是 【9】

 main( )

 { int a[10]={19,23,44,17,37,28,49,36}, *p;



 p=a;

 printf("%d\n",(p+=3)[3]);

 }

(10) 以下程序输出的是 【10】

 main( )

 { int i=3, j=2;

 char *a="DCBA";

 printf("%c%c\n",a[i],a[j]);

 }

(11) 以下函数的功能是,把两个整数指针所指的存储单元中的内容进行交换。请填空。

 exchange(int *x, int *y)

 { int t;

 t=*y; *y= 【11】 ; *x= 【12】 ;

 }

(12) 若以下定义和语句,则sizeof(a)的值是 【13】 ,而sizeof(b)的值是 【14】

 struct { int day; char mouth; int year;} a, *b;

 b=&a;

(13) 以下fun函数的功能是:累加数组元数中的值.n为数组中元素的个数, 累加的和值放入x所指的存储单元中,请填空.

 fun(int b[ ],int n, int *x)

 { int k, r=0;

 for(k=0;k 【16】 =r;

 }

(14) 变量root有如图所示有存储结构,其中sp是指向字符串的指针域,next 是指向该结构的指针域,data用以存放整型数. 请填空 , 完成此结构的类型说明和变量root的定义

 struct list

 { char *sp;

 【17】 ;

 【18】 ;

 }root;

(15) 下面程序把从终端读入的10个整数以二进制方式写到一个名为bi.dat的新文件中,请填空.

 #include FILE *fp;

 main()

 { int i,j;

 if((fp=fopen( 【19】, "wb"))==NULL) exit(0);

 for(i=0; i<10; i++)

 { scanf("%d",&j);

 fwrite(&j,sizeof(int),1, 【20】 );

 }

 fclose(fp);

}

1999年4月基础知识知识和C语言程序设计答案及评分标准



一.选择((1)~(40)题每题1分,(41)~(50)题 每题 2分,共60分)

 (1)B (2)B (3)D (4)D (5)A (6)A (7)B (8)B (9)D (10)C

(11)B (12)A (13)A (14)D (15)C (16)C (17)A (18)D (19)D (20)D

(21)D (22)C (23)B (24)B (25)B (26)C (27)A (28)D (29)C (30)C

(31)D (32)C (33)A (34)C (35)C (36)D (37)C (38)B (39)B (40)C

(41)A (42)A (43)C (44)B (45)C (46)B (47)C (48)C (49)B (50)B

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

 (1) 【1】 AUTOEXEC.BAT

 (2) 【2】 IO.SYS 或IBMBIO.COM

 (3) 【3】 ATTRIB AB.TXT+R AB .TXT

 (4) 【4】 DIR *.BAT或DIR *.BAT\P或DIR *.BAT/W 或DIR*.BAT/W/P或*.BAT/P/W

 (5) 【5】 传染性或传播性

 (6) 【6】 a=1234 b=5 A或a=1234b=5

 (7) 【7】 ABCDCD

 (8) 【8】 024

 (9) 【9】 49

 (10) 【10】AB

 (11) 【11】*X (11) 12 T

 (12) 【13】5 (12) 14 2

 (13) 【15】r+b[k]或b[k]或*(b+k)+r (13) 【16】*x

 (14) 【17】struct list *next (14) 【18】 int data

 说明:以上两个答案(17和18)次序可以颠倒.

 (15) 【19】"bi.dat" (15) 【20】 fp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值