一、选择题((1)-(40)每小题1分, (41)-(50)每小题2分, 共60分) 下列各题 A) 、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。 (1) 通常所说的主机主要包括 A) CPU B) CPU和内存 C) CPU、内存与外存 D) CPU、内存与硬盘 (2) 在微机系统中,最基本的输入输出模块BIOS存放在 A) RAM中 B) ROM中 C) 硬盘中 D) 寄存器中 (3) 一个24*24点阵的汉字字形信息所占的字节数为 A) 2 B) 24 C) 32 D) 72 (4) bit的意思是 A) 字 B) 字长 C) 字节 D) 二进制位 (5) 某学校的工资管理程序属于 A) 系统程序 B) 应用程序 C) 工具软件 D) 文字处理软件 (6) 与十六进制数BB等值的十进制数是 A) 187 B) 188 C) 185 D) 186 (7) 设一张软盘已染上病毒,能清除病毒的措施是 A) 删除该软盘上的所有文件 B) 格式化该软盘 C) 删除该软盘上的所有可执行文件 C) 删除该软盘上的所有批处理文件 (8) 一张3.5英寸双面高密度软盘片的容量为 A) 360KB B) 720KB C) 1.44MB D) 1.2MB (9) 与二进制小数0.1等值的十六进制小数为 A) 0.1 B) 0.2 C) 0.4 D) 0.8 (10) DOS系统的热启动与冷启动的不同之处为热启动时 A) 不检测键盘、处设接口与内存 B) 不提示用户输入日期与时间 C) 不用装入COMMAND.COM文件 D) 不能从软盘启动 (11) 为了将磁盘上的文件K1,K2,K3,依次连接在文件K4的后面,应使用命令 A) COPY K1+K2+K3 K4 B) COPY K1+K2+K3+K4 C) COPY K1+K2+K3+K4 K4 D) COPY K4+K1+K2+K3 (12) 下列文件名中可以作为批处理文件名的是 A) AUTOEXC.C B) AUTOEXEC C) ATX.BAT D) AUTO.TXT (13) 要打印输出当前盘的根目录下所有文件与子目录清单,应使用命令 A) DIR \ >PRN B) TYPE \ >PRN C) DIR >PRN C) TYPE >PRN C) DIR >PRN D) TYPE >PRN (14) 设可执行文件ABC.EXE所需要的本该由键盘输入的数据已经按格式存放在文件XYZ中,并要求执行结果放在XYZ中输入数据的后面。下列命令中正确的是 A) ABCXYZ B) ABC>XYZ C) ABC<XYZ D) ABC>>XYZ (15) 设当前盘中某一目录路径为\A\B\C,当前目录为\A。下列命令中肯定出错的是 A) MD \A\C B) CD.. C) MD \A\B\A D) MD \A\B (16) 设A盘的目录结构如下: 根目录 │ ┌────┬────┬──┴───┬─────┬────┐ │ │ │ │ │ │ ABC D1子目录 DX.C Q.DAT D2子目录 A.FOR │ │ ┌────┬┴──┬───┐ ┌─────┼────┐ │ │ │ │ │ │ │ B.PAS D3子目录 Y.BAS A.C A1.C D4子目录 XYZ.C │ ┌───┬──┴─┬───┐ │ │ │ │ QR.C NA.C A.TXT B.C 如果当前盘为C盘,A盘的当前目录为\D2,则下列对A盘上文件QR.C的指定中,合法的是 A) \D2\D4\QR.C B) D4\QR.C C) A:D4\QR.C D) A:D2\D4\QR.C (17) 下列DOS命令中,有错误的是 A) TYPE AAB.FOR>CON B) TYPE ? AB.FOR C) COPY *.C CON D) COPY CON PRN (18) 设当前盘为A盘,为了将当前盘当前目录下的文件AB1.TXT连接在C盘根目录下的文件XYZ.TXT的后面,正确的命令是 A) COPY C:\XYZ.TXT+AB1.TXT B) COPY AB1.TXT>>C:\XYZ.TXT C) TYPE AB1.TXT>C:\XYZ.TXT D) AB1.TXT+C:\XYZ.TXT>C:\XYZ.TXT (19) 下列命令中合法的是 A) DISKCOPY A: A: B) DISKCOPY A: C: C) DISKCOPY C: A: D) DISKCOPY C: D: (20) 设当前盘中某一目录路径为\A\B\C\D\XU,当前目录为\A。要将根目录下扩展名为.C的所有文件复制到当前目录下,并将扩展名改为.FOR,应使用命令 A) COPY \*.C *.FOR B) COPY *.C \A\*.FOR C) COPY *.FOR \*.C D) COPY \A\*.C *.FOR (21) 下列不正确的转义字符是 A) '\\' B) '\" C) '074' D) '\0' (22) 若有以下定义: char a; int b; float c; double d; 则表达式a*b+d-c值的类型为 A) float B) int C) char D) double (23) 表示关系x<=y<=z的c语言表达式为 A) (X<=Y)&&(Y<=Z) B) (X<=Y)AND(Y<=Z) C) (X<=Y<=Z) D) (X<=Y)&(Y<=Z) (24) 设a=1,b=2,c=3,d=4,则表达式: A) 765.12<回车> B) i=100,f=765.12<回车> C) 100<回车>765.12<回车> D) x=100<回车>y=765.12<回车> (29) 设x和y均为int型变量,则执行下的循环后,y值为 for(y=1,x=1;y<=50;y++) { if(x>=10))break; if (x%2==1) { x+=5; continue;} x-=3; } A) 2 B) 4 C) 6 D) 8 (30) 给出以下定义: char x[ ]="abcdefg"; char y[ ]={'a','b','c','d','e','f','g'}; 则正确的叙述为 A) 数组X和数组Y等价 B) 数组x和数组Y的长度相同 C) 数组X的长度大于数组Y的长度 D) 数组X的长度小于数组Y的长度 (31) 以下叙述中不正确的是 A) 在不同的函数中可以使用相同名字的变量 B) 函数中的形式参数是局部变量 C) 在一个函数内定义的变量只在本函数范围内有效 D) 在一个函数内的复合语句中定义的变量在本函数范围内有效 (32) 假定a和b为int型变量,则执行以下语句后b的值为 a=1; b=10; do { b-=a; a++; } while (b--<0) ; A) 9 B) -2 C) -1 D) 8 (33) 设j为int型变量,则下面for循环语句的执行结果是 for( j=10;j>3;j--) { if(j%3)j--; --j; --j; printf("%d ",j); } A) 6 3 B) 7 4 C) 6 2 D) 7 3 (34) 设有以下宏定义: #define N 3 #define Y(n) ( (N+1)*n) 则执行语句:z=2 * (N+Y(5+1));后,z的值为 A) 出错 B) 42 C) 48 D) 54 (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分) (1)B (2)B (3)D (4)D (5)B (6)A (7)B (8)C (9)D (10)A (11)D (12)C (13)A (14)B (15)D (16)C (17)B (18)A (19)A (20)A (21)C (22)D (23)A (24)D (25)B (26)C (27)C (28)B (29)C (30)C (31)D (32)D (33)B (34)C (35)B (36)D (37)B (38)A (39)D (40)D (41)A (42)A (43)C (44)B (45)B (46)D (47)A (48)C (49)B (50)C 二、填空题(每空2分,共4分) (1)至(5)题中所有字母都允许大,小写或大小写混合 (1) 【1】AUTOEXEC.BAT (2) 【2】外部(答 外部命令不扣分) (3) 【3】COPY A:*.DAT PRN (在 COPY 后面与A:*.DAT后面都至少要有一个空格) (4) 【4】RENXYZ\*.BAK *.FOR 或RENAME XYZ\*.BAK*.FOR (在REN 或RENAME 后面与XYZ\*.BAK 后面都至少要有一个空格) (5) 【5】ATTRIB+R WST.TXT (在ATTRIB 后面与+R后面都至少有一个空格)或ATTRIB WST.TXT+R(在ATTRIB后面与WST.TXT后面都至少要有一个空格) (6) 【6】1.0或1 (7) 【7】10 (8) 【8】60 (9) 【9】8,17 (10) 【10】 strlen(str )/2或strlen(str)/2.0或0.5*strlen(str)或j或j-1 【11】 str[j-1]或*(str+j-1) (11) 【12】 '\0' 或0 【13】 ++ (12) 【14】 '\0'或0 【15】 strl[i]-str2[i] (13) 【16】 "w"或"w+"或"wt"或"w+t"或"""wt+" 【17】 str[i]-32 或str[i]-('a'-'A'或str[i]-'a'+'A' 【18】 "r"或"r+"或"r+t"或"rt+" (14) 【19】 n%base 【20】 [d]
|