一、选择题((1)-(40)每小题1分, (41)-(50)每小题2分, 共60分) 下列各题 A) 、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。 (1) 微型计算机的性能主要取决于 A) 内存 B) 中央处理器 C) 硬盘 D) 显示卡 (2) 有一个数值152,它与十六进制数6A相等,那么该数值是 A) 二进制数 B) 八进制数 C) 十进制数 D) 四进制数 (3) 使用超大规模集成电路制造的计算机应该归属于 A) 第一代 B) 第二代 C) 第三代 D) 第四代 (4) 已知英文字母a的ASCII代码值是十六进制数61H,那么字母d的ASCII代码值是 A) 34H B) 54H C) 24H D) 64H (5) 一片存储容量是1.44MB的软磁盘,可以存储大约140万个 A) ASCII字符 B) 中文字符 C) 磁盘文件 D) 子目录 (6) 在MS-DOS环境中同时按下[Ctrl]和[Break]两个键,其作用是 A) 终止当前操作 B) 暂停当前操作 C) 关机 D) 热启动 (7) 将二进制数10000001转换为十进制数应该是 A) 127 B) 129 C) 126 D) 128 (8) 磁盘处于写保护状态,那么磁盘中的数据 A) 不能读出,不能删改,也不能写入新数据 B) 可以读出,不能删改,也不能写入新数据 C) 可以读出,可以删改,但不能写入新数据 D) 可以读出,不能删改,但可以写入新数据 (9) 微型机启动后,DOS提示符是C:\>,现提示符变为C:\USER>,则说明刚执行过命令 A) PROMPT B) PROMPT USER C) PROMPT SP$G D) CD USER (10) MS-DOS文件系统目录的组织形式属于 A) 关系型结构 B) 网络型结构 C) 树型结构 D) 直线型结构 (11) 应用软件系统TH的总容量大约1MB,其主要程序文件存放在C:\TH目录中,而数据文件存放在C:\TH\DATA目录中,如果将它们完整地复制到A盘, 应该使用的命令是 A) XCOPY C:\TH A:\ B) XCOPY C:\TH A:\ /S C) XCOPY C:\TH A:\ /M D) XCOPY C:\TH A:\ /P (12) 执行COPY A.TXT+B.TXT 这个DOS命令后,得到的磁盘文件是 A) A.TXT B) B.TXT C) AB.TXT D) A+B.TXT (13) 在WINDOWS中,将一个应用程序窗口最小化之后,得到的磁盘文件是 A) 仍在后台运行 B) 暂时停止运行 C) 完全停止运行 D) 出错 (14) CD-ROM属于 A) 感觉媒体 B) 表示媒体 C)表现媒体 D)存储媒体 (15) 在因特网(Internet)中电子公告板的缩写是 A) FTP B) WWW C) BBS D) E-mail (16) 设x、y、z和k都是int型变量,则执行表达式:x=(y=4,z=16,k=32)后,x的值为 A) 4 B) 16 C) 32 D) 52 (17) 设有如下的变量定义: int i=8, k, a, b; unsigned long w=5; double x=1, 42, y=5.2; 则以下符合C语言语法的表达式是 A) a+=a-=(b=4)*(a=3) B) x%(-3); C) a=a*3=2 D) y=float(i) (18) 假定有以下变量定义: int k=7,x=12; 则能使值为3的表达式是 A) x%=(k%=5) B) x%=(k-k%5) C) x%=k-k%5 D) (x%=k)-(k%=5) (19) 以下叙述中正确的是 A) 输入项可以是一个实型常量,如: scakf("%f",3.5); B) 只有格式控制,没有输入项,也能正确输入数据到内存,例如: scakf("a=%d,b=%d"); C) 当输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如: scakf("%4.2f",&f); D) 当输入数据时,必须指明变量地址,例如: scakf("%f",&f); (20) 设x和y均为int型变量,则以下语句:x+=y,y=x-y;x-=y;的功能是 A) 把x和y按从大到小排列 B) 把x和y按从小到大排列 C) 无确定结果 D) 交换x和y中的值 (21) 以下程序的输出结果是 A) 10 10 B) 12 12 C) 11 10 D) 11 13 main() { int a=12,b=12; printf("%d,%d\n",- -a,+ +b); } (22) 以下程序运行后,输出结果是 A) cde B) 字符c的ASCII码值 C) 字符c的地址 D) 出错 main() { char *s="abcde"; s+=2; printf("%ld\n",s); } (23) 以下程序输出结果是 A) 7 B) 6 C) 5 D) 4 main() { int m=5; if(m++>5) printf("%d\n",m); esle printf("%d\n",m- -); } (24) 当a=1,b=3,c=5,d=5时,执行下面一段程序后,x的值为 A) 1 B) 2 C) 3 D) 6 if(a if(c else if(a if(b else x=3; else x=6; else x=7; (25) 在执行以下程序时,如果从键盘上输入,ABCdef<回车>,则输出为 A) ABCdef B) abcDEF C) abc D) DEF #include main() { char ch; while((ch=getchar())!='\n') { if(ch>='A' && ch<='Z') ch=ch+32; else if(ch>='a' && ch<='z') ch=ch-32; printf("%c",ch); } printf("\n"); } (26) 下面能正确进行字符串赋值操作的语句是 A) char s[5]={"ABCDE"}; B) char s[5]={'A','B','C','D','E'}; C) char *s;s="ABCDEF"; D) char *s; scanf("%s",s); (27) 执行以下程序段时 A) 循环体将执行一次 B) 循环体将执行两次 C) 循环体将执行无限次 D) 系统将提示有语法错误 X=-1; do {x=x*x; } while(! x); (28) 执行以下程序后,输出的结果是 A) -1 B) 1 C) 8 D) 0 main () { int y=10; do { y - -;} while(- - y); printf("%d\n",y - -); } (29) 在下列选项中,没有构成死循环的程序段是 A) int i=100 B) for( ; ;); while(1) { i=i%100+1; if(i>100)break; } C) int k=1000; D) int s=36; do{++k;} while(k>=10000); while(s);--s; (30) 执行语句: for(i=l:i++<4:);后,变量i的值是 A) 3 B) 4 C) 5 D) 不定 (31) 以下程序运行后,如果从键盘上输入ABCDE<回车>,则输出结果为 A) 8 B) 7 C) 6 D) 5 #include #include func { int num=0; while(*(str+num)!='\0') num++; return(num); } main() { char str[10],*p=str; gets(p); printf("%d\n",func(p)); } (32) 运行以下程序后,如果从键盘上输入 china#<回车>,则输出结果为 A) 2,0 B) 5,0 C) 5,5 D) 2,5 #include mair() { int v1=0,v2=0; char ch; while((ch=getchar())!='#') switch(ch) { case 'a'; case 'h'; default; v1++; case '0'; v2++; } printf("%d,%d\n",v1,v2); } (33) 若以下程序所生成的可执行文件名为filel.exe;当打入以下命令执行该程序时; FILEL CHINA BEIJING SHANGHAI 程序的输出结果是 A) CHINA BEIJING SHANGHAI B) FILEL CHINA BEIJING C) C B S D) F C B main(int argc,char *argv[]) { while(arge-->0) { ++argv;printf("%s ",*argv);} } (34) 下面程序运行的结果是 A) 2ba56 B) 6521 C) 6 D) 62 main() { char ch[7]={65ab21"}; int i,s=0 for(i=0;ch[i]>='0' && ch[i]<='9';i+=2) s=10*s+ch[i]-'0'; printf("%d\n",s); } (35) 运行下面的程序,如果从键盘上输入: ab<回车> c <回车> def<回车> 则输出结果为 A) a B) a C) ab D) abcdef b b c c c d d d e f #include #define N 6 main() { char c[N]; int i=0; for( ;i for( i=0;i } (36) 以下程序运行后,输出结果是 A) 8 B) 7 C) 6 D) 5 #include ss(char *s) { char *p=s; while(*p) p++; return(p-s); } main() { char *a="abded"; int i; i=ss(a); printf("%d\n",i); } (37) 以下程序运行后,输出结果是 A) 8,15 B) 8,16 C) 8,17 D) 8,8 func(int a, int b) { static int m=0,i=2; i+=m+1; m=i+a+b; return(m); } main() { int k=4,m=1,p; p=func(k,m);printf("%d,",p); p=func(k,m);printf("%d\n",p); } (38) 以下程序运行后,输出结果是 A) 49.5 B) 9.5 C) 22.0 D) 45.0 #include #define PT 5.5 #define S(x) PT* x * x main() { int a=1,b=2; printf("%4.1f\n",S(a+b)); } (39) 以下程序运行后,输出结果是 A) ABCDEFG B) CDG C) abcdefgh D) abCDefGh main() { static char a[]="ABCDEFGH",b[]="abCDefGh"; char *p1,*p2; int k; p1=a; p2=b; for(k=0;k<=7;k++) if(*(p1+k)==*(p2+k)) printf("%c",*(p1+k)); printf("\n"); ) (40) 以下程序运行后,a的值是 A) 4 B) 1 C) 0 D) 运行时出错,a无定值 main() { int a,k=4,m=6,*p1=&k,*p2=&m; a=p1==&m; printf("%d\n",a); } (41) 以下程序运行后,输出结果是 A) 84 B) 99 C) 95 D) 44 int d=1; fun(int p) { int d=5; d+=p++; printf("%d,d); } main() { int a=3; fun(a); d+=a++; printf("%d\n,d); } (42) 以下程序运行后,输出结果是 A) 6385 B) 22 C) 33 D) 693825 main() { char ch[2][5]={'693","825"},*p[2]; int i,j,s=0; for(i=0;i<2;i++) p[i]=ch[i]; for(i=0;i<2;i++) for(j=0;p[i][j]='0' && p[i][j]<='9';j+=2) s=10*s+p[i][j]-'0'; printf("%d\n",s); } (43) 以下程序运行后,输出结果是 A) 1 B) 7 C) 9 D) 11 fut(int **s, int p[2][3]) { **s=p[1][1];} main() { int a[2][3]={1,3,5,7,9,11}, *p; p=(int *) malloc(sizeof(int)); fut(&p,a); printf("%d\n",*P); } (44) 设有如下定义: int a=1,b=2,c=3,d=4,m=2,n=2: 则执行表达式:(m=a>b)&&(n=c>d)后,n的值为 A) 1 B) 2 C) 3 D) 0 (45) 在执行以下程序时,为了使输出结果为:t=4,则给a和b输入的值应满足的条件是 A) a>b B) aa>b main() { int s,t,a,b; scanf("%d,%d",&a,&b); s=1; t=1; if(a>0)s=s+1; if(a>b)t=s+t; else if(a==b) t=5; else t=2*s; printf("t=%d\n",t); } (46) 以下程序的输出结果是 A) x=4 B) x=8 C) x=6 D) x=12 main() { int i,j,x=0; for(i=0;i<2;i++) { x++; for(j=0;j<=3;j++) { if(j%2)continue; x++; } x++; } printf("x=%d\n",x); } (47) 以下程序运行后,输出结果是 A) 1234567 B) 7654321 C) 1711717 D) 7177171 #inchude #inchude fun(char *w, int n) { char t, *s1,*s2; s1=w: s2=w+n-1; while(s1 { t=*s1++; *s1=*s2--; *s2=t; } } main() { char *p; p="1234567"; fun(p,strlen(p)); puts(p); } (48) 运行以下程序后,如果从键盘上输入65 14<回车>,则输出结果为: A) m=3 B) m=2 C) m=1 D) m=1 main() { int m, n; printf("Enter m,n;"); scanf("%d%d", &m,&n): while (m!=n) { while (m>n)m-=n; while (n>m)n-=m; } printf("m=%d\n",m); } (49) 以下程序运行后,如果从键盘上输入: book <回车> book <空格><回车> 则输出的结果是 A) *8 B) #9 C) #6 D) *9 #include main() { char a1[80],a2[80],*s1=a1, *s2=a2; gets(s1); gets(s2); if(! strcmp(s1,s2)) printf("*"); esle printf("#"); printf("%d/n",strlen(strcat(s1,s2))); } (50) 以下程序运行后,输出结果是 A) 10000 B) 10010 C) 00110 D) 10100 main() { int y=18,i=0,j,a[8]; do { a[i]=y%2; i++ y=y/2; } while(y>=1) for(j=i-1;j>=0;j--) printf("%d",a[j]; printf("\n"); } 二、填空题(每空2分,共40分) 请将每空的正确答案写在答题卡上【1】-【20】序号上,答在试卷上不得分。 (1) DOS中的自动批处理文件的全名是 【1】 。 (2) 在DOS启动盘中,除COMMAND.COM外,还有两个必备的系统文件,它们是MSDOS.SYS(或IBMDOS.COM)与【2】 。 (3) 在DOS下,要将当前目录中AB.TXT文件设置为只读属性,应该使用的完整命令行是【3】 。 (4) 在DOS下,要查看当前目录中所有批处理文件的总字节数,应该使用的完整命令行是 【4】 。 (5) 计算机病毒除有破坏性、潜伏性和激发性外, 还有一个最明显的特性是 【5】 。 (6) 若想通过以下输入语句使a中存放字符串1234,b中存放字符5,则输入数据的形式应该是【6】 : . char a[10],b; scanf("a=%s b=%c",a,&b); : . (7) 下面程序的输出结果是 【7】 char b[]="ABCD"; main() { char *chp; for(chp=b; *chp: chp+=2) printf("%s",chp); printf("\n"); (8) 下面程序输出的结果是 【8】 #define MAX 3 int a [MAX]; main() { fun1( ); fun2( a ); printf("\n");} fun1( ) { int k, t=0; for (k=0; k<MAX; K++,t++) a[k]=t+t; } fun2(int b[]) { int k; for(k=0; k<NAX; k++) printf("%d", *(b+K)); } (9) 以下程序输出的是 【9】 main( ) { int a[10]={19,23,44,17,37,28,49,36}, *p; p=a; printf("%d\n",(p+=3)[3]); } (10) 以下程序输出的是 【10】 main( ) { int i=3, j=2; char *a="DCBA"; printf("%c%c\n",a[i],a[j]); } (11) 以下函数的功能是,把两个整数指针所指的存储单元中的内容进行交换。请填空。 exchange(int *x, int *y) { int t; t=*y; *y= 【11】 ; *x= 【12】 ; } (12) 若以下定义和语句,则sizeof(a)的值是 【13】 ,而sizeof(b)的值是 【14】 struct { int day; char mouth; int year;} a, *b; b=&a; (13) 以下fun函数的功能是:累加数组元数中的值.n为数组中元素的个数, 累加的和值放入x所指的存储单元中,请填空. fun(int b[ ],int n, int *x) { int k, r=0; for(k=0;k 【16】 =r; } (14) 变量root有如图所示有存储结构,其中sp是指向字符串的指针域,next 是指向该结构的指针域,data用以存放整型数. 请填空 , 完成此结构的类型说明和变量root的定义 struct list { char *sp; 【17】 ; 【18】 ; }root; (15) 下面程序把从终端读入的10个整数以二进制方式写到一个名为bi.dat的新文件中,请填空. #include FILE *fp; main() { int i,j; if((fp=fopen( 【19】, "wb"))==NULL) exit(0); for(i=0; i<10; i++) { scanf("%d",&j); fwrite(&j,sizeof(int),1, 【20】 ); } fclose(fp); } 1999年4月 基础知识知识和C语言程序设计 答案及评分标准 一.选择((1)~(40)题每题1分,(41)~(50)题 每题 2分,共60分) (1)B (2)B (3)D (4)D (5)A (6)A (7)B (8)B (9)D (10)C (11)B (12)A (13)A (14)D (15)C (16)C (17)A (18)D (19)D (20)D (21)D (22)C (23)B (24)B (25)B (26)C (27)A (28)D (29)C (30)C (31)D (32)C (33)A (34)C (35)C (36)D (37)C (38)B (39)B (40)C (41)A (42)A (43)C (44)B (45)C (46)B (47)C (48)C (49)B (50)B 二.填空题(每空2 分,共40分) (1) 【1】 AUTOEXEC.BAT (2) 【2】 IO.SYS 或IBMBIO.COM (3) 【3】 ATTRIB AB.TXT+R AB .TXT (4) 【4】 DIR *.BAT或DIR *.BAT\P或DIR *.BAT/W 或DIR*.BAT/W/P或*.BAT/P/W (5) 【5】 传染性或传播性 (6) 【6】 a=1234 b=5 A或a=1234b=5 (7) 【7】 ABCDCD (8) 【8】 024 (9) 【9】 49 (10) 【10】AB (11) 【11】*X (11) 12 T (12) 【13】5 (12) 14 2 (13) 【15】r+b[k]或b[k]或*(b+k)+r (13) 【16】*x (14) 【17】struct list *next (14) 【18】 int data 说明:以上两个答案(17和18)次序可以颠倒. (15) 【19】"bi.dat" (15) 【20】 fp
|