![]() ![]() |
|
1997年9月全国计算机等级考试二级C语言笔试试题及答案 | |
作者:佚名 文章来源:不详 点击数 更新时间:2008/4/18 14:06:33 文章录入:杜斌 责任编辑:杜斌 | |
|
|
一、选择题((1)-(40)每小题1分,(41)-(50)每小题2分,共60分) (13) 设当前盘中的根目录下有一子目录AB,在子目录AB下有一文件PQ.BAS。现要查看文件PQ.BAS的内容,应使用命令 A.TYPE \AB PQ.BAS B.TYPE \AB\PQ.BAS C.TYPE \PQ.BAS D.DIR \AB\PQ.BAS (14) 自动批处理文件必须放在 A.C盘根目录中 B.A盘根目录中 C.启动盘的任一个目录中 D.启动盘的根目录中 (15) 设当前盘当前目录为C:\USER\XY\P,且当前盘当前目录为空,则下列命令中能正确执行的是 A.RD C:\USER\XY\P B.RD USER\XY\P C.MD \USER\XY\P\USER D.MD \USER\XY\P\X\Y (16) 下列DOS命令中,合法的是 A.DISKCOMP A.C B.C B.TYPE A.C >> B.C C.COMP A: B: D.COMP A: A: (17) 设当前盘为C盘,所用的所有软盘已格式化,且容量相同,则下列DOS命令中错误的是 A.DISKCOPY A: A: B.COPY A:*.* C.COPY *.* D.COPY A:*.* C: (18) 下列DOS命令中错误的是 A.TYPE A.TXT>PRN B.TYPE A.TXT PRN C.COPY *.TXT PRN D.COPY CON PRN (19) 下列四组DOS命令中,互相等价的一组是 A.COPY A:*.* B:与DISKCOPY A: B: B.COPY ABC.TXT+XYZ.TXT与TYPE XYZ.TXT >> ABC.TXT C.COPY ABC.TXT+XYZ.TXT XYZ.TXT与COPY XYZ.TXT+ABC.TXT D.TYPE *.FOR>CON与COPY *.FOR CON (20) 设C盘目录结构如下: 且C盘根目录下文件AUTOEXEC.BAT的内容为 CD FORTRAN CD \TC 如果在A驱动器中插入一张根目录中只有扩展名为.C的若干文件(即A盘中无DOS系统文件)的软盘片,则由C盘启动DOS系统后,第一次键入下列命令中,正确的是 A.COPY A:\*.C B.COPY A:\*.C TC C.COPY A:\*.C FORTRAN D.CD USER (21) C语言提供的合法的数据类型关键字是 A.Double B.short C.integer D.Char (22) 在C语言中,合法的长整型常数是 A.0L B.4962710 C.0.054838743 D.2.1869e10 (23) 表达式:10!=9的值是 A.true B.非零值 C.0 D.1 (24) 合法的C语言中,合法的长整型常数是 A.’\t’ B."A" C.65 D.A (25) 若有说明和语句: int a=5; a++; 此处表达式a++的值是 A.7 B.6 C.5 D.4 (26) 在下列选项中,不正确的赋值语句是 A.++t; B.n1=(n2=(n3=0)); C.k=i==j; D.a=b+c=1; (27) 若有说明:int i,j=7, *p=&i;,则与i=j;等价的语句是 A.I= *P; B.*P=*&J; C.i=&j; D.i=* *p; (28) 不能把字符串:Hello!赋给数组b的语句是 A.char b[10]={’H’,’e’,’l’,’l’,’o’,’!’}; B.char b[10];b="Hello!"; C.char b[10];strcpy(b,"Hello!"); D.char b[10]="Hello!"; (29) 若有以下说明: int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c=’a’,d,g; 则数值为4的表达式是 A.a[g-c] B.a[4] C.a[’d’-’c’] D.a[’d’-c] (30) 若有以下说明: int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则数值为6的表达式是 A.*p+6 B.*(p+6) C.*p+=5 D.p+5 (31) 若有以下说明: int w[3][4]o={{0,1},{2,4},{5,8}}; int(*p)[4]=w; 则数值为4的表达式是 A.*w[1]+1 B.p++,*(p+1) C.w[2][2] D.p[1][1] (32) 若程序中有下面的说明和定义 struct abc {int x;char y;} struct abc s1,s2; 则会发生的情况是 A.编译进错 B.程序将顺利编译`连接`执行 C.能顺利通过编译`连接`但不能执行 D.能顺利通过编译`但连接出错 (33) 能正确表示a≥10或a≤0的关系表达式是 A.a>=10 or a<=0 B.a>=10│a<=0 C.a>=10││a<=0 D.a>=10 ││a<=0 (34) 下面程序的输出是 main() { int x=3,y=6,a=0; while(x++!=(y+=o1)) { a+o=1; if(y #include main() { char ss[10]="12345"; strcat(ss,"6789"); gets(ss);printf("%s\n",ss); } A.ABC B.ABC9 C.123456ABC D.ABC456789 (35) 下面程序的输出是 main() { char *a="12134211"; int v1=0,v2=0,v3=0,v4=0,k; for(k=0;s[k];k++) switch(s[k]) { default:v4++; case ’1’: v1++; case ’3’: v3++; case ’2’: v2++; } printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4); } A.v1=4,v2=2,v3=1,v4=1 B.v1=4,v2=9,v3=3,v4=1 C.v1=5,v2=8,v3=6,v4=1 D.v1=8,v2=8,v3=8,v4=8 (36) 下面程序的输出是 main() {int k=11;printf("k=%d,k=%o,k=%x\n",k,k,k);} A.k=11,k=12,k=11 B.k=11,k=13,k=13 C.k=11,k=013,k=0xb D.k=11,k=13,k=b (37) 若有以下程序段,w和k都是整型变量: ┆ w=k; LB: if(w==0) go to LE; w--; printf("*"); goto LB; LE: ┆ 则不能与上面程序段等价的循环语句是 A.for(w=k;w!=0;w--) printf("*"); B.for(w=k;w;--w)printf("*"); C.w=k; D.w=k; while(w--!=0)printf("*");w++; do{ w--;printf("*");}while(w!=0); (38) 若有说明,double *p,a;则能通过scanf语句正确给输入项读入数据的程序段是 A.*p=&a; scanf("%lf",p); B.p=(double *)malloc(8);scanf("%f",p); C.p=&a;scanf("%lf",a); D.p=&a; scanf("%le",p); (39) 当执行下面程序且输入:ABC时,输出的结果是 #include #include main() { char ss[10]="12345"; gets(ss);printf("%s\n",ss); } A.ABC B.ABC9 C.123456ABC D.ABC456789 (40) 若有以下的说明和语句: main() {int t[3][2], *pt[3],k; fpr(k=o; k<3;k++)pt[k]=t[k]; } 则以一选项中能正确表示t数组元素地址的表达式是 A.&t[3][2] B.*pt[0] C.*(pt+1) D.&pt[2] (41) 下面程序输出数组中的最大值,由s指针指向该元素. main() { int a[10]={6,7,2,9,1,10,5,8,4,3,},*p,*s; flr(p=a, s=a; p-a<10; p++) if(---?---)s=p; printf("The max:%d",*s): } 则在if语句中的判断表达式应该是 A.p>s B.*p>*s C.a[p]>a[s] D.p-a>p-s (42) 下面程序的输出是 #include main() { char*a="abcdefgh"; fun(a);puts(a); } fun (char * s) { int x=0,y;char c; for(y=strlen(s)-1;x A.abcdefgh B.hgfdecba C.dcbahgfe D.hgfedcba (43) 若有以下函数调用语句: fun(a+b,(x,y),fun(n+k,d,(a, B.));在此函数调用语句中实参的个数是 A.3 B.4 B.5 D.6 (44) 下面程序的输出是 main() { int t=1; fun(fun(t));} fun(int h) { static int a[3]={1,2,3}; int k; for(k=0;k<3;k++) a[k]+=a[k]-h; for(k=1;k<3;k++) printf("%d",a[k]); printf("\n"); return(a[h]);} A.1,2,3, B.1,3,5, C.1,3,5, D.1,3,5, 1,5,9, 1,3,5, 0,4,8, -1,3,7, (45) C语言中,函数的隐含存储类别是 A.auto B.static C.extern D.无存储类别 (46) 下面程序的输出是 int w=3; main() { int w=10; printf("%d\n",fun(5)*w); } fun(int k) { if(k==0) return w; return(fun(k-1)*k); } A.360 B.3600 C.1080 D.1200 (47) 要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果。能正确招待此功能的函数是 A.funa(int *x,int *y) B.funb(int x,int y) {int *p; {int t; *p=*x;*x=*y;*y=*p;} t=x;x=y;y=t;} C.func(int *x,int *y) D.fund(int x,int y) {*x=*y;*y=*x;} {*x=*x+*y; *y=*x-*y; *x=*x-*y; } (48) 要求函数的功能是在一维数组中查找值;若找到则返回所在的下标值,否则返回0;数列放在到中。不能正确执行的函数是 A.funa(int *a,int n,int x ) B.funb(int *a,int n,int x) { *a=x; {int k; while(a[n]!=x)n--; for(k=1;k<=n;k++) return n; if(a[k]==x)return k; } return 0; } C.func(int a[],int n,int x ) D.fund(int a[],int n,int x ) { int *k; { int k=0; a[0]=x;k=a+n; do while(*k!=x) k--; k++; return k-n; while((k} if(a[k]==x)return k; else return 0; } (49) 若有下面的说明和定义,则sizeof(struct aa) 的值是 struct aa { int r1;double r2; float r3; union uu{char u1[5]; long u2[2]; } ua; } mya; A.30 B.29 C.24 D.22 (50) 用十进制数表示表达式:12/012的运算结果是 A.1 B.0 C.14 D.12
二、填空题:(每空2分,共40分) (11) 下面函数要求用来求出两个整数之和,并通过形参传回两数相加之和值,请填空。 int add(int x,int y, 【11】 z) {【12】 =x+y;} (12) 有以下说明定义和语句,可用a.day引用结构体成员day, 请写出引用结构体成员a.day的其它两种形式 【13】 、【14】 。 struct{int day;char mouth;int year;}a,*b; b=&a; (13) 下面fun函数的功能是将形参x的值转换成二进制数,所得二进制数的每一位数放在一维数组中返回,二进制数的最低位放在下标为0的元素中,其它依此类推。请填空。 fun(int x,int b[]) { int k=0,r; do { r=x% 【15】; b[k++]=r; x/=【16】; } while(x); } (14) 现有如图所示的存储结构,每个结点含两个域,data是指向字符串的指针域,next是指向结点的指针域。请填空完成此结构的类型定义和说明。 struct link {【17】 ; 【18】;} *head; (15) 下面程序把从终端读入的文本用@作为文本结束标志)复制到一个名为bi.dat的新文件中,请填空。 #include FILE *fp; main() { char ch; if((fp=fopen( 【19】))==NULL)exit(0); while ((ch=getchar())!=’@’)fputc(ch,fp); 【20】
1997年9月基础知识和C语言程序设计答案及评分标准 一.选择题((1)~(40)题每题1分,(41)~(50)题每题2分,共60分) |
|
![]() ![]() |