![]() ![]() |
|
1998年9月全国计算机等级考试二级C语言笔试试题及答案 | |
作者:佚名 文章来源:不详 点击数 更新时间:2008/4/18 14:06:34 文章录入:杜斌 责任编辑:杜斌 | |
|
|
一、选择题((1)-(40)每小题1分, (41)-(50)每小题2分, 共60分)
(17)下列DOS命令中,有错误的是 (35)设P1和P2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是 A.k=*P1+*P2; B.p2=k; C.P1=P2; D.K=*P1 * (*P2); (36)设有如下定义: int arr[]={6,7,8,9,10}; int * ptr; 则下列程序段的输出结果为 ptr=arr; * (ptr+2)+=2; printf ("%d,%d\n",*ptr,*(ptr+2)); A.8,10 B.6,8 C.7,9 D.6,10 (37)以下程序的输出结果是 main() { int i,k,a[10],p[3]: K=5; for (i=0;i<10;i++)a[i]=i; for (i=0;i<3;i++)p[i]=a[i*(i+1)]; for (i=0;i<3;i++)k+=p[i]*2; printf("%d\n",k); } A.20 B.21 C.22 D.23 (38)执行以下程序段后,m的值为 int a[2][3]={ {1,2,3},{4,5,6} }; int m,*p; p=&a[0][0]; m=(*p)*(*(p+2))*(*(p+4)); A)15 B.14 C.13 D.12 (39)有以下程序段 char arr[]="ABCDE"; char *ptr; for(ptr=arr;ptr main() { union { int k; char i[2]; } *s,a; s=&a; s->i[0]=0x39; s->i[1]=0x38; printf("%x\n",s->k); } 输出结果是 A.3839 B.3938 C.380039 D.390038 (42)有以下程序 #include main() { int a,b,c=246; a=c/100%9; b=(-1)&&(-1); printf("%d,%d\n",a, B.; } 输出结果是 A.2,1 B.3,2 C.4,3 D.2,-1 (43)设有如下定义: int (*ptr)*(); 则以下叙述中正确的是 A.ptr是指向一维组数的指针变量 B.ptr是指向int型数据的指针变量 C.ptr是指向函数的指针,该函数返回一个int型数据 D.ptr是一个函数名,该函数的返回值是指向int型数据的指针 (44)有以下程序 #include struct stu { int num; char name[10]; int age; }; void fun(struct stu *p) { printf("%s\n",(*p).name); } main() { struct stu students[3]={ {9801,"Zhang",20}, {9802,"Wang",19}, {9803,"Zhao",18} }; fun(students+2); } 输出结果是 A.Zhang B.Zhao C.Wang D.18 (45)设有以下说明和定义: typedef union { long i; int k[5]; char c; }DATE; struct date { int cat; DATE cow; double dog; } too; DATE max; 则下列语句的执行结果是 printf ("%d",sizeof (struct date )+sizeof(max)); A.26 B.30 C.18 D.8 (46)有以下程序 main() { char a[]="programming", b[]="language"; char *p1,*p2; int i; p1=a; p2=b; for(i=0;i<7;i++) if(*(p1+i)==*(p2+i))printf("%c",*(p1+i)); } 输出结果是 A.gm B.rg C.or D.ga (47)有以下程序 viod fun (int a,int b,int C. { a=456; b=567; c=678;} main() { int x=10, y=20,z=30; fun (x,y,z); printf("%d,/%d\n",c, D.; } 输出结果是 A.30,20,10 B.10,20,30 C.456,567,678 D.678,567,456 (48)有以下程序 int fun(int x,int y,int *cp,int *dp) { *cp=x+y; *dp=x-y; } main() { int a, b, c, d; a=30; b=50; fun(a,b,&c,& D.; printf("%d,%d\n", c, D.; } 输出结果是 A.50,30 B.30,J50 C.80,-20 D.80,20 (49)有以下程序 main() { int i, j; for(j=10;j<11;j++) { for(i=9;i=j-1)printf("%d",j); } } 输出结果是 A.11 B.10 C.9 D.10 11 (50)有以下程序 #include "atdio.h" int abc(int u,intv); main () { int a=24,b=16,c; c=abc(a, B.; printf('%d\n", C.; } nt abc(int u,int v) { int w; while(v) { w=u%v; u=v; v=w } return u; } 输出结果是 A.6 B.7 C.8 D.9 二、填空题(每空2分,共40分) 请将每空的正确答案写在答题卡【1】-【20】序号的横线上,答在试卷上不得分. (1) 自动批自理文件名为【1】 。 (2) DOS命令分为内部命令与外部命令,COMP命令属于【2】命令。 (3) 设当前为C盘,现要用一条DOS命令在打印机上输出A盘当前目录下所有扩展名为.DAT的文件内容。这一条DOS命令应为【3】 。 (4) 要将当前盘当前目录下的子目录XYZ中所有扩展名为.BAK 的文件名改成扩展名为.FOR,应使用的DOS命令为【4】 。 (5) 设DOS外部命令文件所在的路径均已用PATH命令打通。现要将当前盘当前目录下的文件WST.TXT设置为只读属性,应使用的DOS命令为【5】 。 (6) 设x和y均为int型变量,且x=1,y=2,则以下表达式的值为【6】 。 1.0+x/y (7) 设i,j,k均为int型变量,则执行完下面的for循环后,k的值为【7】 。 for(i=0,j=10;i<=j;i++,j--) k=i+j; (8) 设有以下定义的语句: int a[3][2]={10,20,30,40,50,60}, (*p)[2]; p=a; 则 *(*(p+2)+1)值为【8】 。 (9) 以下程序的输出结果是【9】 。 #include int fun(int x,int y) { static int m=0,i=2; i+=m+1; m=i+x+y; return m } main() { int j=4,m=1,k; k=fun(j,m); printf("%d,",k); k=fun(j,m); printf("%d\n",k); } (10) 函数fun的功能是:使一个字符串按逆序存放,请填空 void fun (char str[]) { char m; int i,j; for(i=0,j=strlen(str);i<【10】;i++,j--) { m=str[i]; str[i]=【11】; str[j-1]=m; } printf("%s\n",str); } (11) 以下程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串,请填空。 #include"ctype.h" #include"stdio.h" main() { char str[81],*sptr; int i; for(i=0;i<80;i++) { str[i]=getchar(); if(str[i]=='\n') break; } str[i]=【12】; sptr=str; while(*sptr) putchar(*sptr【13】); } (12) 以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。例如:输入的两个字符串分别为abcdef和abceef,则输出为-1。请填空。 #include main() { char str[100],str2[100],c; int i,s; printf("\n input string 1:\n"); gest(str1); printf("\n input string 2:\n"); gest(str2); i=0; while((strl[i]==str2[i]&&(str1[i]!=【14】)) i++; s=【15】; printf("%d\n",s); } (13) 以下程序的功能是:从键盘上输入一个字符串, 把该字符串中的小写字母转换为大写字母,输出到文件test.txt中,然后从该文件读出字符串并显示出来。请填空。 #include main() { FILE *fp; char str[100]; int i=0; if((fp=fopen("text.txt",【16】))==NULL) { printf("can't open this file.\n");exit(0);} printf("input astring:\n"); gest(str); while (str[i]) { if(str[i]>='a'&&str[i]<='z') str[i]=【17】; fputc(str[i],fp); i++; } fclose(fp); fp=fopen("test.txt",【18】); fgets(str,100,fp); printf("%s\n",str); fclose(fp); } (14) 以下程序可以把从键盘上输入的十进制数(long型)以二到十六进制形式输出,请填空。 #include. main() { char b[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C' ,'D','E','F'}; int c[64],d,i=0,base; long n; printf("enter a number:\n"); scanf("%ld",&n); printf("enter new base:\n"); scanf("%d",&base); do { c[i]=【19】; i++; n=n/base; } while(n!=0); printf("transmite new base:\n"); for(--i;i>=0;--i) { d=c[i]; printf("%c",b【20】; } }
1998年9月基础知识和C语言程序设计答案及评分标准 一、选择题((1)-(40)题每题1分;(41)-(50)题每题2分) |
|
![]() ![]() |