您的当前位置:首页正文

全国计算机等级考试试题和答案

2023-07-10 来源:榕意旅游网
2003年9月全国计算机等级考试二级C语言笔试试题及答案 计算机二级考试 (考试时间120分钟,满分100分) 一、选择题((1)~(40)每题1分,(41)~(50)每题2分,共60分) (1)在计算机中,一个字节所包含二进制位的个数是 A.2 B.4 C.8 D.16

(2)在多媒体计算机中,CD-ROM属于 A.存储媒体 B.传输媒体 C.表现媒体 D.表示媒体

(3)在DOS系统中,带有通配符的文件名*.*表示 A.硬盘上的全部文件

B.当前盘当前目录中的全部文件 C.当前盘上的全部文件 D.根目录中的全部文件

(4)十六进制数100转换为十进制数为 A.256 B.512 C.1024 D.64

(5)能将高级语言编写的源程序转换为目标程序的软件是 A.汇编程序 B.编辑程序 C.解释程序 D.编译程序

(6)在Internet中,用于在计算机之间传输文件的协议是 A.TELNET B.BBS C.FTP D.WWW

(7)在Windows环境下,资源管理器左窗口中的某文件夹左边标有\"+\"标记表示 A.该文件夹为空

B.该文件夹中含有子文件夹

C.该文件夹中只包含有可执行文件 D.该文件夹中包含系统文件

(8)在Windows环境下,下列叙述中正确的是 A.在\"开始\"菜单中可以增加项目,也可以删除项目 B.在\"开始\"菜单中不能增加项目,也不能删除项目 C.在\"开始\"菜单中可以增加项目,但不能删除项目 D.在\"开始\"菜单中不能增加项目,但可以删除项目

(9) 从Windows环境进入DOS方式后,返回Windows环境的命令为

A.QUIT B.WIN C.EXIT D.ESC

(10) 下列叙述中正确的是

A.计算机病毒只感染可执行文件 B.计算机病毒只感染文本文件

C.计算机病毒只能通过软件复制的方式进行传播

D.计算机病毒可以通过读写磁盘或网络等方式进行传播 (11)以下叙述中正确的是

A.C程序中注释部分可以出现在程序中任意合适的地方 B.花括号\"{\"和\只能作为函数体的定界符

C.构成C程序的基本单位是函数,所有函数名都可以由用户命名 D.分号是C语句之间的分隔符,不是语句的一部分 (12)以下选项中可作为C语言合法整数的是 A.10110B B.0386 C.0Xffa D.x2a2

(13)以下不能定义为用户标识符的是 A.scanf B.Void C._3com_ D.int

(14)有以下程序 main()

{ int a; char c=10;

float f=100.0; double x; a=f/=c*=(x=6.5);

printf(\"%d %d %3.1f %3.1f\\n\ }

程序运行后的输出结果是 A.1 65 1 6.5 B.1 65 1.5 6.5 C.1 65 1.0 6.5 D.2 65 1.5 6.5

(15)以下选项中非法的表达式是 A.0<=x<100 B.i=j==0

C.(char)(65+3) D.x+1=x+1 (16)有以下程序 main()

{ int a=1,b=2,m=0,n=0,k;

k=(n=b>a)||(m=a printf(\"%d,%d\\n\ }

程序运行后的输出结果是 A.0,0 B.0,1 C.1,0 D.1,1

(17)有定义语句:int x, y;,若要通过scanf(\"%d,%d\语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是 A.11 12<回车> B.11, 12<回车> C.11,12<回车> D.11,<回车> 12<回车>

(18)设有如下程序段: int x=2002, y=2003; printf(\"%d\\n\ 则以下叙述中正确的是

A.输出语句中格式说明符的个数少于输出项的个数,不能正确输出 B.运行时产生出错信息 C.输出值为2002 D.输出值为2003

(19)设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是 A.x=x*100+0.5/100.0; B.x=(x*100+0.5)/100.0;

C.x=(int)(x*100+0.5)/100.0; D.x=(x/100+0.5)*100.0;

(20)有定义语句:int a=1,b=2,c=3,x;,则以下选项中各程序段执行后,x的值不为3的是

A. if (c else if (b else x=3; else x=1; C. if (a<3) x=3;

D.if (a if (a<2) x=2; if (b if (a<1) x=1; if (c (21)有以下程序 main()

{ int s=0,a=1,n; scanf(\"%d\ do

{ s+=1; a=a-2; } while(a!=n); printf(\"%d\\n\ }

若要使程序的输出值为2,则应该从键盘给n输入的值是 A.-1 B.-3

C.-5 D.0

(22)若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0) s=a;

for(b=1;b<=c;b++) s=s+1;

则与上述程序段功能等价的赋值语句是 A.s=a+b; B.s=a+c; C.s=s+c; D.s=b+c;

(23)有以下程序 main()

{ int k=4,n=0; for( ; n { n++;

if(n%3!=0) continue; k--; }

printf(\"%d,%d\\n\ }

程序运行后的输出结果是 A.1,1 B.2,2 C.3,3 D.4,4

(24)要求以下程序的功能是计算:s= 1+1/2+1/3+……+1/10 (资料来源:东方教育网 http://www.eastedu.com.cn) main()

{ int n; float s; s=1.0;

for(n=10;n>1;n--) s=s+1/n;

printf(\"%6.4f\\n\ }

程序运行后输出结果错误,导致错误结果的程序行是 A.s=1.0;

B.for(n=10;n>1;n--) C.s=s+1/n;

D.printf(\"%6.4f\\n\

(25)已定义ch为字符型变量,以下赋值语句中错误的是 A.ch='\\'; B.ch=62+3; C.ch=NULL; D.ch='\\xaa';

(26)若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是

A.函数调用可以作为独立的语句存在 B.函数调用可以作为一个函数的实参 C.函数调用可以出现在表达式中 D.函数调用可以作为一个函数的形参 (27)有以下函数定义:

void fun(int n, double x) { …… }

若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是 A.fun(int y,double m); B.k=fun(10,12.5); C.fun(x,n); D.void fun(n,x); (28)有以下程序

void fun(char *a, char *b) { a=b; (*a)++; } main()

{ char c1='A',c2='a',*p1,*p2; p1=&c1; p2=&c2; fun(p1,p2); printf(\"%c%c\\n\ }

程序运行后的输出结果是 A.Ab B.aa C.Aa D.Bb

(29)若程序中已包含头文件stdio.h,以下选项中,正确运用指针变量的程序段是 A.int *i=NULL; B. float *f=NULL; scanf(\"%d\ C.char t='m', *c=&t; D.long *L; *c=&t; L='\\0';

(30)有以下程序 #include main()

{ printf(\"%d\\n\ 程序运行后的输出结果是 A.0 B.1 C.-1

D.NULL没定义,出错

(31)已定义c为字符型变量,则下列语句中正确的是 A.c='97'; B.c=\"97\";

C.c=97; D.c=\"a\";

(32)以下不能正确定义二维数组的选项是 A.int a[2][2]={{1},{2}}; B.int a[][2]={1,2,3,4}; C.int a[2][2]={{1},2,3}; D.int a[2][]={{1,2},{3,4}};

(33)以下选项中不能正确把cl定义成结构体变量的是 A.typedef struct B.struct color cl { int red; { int red; int green; int green; int blue; int blue; } COLOR; }; COLOR cl; C.struct color D.struct

{ int red; { int red; int green; int green; int blue; int blue; } cl; } cl;

(34)以下能正确定义一维数组的选项是 A.int num[];

B. #define N 100 int num[N]; C.int num[0..100]; D.int N=100; int num[N];

(35)下列选项中正确的语句组是 A.char s[8]; s={\"Beijing\ B.char *s; s={\"Beijing\C.char s[8]; s=\"Beijing\"; D.char *s; s=\"Beijing\"; (36)已定义以下函数 fun(int *p) { return *p; }

该函数的返回值是 A.不确定的值

B.形参p中存放的值

C.形参p所指存储单元中的值 D.形参p的地址值

(37)下列函数定义中,会出现编译错误的是 A.max(int x,int y,int *z) B.int max(int x,y)

{ *z=x>y ? x:y; } { int z;

z=x>y ? x:y; return z; }

C.max(int x,int y) D.int max(int x,int y) { int z; { return(x>y?x:y); } z=x>y?x:y; return(z); }

(38)有以下程序 #include

#define F(X,Y) (X)*(Y) main()

{ int a=3, b=4;

printf(\"%d\\n\ }

程序运行后的输出结果是 A.12 B.15 C.16 D.20

(39)有以下程序 fun(int a, int b) { if(a>b) return(a); else return(b); }

main()

{ int x=3, y=8, z=6, r; r=fun(fun(x,y), 2*z); printf(\"%d\\n\ }

程序运行后的输出结果是 A.3 B.6 C.8 D.12

(40)若有定义:int *p[3];,则以下叙述中正确的是

A.定义了一个基类型为int的指针变量p,该变量具有三个指针

B.定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针 C.定义了一个名为*p的整型数组,该数组含有三个int类型元素

D.定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素 (41)以下程序中函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址 #include #include

char *scmp(char *s1, char *s2) { if(strcmp(s1,s2)<0) return(s1);

else return(s2); }

main()

{ int i; char string[20], str[3][20]; for(i=0;i<3;i++) gets(str[i]);

strcpy(string,scmp(str[0],str[1])); /*库函数strcpy对字符串进行复制*/ strcpy(string,scmp(string,str[2])); printf(\"%s\\n\ }

若运行时依次输入:abcd、abba和abc三个字符串,则输出结果为 A.abcd B.abba C.abc D.abca (42)有以下程序 struct s

{ int x,y; } data[2]={10,100,20,200}; main()

{ struct s *p=data;

printf(\"%d\\n\ }

程序运行后的输出结果是 A.10 B.11 C.20 D.21

(43)有以下程序段 main()

{ int a=5,*b,**c; c=&b; b=&a; …… }

程序在执行了c=&b;b=&a;语句后,表达式:**c的值是 A.变量a的地址 B.变量b中的值 C.变量a中的值 D.变量b的地址 (44)有以下程序 #include main()

{ char str[][20]={\"Hello\

printf(\"%d\\n\}

程序运行后的输出结果是 A.0 B.5 C.7 D.20

(45)已定义以下函数 fun(char *p2, char *p1)

{ while((*p2=*p1)!='\\0'){ p1++;p2++; } } 函数的功能是

A.将p1所指字符串复制到p2所指内存空间 B.将p1所指字符串的地址赋给指针p2

C.对p1和p2两个指针所指字符串进行比较

D.检查p1和p2两个指针所指字符串中是否有'\\0' (46)有以下程序 main()

{ int x=3, y=2, z=1; printf(\"%d\\n\}

程序运行后的输出结果是 A.3 B.2 C.1 D.0

(47)若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值A.0 B.1 C.-1

D.一个非0值

(48)下列关于C语言数据文件的叙述中正确的是

A.文件由ASCII码字符序列组成,C语言只能读写文本文件 B.文件由二进制数据序列组成,C语言只能读写二进制文件

C.文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件 D.文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件 (49)有以下程序 main()

{ int a[3][3],*p,i; p=&a[0][0];

for(i=0;i<9;i++) p[i]=i+1; printf(\"%d \\n\}

程序运行后的输出结果是

A.3 B.6 C.9 D.2

(50)有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向一个链表中的三个连续结点。 struct node { int data;

struct node *next; } *p, *q, *r;

_______________________________ | data next data next data next | | →□□ → □□ → □□→ | | ↑p ↑q ↑r |

|______________________________|

现要将q和r所指结点的先后位置交换,同时要保持链表的连续,以下错误的程序段是 A.r->next=q; q->next=r->next; p->next=r; B.q->next=r->next; p->next=r; r->next=q; C.p->next=r; q->next=r->next; r->next=q;

(资料来源:东方教育网 http://www.eastedu.com.cn) D.q->next=r->next; r->next=q; p->next=r;

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

(1)计算机软件分为系统软件与应用软件,UNIX属于 〖1〗 。

(2)假设在当前盘的当前目录下有两个文件A.TXT和B.TXT,现要将文件B.TXT合并连接到文件A.TXT的后面。若使用TYPE命令,则完整的命令为 〖2〗 。

(3)Internet的信息服务方式分为基本服务和扩展服务,电子邮件属于 〖3〗 。

(4)在Windows环境下,利用菜单命令删除固定硬盘上的文件与文件夹,实际上是将需要删除的文件与文件夹移动到 〖4〗 文件夹中。

(5)在Windows环境下,为了进行\"添加/删除程序\"操作,首先打开 〖5〗 ,然后双击其中的相应图标。

(6)以下程序运行后的输出结果是 〖6〗 。 main() { int p=30;

printf(\"%d\\n\}

(7)以下程序运行后的输出结果是 〖7〗 。 main() { char m;

m='B'+32; printf(\"%c\\n\}

(8)以下程序运行后的输出结果是 〖8〗 。 main()

{ int a=1,b=3,c=5;

if (c=a+b) printf(\"yes\\n\"); else printf(\"no\\n\"); }

(9)以下程序运行后的输出结果是 〖9〗 。 main()

{ int i,m=0,n=0,k=0; for(i=9; i<=11;i++) switch(i/10)

{ case 0: m++;n++;break; case 10: n++; break; default: k++;n++; }

printf(\"%d %d %d\\n\}

(10)执行以下程序后,输出'#'号的个数是 〖10〗 。 #include main() { int i,j;

for(i=1; i<5; i++)

for(j=2; j<=i; j++) putchar('#'); }

(11)以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。请填空。 int fun( int n) { int m=0,f=1,i; for(i=1; i<=n; i++) { m+=i*f; f= 〖11〗 ; }

return m; }

main()

{ printf(\"m=%d\\n\〖12〗 ); }

(12)以下程序运行后的输出结果是 〖13〗 main()

{ int i,n[]={0,0,0,0,0}; for(i=1;i<=4;i++) { n[i]=n[i-1]*2+1; printf(\"%d \} }

(13)以下程序运行后的输出结果是 〖14〗 main()

{ int i,j,a[][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++)

for(j=i+1;j<3;j++) a[j][i]=0; for(i=0;i<3;i++)

{ for(j=0;j<3;j++) printf(\"%d \printf(\"\\n\"); } }

(14)以下程序运行后的输出结果是 〖15〗 int a=5; fun(int b)

{ static int a=10; a+=b++;

printf(\"%d \}

main() { int c=20; fun(c); a+=c++;

printf(\"%d\\n\}

(15)请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。 〖16〗 ( double,double); main()

{ double x,y;

scanf(\"%lf%lf\printf(\"%lf\\n\}

double max(double a,double b) { return(a>b ? a:b); }

(16)以下程序运行后输入:3,abcde<回车>,则输出结果是 〖17〗 #include

move(char *str, int n) { char temp; int i; temp=str[n-1];

for(i=n-1;i>0;i--) str[i]=str[i-1]; str[0]=temp; }

main()

{ char s[50]; int n, i, z; scanf(\"%d,%s\z=strlen(s);

for(i=1; i<=n; i++) move(s, z);

(资料来源:东方教育网 http://www.eastedu.com.cn) printf(\"%s\\n\}

(17)以下程序运行后的输出结果是 〖18〗 fun(int x)

{ if(x/2>0) fun(x/2); printf(\"%d \}

main() { fun(6); }

(18)已有定义如下: struct node { int data;

struct node *next; } *p;

以下语句调用malloc函数,使指针p指向一个具有struct node类型的动态存储空间。请填空。

p = (struct node *)malloc( 〖19〗 );

(19)以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。例如,输入字符串:abc123edf456gh,执行程序后输出:123456。请填空。 #include #include main()

{ char s[80], d[80]; int i,j; gets(s);

for(i=j=0;s[i]!='\\0';i++)

if( 〖20〗 ) { d[j]=s[i]; j++; } d[j]='\\0'; puts(d); }

2003年9月全国计算机等级考试二级C语言笔试试卷参考答案 一、选择题

(1) C (2) A (3) B (4) A (5) D (6) C (7) B (8) A (9) C (10)D (11)A (12)C (13)D (14)B (15)D (16)C (17)A (18)D (19)C (20)C (21)B (22)B (23)C (24)C (25)A (26)D (27)C (28)A (29)D (30)A (31)C (32)D (33)B (34)B (35)D (36)C (37)B (38)A (39)D (40)B (41)B (42)B (43)C (44)C (45)A (46)D (47)A (48)D (49)B (50)A 二、填空题

(1) 〖1〗 系统软件

(2) 〖2〗 TYPE B.TXT >> A.TXT (3) 〖3〗 基本服务 (4) 〖4〗 回收站

(5) 〖5〗 控制面板 (6) 〖6〗 3 (7) 〖7〗 b (8) 〖8〗 yes (9) 〖9〗 1 3 2 (10) 〖10〗 6 (11) 〖11〗 -f 〖12〗 fun(10)

(12) 〖13〗 1 3 7 15 (13) 〖14〗0 5 6 0 0 9

(14) 〖15〗(15) 〖16〗(16) 〖17〗(17) 〖18〗(18) 〖19〗(19) 〖20〗1 2 3 30 25

double max cdeab 1 3 6

sizeof(struct node) s[i]>='0' && s[i]<='9'

因篇幅问题不能全部显示,请点此查看更多更全内容