全国历年C语言二级笔试试题.docx
1994年全国计算机等级考试二级笔试试题基础知识与C语言程序设计(考试时间120分钟,满分100分)1994年4月一、选择题(1-30每小题1分,31-45每小题2分,共60分)下列各题A), B), C), D)四个选项,只有一个选项是正确的,请将正确的选项在答题 卡相应位置上涂黑。答在试卷上不得分。1 A) 45B) 56C) 67D) 78(1) 二进制数101110转换为等值的八进制数是【1】。(2) CPU是由【2】组成的。成2 A)内存储器和控制器O内存储器和运算器B)控制器和运算器D)内存储器、控制器和运算器(3) DOS是为IBM PC系列微型计算机及其兼容机所配置的上1 磁盘操作系统。3 A) 多用户多任务 B)单用户单任务 C)分时D)分布式(4) 启动MS-DOS操作系统后,【4】已驻留内存。4 A) COMMAND. COM B) DISKCOPY. COM C) FORMAT. COM D) CCCC. EXE(5) 设驱动器B中软盘上的目录结构如下图所示。B:根目录FI子目录 F11子目录 FA.TXTF2子目录F3目录F21子目录FB.BASF22子目录-FC.TXT设当前目录为F2,则把A盘根目录下的PROG. BAS文件复制到B盘F3子目录中的命令是5 o5 A) COPY PROG. BAS B:B) COPY A:PROG. BAS B:C) COPY A:PROG.BAS B:F3D) COPY A:PROG.BAS B:F3(6) 下面四组DOS命令中,意义完全相同的一组是【6】。6 A) COPY 和 DISKCOPYB) COMP 和 DISKCOMPC) DEL 和 RDD) RENAME 和 REN(7) 防止软盘感染病毒的有效方法是【7】。7 A)不要把软盘和有毒软盘放在一起B)在写保护缺口上贴上胶条0保持机房清洁D)定期对软盘格式化(8) 双面高密度5英寸软磁盘的容度是8】。8 A) 360KB B) 720KB C) 1.2MB D) 1.44MB(9) 在FOXBASE中,可以使用的两类变量是【9109 A)内存变量和字段变量B)全局变量和局部变量O字段变量和简单变量D)内存变量和自动变量(10)建立 一个新子目录的DOS命令是【10】。10 A) CREATE B) RDC) MD D) CD(11)在C语言中,如果下面的变量都是int类型,则输出的结果是1如。sum=pad=5; pAd=sum + + , pAd + + , + + pAd;printf("%dn", pad);11 A) 7B) 6C) 5 D) 4(12)以下程序的输出结果是# include <stdio. h>main() int i=010 , j = 10;printf ("%d, %dn”, + +i , j) ;12 A) 11, 10B) 9, 100 010,9 D) 10,9(13)已知在ASCII代码中,字母A的序号为65,以下程序的输出的结果是.【13。# include <stdio. h>main() char cl=,A*, c2='Y'printf (#%d, %dnz,, cl, c2);13 A)因输出格式不合法,输出错误信息 B) 65, 90 C) A, Y D) 65, 89(14)指针s所指字符串的长度为【14】0char *s=""NameAddress'n”;14 A) 19B) 150 18 D)说明不合法 (15)设有说明int (*ptr) m;其中的标识符ptr是【15】。15 A) M个指向整型变量的指针B)指向M个整型变量的函数指针C) 一个指向具有M个整型元素的一维数组的指针D)具有M个指针元素的一维指针数组,每个元素都只能指向整型量(16)语句while(!E);中的条件!E等价于【16】。16 A) E = = 0 B) E! =1 C) E!=0 D) “E (17)以下程序的输出结果是一【1710# include <stdio. h>main() printf("%dn", NULL);17 A)不确定的(因变量无定义)B) 0 C) -1 D) 1(18)以下函数调用语句中含有个实参。func (expl,exp2), (exp3, exp4, exp5);18 A) 1B) 2C) 4D) 5(19)设有以下语句:char a=3, b=6, c;c=a b<<2;则c的二进制值是一【19】019 A) 00011011 B) 00010100 C) 00011100 D) 00011000 (20)下面的程序中【20】有错误(每行程序前面的数字是行号)。1 ttinclude <stdio. h>2 main()3 (4 float a3=0, 0;5 int i;6 for(i=0;i<3;i + + ) scanf;7 for(i=l;i<3;i + + ) a0=a0+ai;8 printfa0);9 )20 A)没有B)第4行C)第6行 D)第8行(21)设有语句int =3;则执行了语句+包-;后,变量a的值是一【21】。21 A) 3B) 0C) 9 D) -12(22)以下的for循环【22】。for(x=0,y=0; (y!=123)&&(x<4); x + + );【22】A)是无限循环 B)循环次数不定 C)执行4次 D)执行3次(23)设有语句char a=' '72'则变量a【23】。【23】A)包含1个字符 B)包含2个字符 C)包含3个字符 D)说明不合法(24)以下程序的输出结果是【24】。# include <stdio. h># include <math. h>mainO int a=l, b=4, c=2;float x=10. 5 , y=4. 0 , z;z=(a+b)/c+sqrt(double)y)*1. 2/c+x; pritnfz);24 A) 14. 000000 B) 015.400000 C) 13. 700000 D) 14.900000(25) sizeof(double)是 【25】°25 A) 一种函痂丽B) 一个双精度型表达式C) 一个整型表达式 D) 一个不合法的表达式(26) C语言中 【26】。26 A)不能使用do-while语句构成的循环B) do-while语句构成的循环必须用break语句才能退出C) do-while语句构成的循环,当while语句中的表达式值为非零时结束循环D) do-while语句构成的循环,当while语句中的表达式值为零时结束循环(27)以下程序的输出结果是E) include <stdio. h>F) include <string. h>mainO char str12 = , s,,,t,,,r,,,i,,,n,,,g,; printf ('dn”, strlen(str); 27 A) 6 B) 70 11 D) 12(28)以下程序的输出结果是.【28】。# include <stdio. h>mainO int a=2, c=5; printf ("a=烟d, b=%dnz a, c);28 A) a=%2, b=%5 B) a=2, b=5 C) a=%d, b=%d D) a=%d, b=%d(29)以下程序的输出结果是.【29】,# include<stdio. h>mainO int a , b,d=241;a=d/100%9;b=(-l)&&(-l);printf ("%d, %dn”, a, b) ; 29 A) 6, 1 B) 2, 10 6,0D) 2,0(30)以下程序的输出结果是【30】。# include <stdio. h>mainO int i;for ( i=l; i<=5; i + + ) if ( i%2 ) printf ("*"); else continue; printf("#);printf("$n"); 30 A) *#*#*#$ B) #*#*#*$ C) *#*#$ D) #*#*$(31)以下for语句构成的循环执行了【31】次。# include <stdio. h>U define N 2# define M N+lU define NUM (M+l)*M/2main() int i , n=O;for ( i=l;i<=NUM;i + + );n + + ; printfn); printf(*n*); 31 A) 5B) 6C) 8 D) 9 (32)设有以下语句,则 【设】 不是对a数组元素的正确引用,其中int a10 = 0, 1,2, 3, 4, 5, 6, 7,8, 9), *p=a;32 A) ap-a B) *(&a)C) p (33)有以下程序:# include <stdio. h># define N 6main() char cN; int i=0;for ( ; i<N ; ci=getchar () , i + + );for ( i=0 ; i<N ; putchar(ci) , i + + );输入以下三行,每行输入都是在第一列上开始,<CR>代表一个回车符: a<CR>b<CR>cdef<CR>程序的输出结果是33 A) abcdefbbccddB) aC) ab cdefD) a(34)以下程序调用findmax函数求数组中值最大的元素在数组中的下标,请选择填空。 # include <stdio. h> findmax ( s , t , k ) int *s , t , *k; int p; for(p=0, *k=p;p<t;p + + ) if ( sp > s*k ); mainO int a10 , i , k ;for ( i=0 ; i<10 ; i + + ) scanf;findmax ( a,10, &k );printf ( "%d, %dn” , k , ak ); 34 A) k=p B) *k=p-s C) k=p-s D) *k=p(35)有以下程序:#include<stdio. h>union pw int i; char ch2; a;mainO a. ch0=13; a. chl=0; printf ("%dn”, a. i); 程序的输出结果是一【350 (注意:ch0在低字节,chl在高字节。)35 A) 13 B) 14 C) 208D) 209 (36)有以下程序:# include<stdio. h>main() int c;while(c=getchar()!=' n ) switch(c-,2,) case 0:case 1: putchar(c+4);case 2: putchar(c+4);break;case 3: putchar(c+3);case 4: putchar(c+2);break; printf("n");从第一列开始输入以下数据,<CR>代表一个回车符。2743<CR>程序的输出结果是【361036 A) 668977 B) 668966 C) 6677877 D) 6688766(37)以下程序的输出结果为【3710main() char *alpha6 = ABCD", "IJKL", "MNOP”, QRS,"UVWX"char *p; int i;p=alpha;for(i=0;i<4;i + + ) printfpi); printf('n"); 37 A) ABCDEFGHIJKL B) ABCD C) ABCDEFGHIJKLMNOP D) AEIM(38)以下程序的输出结果是【3810# include<stdio. h># define FUDGE(y)2. 84+y# define PR(a) printf(int)(a)# define PRINT1(a) PR(a);putchar(*n )main()int x=2; PRINTl(FUDGE(5)*x); 38 A) 11 B) 12 C) 13 D) 15(39)以下程序的输出结果是一【390# include<stdio. h>main() int i=l, j=3;printf (,z%d*, i + + ); int i=0;i+=j*2; printfC%d, %d", i, j); printf(d, %dn”, i,j); 39 A) 1,6, 3, 1,3 B) 1,6, 3,2,30 1,6, 3, 6,3 D) 1,7,3, 2,3(40)以下程序的输出结果是.【40】。# include <stdio. h>main() int k=4, m=l, p;p=func(k, m); printf("%d, ”, p); p=func(k, m); printf("%dn", p); func(a, b) int a, b;(static int m=0,i=2;i+=m+l; m=i+a+b; return(m); 40 A) 8, 17B) 8, 16C) 8,20 D) 8,8(41)设有以下语句:char str412 = "aaa", "bbbb", "ccccc", "dddddd",*strp4;for (i=0;i<4;i + + )strpi=stri;【41 不是对字符串的正确引用,其中0Wk<4。41 A) strpB) strk C) strpk D) *strp(42)设有以下语句:char strl="string”, str28, *str3, *str4="string”;则【42】不是对库函数strcpy的正确调用,此库函数用业复制字符串。42 A) strcpy(strl, “HELLO1"); B) strcpy(str2, “HELL02");C) strcpy(str3, "HELLO3"); D) strcpy(str4, “HELLO4");(43) C语言中形参的缺省存储类别是【43,43 A)自动(auto) B)静态(static) C)寄存器(register) D)外部(extern)(44)设有以下语句:struct st int n; struct st *next;static struct st a3 = 5,&al, 7,&a2,9, * 0J ,*p;p=&a0;则表达式 【44】的值是6。44 A) p + + ->n B) p->n + + C) (*p). n + + D) + + p->n(45)以下四个程序中,不能对两个整型变量的值进行交换。45 A) # include <stdio. h>main() int a=10, b=20; swap(&a, &b);printf ("刎 %dn”, a, b);)swap (p, q)int *p, *q;|int *t;t=(int )malloc(sizeof(int);t=p;*p=*q;*q=*t; B) # include <stdio. h>main()|int a=10, b=20;swap(&a, &b);printf ("%d %dn”, a, b);)swap (p, q)int p,q;(int *t;t二*p;*p=*q;*q=t;C) # include <stdio. h>main()(int *a, *b;*a=10, *b=20;swap (a, b);printf ("%d %dn,z, *a, *b);swap (p, q)int *p, *q; ( int t; t=*p;*p=*q;*q=t; D) # include<stdio. h>main () ( int a=10, b=20; int x=&a, y=&b; swap (x, y);printf ("%d %dn”, a, b);)swap (p, q) int *p, *q; int t; t=*p;*p=*q;*q=t;二、填空题(每空2分,共40分)请将每空的正确答案写在答题卡20序号后的横线上,答在试卷上不得分。(1)结构化程序设计所规定的三种基本控制结构是_山结构.选择结构和循环结构。(2)在七位ASCII码中,除了表示数字、英文大小写字母外,还有【2】个其它符号。(3)把B盘BAS子目录下第三个字符为A,且没有扩展名的全部文件拷贝到C盘ABC子目 录下的命令是3】。(4)微机中ROM的中文意义是14】存储器。(5)启动MS-DOS系统后,能自动执行的批处理文件是【5】.BAT。(6)设当前盘为C盘,删除B盘FOX子目录中扩展名为.TXT的所有文件的命令是上(7)十进制数53转换为十六进制数为_山_。(8)数据库管理系统常见的数据模型有层次、网状和【8】三种。(9)买来一张新盘后,在存入文件前,必须进行上处理。(10)在微机中,字符的比较就是对它们的【10】码进行比较。(11)以下C语言程序将磁盘中的一个文件复制到另一个文件中,两个文件名在命令行中给 出。Sinclude <stdio. h>main(argc, argv)int argc; char *argv; FILE *fl,*f2; char ch;if(argc < 11) printf("Parameters missing!n"); exit(0); if ( (fl=fopen(argv1,"r") = = NULL)I I(f2=fopen(argv2, "w")= NULL) printf(*Can not open file!n"); exit(0);) while( 12 )fputc(fgetc(f1), f2); fclose(f1); fclose(f2); (12)以下程序中的trap函数是一个用梯形法求定积分的通用函数。梯形法求定积分的公 式为:n-1a-bs=(f(a)+f(b)/2+ E f(a+i*h)*h , h=|1i=ln其中,n为积分小区间数。以下程序调用trap函数求定积分,被积函数是: f (x)=x*x+3*x+2,且 n=1000, a=0, b=4o #include <stdio. h> 3include <math. h> double trap(fun, a, b) double (*fun) (), a, b; double t, h;int i,n=1000;t=0. 5*(*fun)(a) + (*fun)(b); h=fabs(a-b)/(double)(n); for(i=l;i<=n-l;i + + ) t=t+ 【13】; t=t*h; return(t); double mypoly(x) double x; return(x*x+3. 0*x+2. 0); main() double y, (*pf) (); pf= 14;y=trap(pf, 0. 0, 4. 0); printf ("%fn", y); (13)以下程序求a数组中的所有素数的和,函数isprime用来判断自变量是否为素数。素 数是只能被1和本身整除且大于1的自然数。#include <stdio. h> main() int i, a10, *p=a, sum=0;printf("Enter 10 num:n");for(i=0;i<10;i + + ) scanf&ai);for(i=0;i<10;i + + )if(isprime(*(p+ 15 ) = = 1) printf*(a+i); sum+=*(a+i); printf(*nThe sum=%dn”, sum); isprime(x) int x; int i; for(i=2;i<=x/2;i + + ) if(x%i = = 0) return (0);【16;(14)以下程序调用invert函数按逆序重新放置a数组中元素的值。a数组中的值在main 函数中读入。ttinclude <stdio. h>Sdefine N 10invert (s, i, j) int *s, i, j; int t; if (i<j) t=*(s+i); *(s+j) = (s+j) ;*(s+j)=t; invert(s, 17 , j-1); main() int aN, i;for(i=0;i<N;i + + ) scanfa+【18】);invert(a, 0, N-l);for(i=0;i<N;i + + ) printf C%d", ai);printf (*nO ; (15)以下程序建立了一个带有头结点的单向链表,链表结点中的数据通过键盘输入,当输 入数据为T时,表示输入结束(链表头结点的data域不放数据,表空的条件是ph->next二 =NULL).#include<stdio. h>struct list int data;struct list *next;19 creatlist () struct list *p, *q, *ph; int a;ph=(struct list *) malloc(sizeof(struct list);p=q=ph; printf("Input an integer number, enter - 1 to end:n");scanf("%d", &a):while(a!=-l) p= (struct list *)malloc(sizeof(struct list);p->data=a; q->next=p; 【20=p; scanf(飞d”, &a); p->next=' 0' ; return(ph); main() struct list *head; head=creatlist();完1994年全国计算机等级考试二级笔试C语言参考答案选择题(130每个选项1分,31:二45亍每个选项2分,共60分)(DB(2)B(3)B(4) A(5)C(6)D(7)B(8)C(9) A(10)C(11)C(12)B(13)D(14)B(15)C(16)A(17)B(18)B(19)A(20) C(21)D(22) C(23) A(24) C(25) C(26) D(27) A(28) D(29) B(30) A(31)C(32) D(33) C(34) D(35) A(36) A(37) C(38) B(39) B(40) A(41)A(42) C(43) A(44) D(45) C二' 填空题(每空2分,共40分)(1)1顿序(2)66(3) COPY B: BAS?A*. C:ABC(或 COPY B:BAS?A*., C:ABC)(4)只读(5)AUTOEXEC(6)DEL B:FOX*. TXT(7)35(8)关系(9)格式化(或初始化、FORMAT)(lO)ASCII(11)3(12) ! feof (f 1)或 feof (fl)=0(13)(*fun)(a+i*h)(14) mypoly(15)1(16)return 1 或 return (1)(17)i+l(18) I(19) struct list *(20) q全国计算机等级考试二级笔试卷基础知识和C语言程序设计(考试时间120分钟,满分100分)1995年9月一、选择题(D-(40)每小题1分,(41)-(50)每小题2分,共60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在 答题卡相应位置上,答在试卷上不得分。(46) (1)第一台电子数字计算机ENIAC诞生于A) 1927 年B)1936 年C) 1946 年D) 1951 年(47)(2)用FORTRAN语言编制的源程序要变为目标程序,必须经过A)汇编B)解释C)编辑D)编译(48)(3)计算机软件一般包括系统软件和A)字处理软件 B)应用软件C)管理软件D)科学计算机软件(49)(4)计算机内使用的数是A)二进制数B)八进制数C)十进制数D)十六进制数(50)(5)目前微型机常用的5. 25寸双面高密度软盘的容量是A) 360KBB) 1.44MBC) 760KBD) 1.2MB(51) (6)具有多媒体功能的微机系统常用CD-ROM作为外存储器,它是A)只读内存储器 B)只读大容量软盘C)只读硬盘D)只读光盘说明:(52) (7)到(17)题给定的条件如下:微机系统有A和B两个容量相同的软盘驱动器,硬盘C的目录结构为C:根目录COMMAND.COMDOS1nTSKCYIPY COM'-FORMAT. COM文件AUTOEXEC. BAT的内容为PROMPT $P$GCD F4CD DOS(53) (7)微机系统用硬盘C启动后,当前系统提示符是A) C:>B) C:DOS>C) C:F4>D) C>(54) (8)在用C盘启动后,把A盘格式化成系统盘的命令为A) FORMAT A:B) FORMAT A:/SC) DOSFORMAT A:/SD) DOSFORMAT A:S(55) (9)设当前盘为C盘,C盘当前目录为DOS。把JDLFOR和JD2.FOR连接起来后存入A 盘根目录下,命名为JD3.FOR,应使用命令A) COPY JD1.FOR+JD2.FOR AJD3.FORB) COPY F4JD1.FOR+JD2.FOR A:JD3.FORC) COPY F4JD l.FOR+F4JD2.FOR A:JD3.FORD) COPY F4JD 1 .FOR+F4JD2.FOR JD3.FOR(56) (10)设当前盘为C盘,C盘当前目录为DOS。把FORMAT. COM和DISKCOPY. COM两个命令文件复制到A盘上的命令为A) COPY DOS*.* A:B) COPY*.COM A:C) COPY DOS*.* A:D) COPY DOS*.COM A:(57) (11)列出硬盘C上所有扩展名为.FOR文件的命令是A) DIR*.FOR B) DIR C:F4*.FOR C) DIR C:*.FOR D) DIR C:F4*.*(58) (12)把A盘的所有信息复制到B盘上的命令为A) COPY A:*.* B:B) COPY A:*.* B:*.*C) C:DOSDISKCOPY A: B:D) C:DOSDISKCOPY B: A:(59) (13)设当前盘为C盘。删除硬盘C上的两个扩展名为.EXE文件的命令是A) DELF4*.EXE B) DELXD7.EXE C) DELF4*.* D) DEL *.EXE(60) (14)设当前盘为C盘。C盘当前目录为DOS。在硬盘C的根目录下建立新子目录USER的命令为A) MD C:USER B) MDUSER C) MDUSERD) MD USER(61) (15)设当前盘为C盘,C盘当前目录为根目录。在硬盘C上删除子目录F4的命令或命令组为A) RD F4B) RDF4C) DELF4*.* D) DEL*.*RD F4RD F4(62) (16)设当前盘为C盘,C盘当前目录为根目录。把JDLFOR改名为JXL FOR的命令为A) REN JDl.FOR JXl.FORB) REN JXl.FOR JDLFORC) REN F4JDl.FOR JXl.FORD) REN F4JXl.FOR JDLFOR(63) (17)显示C盘根目录下所有.TXT文件内容的命令为A) TYPE C:*.TXTB) TYPE C:*.TXT>CONC) COPY C:*.TXT>COND) COPY C:*.TXT CON(64) (18)按照数据模型分类,FoxBASE和dBASE是属于A)层次型B)网状型C)关系型D)混合型(65) (19) FoxBASE和dBASE命令文件的扩展名为A) .PRGB) .DBFC) .MEMD) .TXT(66) (20) “计算机等级考试”这七个汉字作为字符串常量,在FoxBASE和dBASE中,可以 表示为A) 计算机等级考试B)(计算机等级考试)C)计算机等级考试D) “计算机等级考试”(67) (21)请选出可用作C语言用户标识符的一组标识符A) voidB) a3_b3C) ForD) 2adefine_123-abcDOWORDIFCasesizeof(68) (22)设int a=12,则执行完语句a+=a-=a*a后,a的值是A) 552B) 264C) 144D) -264(69) (23) C语言程序的基本单位是A)程序行 B)语句C)函数D)字符(70) (24)请选出合法的C语言赋值语句A) a=b=58B) i-H-;C) a=58,b=58D) k=int(a+b);(71) (25)执行下面程序片段的结果是 int x=23;do printf("%2d”, x); while (!x);A)打印出321 B)打印出23C)不打印任何内容D)陷入死循环(72) (26)请选出以下语句的输出结果printf(*%dn*, strlen(*t*065xffn*);A) 5B) 14C)8 D)输出项不合法,无正常输出(73) (27)设有如下的函数ggg(x)float x; printf("n%d”,x*x);则函数的类型A)与参数x的类型相同B)是void C)是intD)无法确定(74) (28)设有如下枚举类型定义: enum language Basic=3, Assembly, Ada=100, COBOL, Fortran;枚举量Fortran的值为A) 4B)7C) 102D) 103(75) (29)若有以下说明和语句,请选出哪个是对c数组元素的正确引用 int c45, (*cp) 5;cp=c;A) cp+1B) *(cp+3)C) *(cp+l)+3 D) *(*cp+2)(76) (30)标准函数fgets(s, n, f)的功能是A)从文件f中读取长度为n的字符串存入指针s所指的内存B)从文件f中读取长度不超过小1的字符串存入指针s所指的内存C)从文件f中读取n个字符串存入指针s所指的内存D)从文件f中读取长度为ml的字符串存入指针s所指的内存(77) (31)设有如下一段程序:int *var, ab;ab=100var=&ab;ab=*var+10;执行上面的程序后,ab的值为A) 120B) 110C) 100D) 90(78) (32)以下程序段给数组所有的元素输入数据,请选择正确答案填入。#include<stdio. h>main () int a10, i=0;while(i<10) scanf("%d", );A) a+(i+)B) &ai+l C) a+iD) &a+i(79) (33)设有如下的程序段:char str ="Hello”;char *ptr;ptr=str;执行上面的程序段后,*(ptr+5)的值为A) 'o'B) '0'C)不确定的值 D)U的地址(80)(34)在宏定义ttdefine PI3. 14159中,用宏名PI代替一个A)(81)单精度数B)双精度数C)常量D)字符串(35)字符(char)型数据在微机内存中的存储形式是A) (82)反码(36)B)补码 执行下面的程序段C) EBCDIC 码D) ASCII 码int x=35;char z- A"int b;B=(x&15)&&(z' a');后,B的值为A)0B) 1C)2D)3(83) (37) C语言规定,程序中各函数之间A)既允许