一、选择题(1-30每小题1分,31-45每小题2分,共60分) 下列各题 A),B),C),D)四个选项,只有一个选项是正确的,请将正确的选项在答题卡相应位置上涂黑。答在试卷上不得分。 (1) 二进制数101110转换为等值的八进制数是 ( ) 。 A.45 B.56 C.67 D.78 (2) CPU是由( )组成的。 A.内存储器和控制器 B.控制器和运算器 C.内存储器和运算器 D.内存储器、控制器和运算器 (3) DOS是为IBM PC系列微型计算机及其兼容机所配置的 ( ) 磁盘操作系统。 A.多用户多任务 B.单用户单任务 C.分时 D.分布式 (4) 启动MS-DOS操作系统后, ( ) 已驻留内存。 A.COMMAND.COM B.DISKCOPY.COM C.FORMAT.COM D.CCCC.EXE (5) 设驱动器B中软盘上的目录结构如下图所示。 设当前目录为F2,则把A盘根目录下的PROG.BAS文件复制到B盘F3子目录中的命令是 ( ) 。 A.COPY PROG.BAS B: B.COPY A:PROG.BAS B:\ C.COPY A:\PROG.BAS B:\F3 D.COPY A:PROG.BAS B:\F3\ (6) 下面四组DOS命令中,意义完全相同的一组是 ( ) 。 A.COPY和DISKCOPY B.COMP和DISKCOMP C.DEL和RD D.RENAME和REN (7) 防止软盘感染病毒的有效方法是 ( ) 。 A.不要把软盘和有毒软盘放在一起 B.在写保护缺口上贴上胶条 C.保持机房清洁 D.定期对软盘格式化 (8) 双面高密度5英寸软磁盘的容量是 ( ) 。 A.360KB B.720KB C.1.2MB D.1.44MB (9) 在FOXBASE中,可以使用的两类变量是 ( ) 。 A.内存变量和字段变量 B.全局变量和局部变量 C.字段变量和简单变量 D.内存变量和自动变量 (10) 建立一个新子目录的DOS命令是 ( ) 。 A.CREATE B.RD C.MD D.CD (11) 在C语言中,如果下面的变量都是int类型,则输出的结果是 ( ) 。 sum=pad=5; pAd=sum + + ,pAd + + , + + pAd; printf("%d\n",pad); A.7 B.6 C.5 D.4
(12) 以下程序的输出结果是 ( ) 。 # include main() { int i=010 , j = 10; printf("%d,%d\n",+ +i , j - -); } A.11,10 B.9,10 C.010,9 D.10,9 (13) 已知在ASCII代码中,字母A的序号为65,以下程序的输出的结果是 ( ) 。 # include main() { char c1=’A’, c2=’Y’; printf("%d,%d\n",c1,c2); } A.因输出格式不合法,输出错误信息 B.65,90 C.A,Y D.65,89 (14) 指针s所指字符串的长度为 ( ) 。 char *s="\\"Name\\Address\n"; A.19 B.15 C.18 D.说明不合法 (15) 设有说明int(*ptr)[m];其中的标识符ptr是 ( ) 。 A.M个指向整型变量的指针 B.指向M个整型变量的函数指针 C.一个指向具有M个整型元素的一维数组的指针 D.具有M个指针元素的一维指针数组,每个元素都只能指向整型量 (16) 语句while(!E);中的条件!E等价于 ( ) 。 A.E = = 0 B.E!=1 C.E!=0 D.~E (17) 以下程序的输出结果是 ( ) 。 # include main() { printf("%d\n",NULL); } A.不确定的(因变量无定义) B.0 C.-1 D.1 (18) 以下函数调用语句中含有 ( ) 个实参。 func((exp1,exp2),(exp3,exp4,exp5)); A.1 B.2 C.4 D.5 (19) 设有以下语句: char a=3,b=6,c; c=a^b<<2; 则c的二进制值是 ( ) 。 A.00011011 B.00010100 C.00011100 D.00011000 (20) 下面的程序中 ( ) 有错误(每行程序前面的数字是行号)。 1 #include 2 main() 3 { 4 float a[3]={0,0}; 5 int i; 6 for(i=0;i<3;i + + ) scanf("%d",&a[i]); 7 for(i=1;i<3;i + + ) a[0]=a[0]+a[i]; 8 printf("%f\n",a[0]); 9 } A.没有 B.第4行 C.第6行 D.第8行 (21) 设有语句int a=3;则执行了语句a+=a-=a*a;后,变量a的值是 ( ) 。 A.3 B.0 C.9 D.-12 (22) 以下的for循环 ( ) 。 for(x=0,y=0; (y!=123)&&(x<4); x + + ); A.是无限循环 B.循环次数不定 C.执行4次 D.执行3次
(23) 设有语句char a=’\72’;则变量a ( ) 。 A.包含1个字符 B.包含2个字符 C.包含3个字符 D.说明不合法 (24) 以下程序的输出结果是 ( ) 。 # include # include main() { int a=1,b=4,c=2; float x=10..5 , y=4.0 , z; z=(a+ B./c+sqrt((double)y)*1.2/c+x; pritnf("%f\n",z); } A.14.000000 B.015.400000 C.13.700000 D.14.900000 (25) sizeof(double)是 ( ) 。 A.一种函数调用 B.一个双精度型表达式 C.一个整型表达式 D.一个不合法的表达式 (26) C语言中 ( ) 。 A.不能使用do-while语句构成的循环 B.do-while语句构成的循环必须用break语句才能退出 C.do-while语句构成的循环,当while语句中的表达式值为非零时结束循环 D.do-while语句构成的循环,当while语句中的表达式值为零时结束循环 (27) 以下程序的输出结果是 ( ) 。 # include # include main() { char str[12]={’s’,’t’,’r’,’i’,’n’,’g’}; printf("%d\n",strlen(str)); } A.6 B.7 C.11 D.12 (28) 以下程序的输出结果是 ( ) 。 # include main() { int a=2,c=5; printf("a=%%d,b=%%d\n",a, C.; } A.a=%2,b=%5 B.a=2,b=5 C.a=%%d,b=%%d D.a=%d,b=%d (29) 以下程序的输出结果是 ( ) 。 # include main() { int a ,b,d=241; a=d/100%9; b=(-1)&&(-1); printf("%d,%d\n",a, B.; } A.6,1 B.2,1 C.6,0 D.2,0 (30) 以下程序的输出结果是 ( ) 。 # include main() { int i; for ( i=1;i<=5;i + + ) {if ( i%2 ) printf("*"); else continue; printf("#");} printf("$\n"); } A.*#*#*#$ B.#*#*#*$ C.*#*#$ D.#*#*$ (31) 以下for语句构成的循环执行了 ( ) 次。 # include # define N 2 # define M N+1 # define NUM (M+1)*M/2 main() { int i , n=0; for ( i=1;i<=NUM;i + + ); {n + + ; printf("%d",n); } printf("\n"); } A.5 B.6 C.8 D.9 (32) 设有以下语句,则 ( ) 不是对a数组元素的正确引用,其中0≤i<10。 int a[10]={0,1,2,3,4,5,6,7,8,9}, *p=a; A.a[p-a] B.*(&a[i]) C.p[i] D.*(*(a+i)) (33) 有以下程序: # include # define N 6 main() { char c[N]; int i=0; for ( ;ifor ( i=0 ; i输入以下三行,每行输入都是在第一列上 开始,代表一个回车符: a b cdef 程序的输出结果是 ( ) 。 A.abcdef B.a C.a D.a b b b c cd cdef d e f
(34) 以下程序调用findmax函数求数组中值最大的元素在数组中的下标,请选择填空。 # include findmax ( s , t , k ) int *s , t , *k; { int p; for(p=0,*k=p;p if ( s[p] > s[*k] )( ); } main() { int a[10] , i , k ; for ( i=0 ; i<10 ; i + + ) scanf("%d",&a[i]); findmax ( a,10,&k ); printf ( "%d,%d\n" , k , a[k] ); } A.k=p B.*k=p-s C.k=p-s D.*k=p (35) 有以下程序: #include union pw { int i; char ch[2]; } a; main() { a.ch[0]=13; a.ch[1]=0; printf("%d\n",a.i); } 程序的输出结果是 ( ) 。(注意: ch[0]在低字节,ch[1]在高字节。) A.13 B.14 C.208 D.209 (36) 有以下程序: # include 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"); } 从第一列开始输入以下数据,代表一个回车符。 2743 程序的输出结果是 ( ) 。 A.668977 B.668966 C.6677877 D.6688766 (37) 以下程序的输出结果为 ( ) 。 main() { char *alpha[6]={"ABCD","IJKL","MNOP","QRST","UVWX"}; char **p; int i; p=alpha; for(i=0;i<4;i + + ) printf("%s",p[i]); printf("\n"); } A.ABCDEFGHIJKL B.ABCD C.ABCDEFGHIJKLMNOP D.AEIM (38) 以下程序的输出结果是 ( ) 。 # include # define FUDGE(y) 2.84+y # define PR( A.printf("%d",(int)( A.) # define PRINT1( A.PR( A.;putchar(’\n’) main() {int x=2; PRINT1(FUDGE(5)*x); } A.11 B.12 C.13 D.15 (39) 以下程序的输出结果是 ( ) 。 # include main() { int i=1,j=3; printf("%d",i + + ); { int i=0; i+=j*2; printf("%d,%d",i,j); } printf("%d,%d\n",i,j); } A.1,6,3,1,3 B.1,6,3,2,3 C.1,6,3,6,3 D.1,7,3,2,3 (40) 以下程序的输出结果是 ( ) 。 # include main() { int k=4,m=1,p; p=func(k,m); printf("%d,",p); p=func(k,m); printf("%d\n",p);} func(a, B. int a,b; { static int m=0,i=2; i+=m+1; m=i+a+b; return(m); } A.8,17 B.8,16 C.8,20 D.8,8 (41) 设有以下语句: char str[4][12]={"aaa","bbbb","ccccc","dddddd"}, *strp[4]; int i; for(i=0;i<4;i + + )strp[i]=str[i]; ( )不是对字符串的正确引用,其中0≤k<4。 A.strp B.str[k] C.strp[k] D.*strp (42) 设有以下语句: char str1[]="string",str2[8],*str3,*str4="string"; 则 ( ) 不是对库函数strcpy的正确调用,此库函数用业复制字符串。 A.strcpy(str1,"HELLO1"); B.strcpy(str2,"HELLO2"); C.strcpy(str3,"HELLO3"); D.strcpy(str4,"HELLO4"); (43) C语言中形参的缺省存储类别是 ( ) 。 A.自动(auto) B.静态(statiC) C.寄存器(register) D.外部(extern) (44) 设有以下语句: struct st {int n; struct st *next;}; static struct st a[3]={5,&a[1],7,&a[2],9,’\0’},*p; p=&a[0]; 则表达式 ( ) 的值是6。 A.p + + ->n B.p->n + + C.(*p).n + + D.+ + p->n (45) 以下四个程序中, ( ) 不能对两个整型变量的值进行交换。 A.# include main() { int a=10,b=20; swap(&a,& B.; printf("%d %d\n",a, B.; } swap(p,q) int *p,*q; { int *t; t=(int )malloc(sizeof(int)); t=p;*p=*q;*q=*t; } B.# include main() { int a=10,b=20; swap(&a,& B.; printf("%d %d\n",a, B.; } swap(p,q) int p,q; { int *t; t=*p;*p=*q;*q=t; } C.# include main() { int *a,*b; *a=10,*b=20; swap(a, B.; printf("%d %d\n",*a,* B.; } swap(p,q) int *p,*q; { int t; t=*p;*p=*q;*q=t; } D.# include main() { int a=10,b=20; int x=&a,y=&b; swap(x,y); printf("%d %d\n",a, B.; } swap(p,q) int *p,*q; { int t; t=*p;*p=*q;*q=t; }
二、填空题(每空2分,共40分) 请将每空的正确答案写在答题卡1-20序号后的横线上,答在试卷上不得分。 (1) 结构化程序设计所规定的三种基本控制结构是 【1】 结构.选择结构和循环结构。 (2) 在七位ASCII码中,除了表示数字、英文大小写字母外,还有 【2】 个其它符号。 (3) 把B盘BAS子目录下第三个字符为A,且没有扩展名的全部文件拷贝到C盘ABC子目录下的命令是 【3】 。 (4) 微机中ROM的中文意义是 【4】 存储器。 (5) 启动MS-DOS系统后,能自动执行的批处理文件是 【5】 .BAT。 (6) 设当前盘为C盘,删除B盘FOX子目录中扩展名为.TXT的所有文件的命令是 【6】 。 (7) 十进制数53转换为十六进制数为 【7】 。 (8) 数据库管理系统常见的数据模型有层次、网状和 【8】 三种。 (9) 买来一张新盘后,在存入文件前,必须进行 【9】 处理。 (10) 在微机中,字符的比较就是对它们的 【10】 码进行比较。 (11) 以下C语言程序将磁盘中的一个文件复制到另一个文件中,两个文件名在命令行中给出。 #include main(argc,argv) int argc; char *argv[]; { FILE *f1,*f2; char ch; if(argc< 【11】 ) { printf("Parameters missing!\n"); exit(0); } if( ((f1=fopen(argv[1],"r")) = = NULL)||((f2=fopen(argv[2],"w")) = = NULL)) { printf("Can not open file!\n"); exit(0);} while( 【12】 )fputc(fgetc(f1),f2); fclose(f1); fclose(f2); } (12) 以下程序中的trap函数是一个用梯形法求定积分的通用函数。梯形法求定积分的公式为: n-1 a-b s=((f(a)+f(b))/2+∑ f(a+i*h))*h , h=|----| i=1 n 其中,n为积分小区间数。以下程序调用trap函数求定积分,被积函数是: f(x)=x*x+3*x+2,且n=1000,a=0,b=4。 #include 3include 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=1;i<=n-1;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("%f\n",y); } (13) 以下程序求a数组中的所有素数的和,函数isprime用来判断自变量是否为素数。素数是只能被1和本身整除且大于1的自然数。 #include main() { int i,a[10],*p=a,sum=0; printf("Enter 10 num:\n"); for(i=0;i<10;i + + ) scanf("%d",&a[i]); for(i=0;i<10;i + + ) if(isprime(*(p+ 【15】 )) = = 1){ printf("%d",*(a+i)); sum+=*(a+i); } printf("\nThe sum=%d\n",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函数中读入。 #include #define N 10 invert(s,i,j) int *s,i,j; { int t; if(imain() { int a[N],i; for(i=0;i invert(a,0,N-1); for(i=0;i printf("\n"); } (15) 以下程序建立了一个带有头结点的单向链表,链表结点中的数据通过键盘输入,当输入数据为-1时,表示输入结束(链表头结点的data 域不放数据,表空的条件是ph->next = = NULL). #include 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!=-1) { 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语言参考答案 选择题([1]——[30]每个选项1分,[31]——[45]每个选项2分,共60分) (1)B (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)顺序 (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) (10)ASCII (11)3 (12)!feof(f1)或feof(f1)==0 (13)(*fun)(a+i*h) (14) mypoly (15)I (16)return 1 或 return (1) (17)i+1 (18) I (19) struct list * (20) q
|