1、高级语言程序设计自考题-7 及答案解析(总分:100.00,做题时间:90 分钟)一、单项选择题(总题数:15,分数:30.00)1.下列关于文件随机定位函数 fseek()的描述正确的是( ) A若定位正确返回非零值 B包含在头文件 stdlibh 中 C本函数只能用于二进制文件 D本函数可以使用文件内部指针直接指向需要的某个数据(分数:2.00)A.B.C.D.2.下列语句中,不能将 fp指向的文件的内部指针指向文件尾的是( )Afseek(fp,20L,1); Bfseek(fp,0L,SEEK END );Cfp=fopen(“a.txt“,“ab“); Dfp=fopen(“a.tx
2、t“,“ab+“);(分数:2.00)A.B.C.D.3.执行下列程序段后,*p 的值是( ) char *p=“asdf“; printf(“%c“,*(p+strlen(p); A语句错误 Bs Cd Da(分数:2.00)A.B.C.D.4.关于 for(表达式 1;表达式 2;表达式 3),叙述正确的是( )A表达式 1不可以缺省 B表达式 2不可以缺省C表达式 3不可以缺省 D三个表达式都可以缺省(分数:2.00)A.B.C.D.5.以下对文件型指针的定义,正确的是( )Afile fp; Bfile*fp;CFILE fp; DFILE*fp;(分数:2.00)A.B.C.D.6.
3、若整型数据占两个字节,则以下程序的输出结果是( )main()int a=2,b=4;printf(“%d,%d/n“,a1,a%b );A1,2 B2,2C4,0 D4,2(分数:2.00)A.B.C.D.7.有以下程序( ) main() char p=a,b,C,q=“abc“; printf(“%d%d“,sizeof(p),sizeof(q); 程序运行后输出的结果是 A4 4 B3 3 C3 4 D4 3(分数:2.00)A.B.C.D.8.以下程序的输出结果是( ) main() char a10=“123456789“),*P; int 1; i=8; p=a+i; print
4、f(“%s/n“,p-3); A5678 B6789 C7890 D不确定(分数:2.00)A.B.C.D.9.C语言源程序中常定义多个不同的函数,函数之间不能通过( )传递数据。A虚实结合 B返回值C同名的全局变量 D同名的局部变量(分数:2.00)A.B.C.D.10.下列选项中合法的数组定义是( ) Aint a=“string“; Bint a5=0,1,2,3,4,5; Cchar a=“sting“; Dchar a=0,1,2,3,4(分数:2.00)A.B.C.D.11.下列数组定义并初始化正确的是( )Aint s=(1,2,3,4,5); Bint s5=1,2,3,4,5
5、;Cint s2+3=(1,2,3); Dint s(5)=(1,2,3);(分数:2.00)A.B.C.D.12.对于 C语言中的函数,正确的叙述是( )A两个函数可以相互调用,但不能自己调用自己B程序执行可以始于任何一个函数,但结束必须在主函数C两个函数既可以定义成并列关系又可以定义成嵌套关系D一个 C程序可以由多个文件组成,一个文件又可以由多个函数组成(分数:2.00)A.B.C.D.13.有关变量的叙述,正确的是( ) A形式参数是全局变量 Ba 和 A在 C语言中是同一个变量 C函数体内定义的变量为全局变量 D在所有函数之外定义的变量为全局变量(分数:2.00)A.B.C.D.14.
6、下列语句中,能将 c定义为文件型指针的是( )AFILE c BFILE *cCfile c Dfile *c(分数:2.00)A.B.C.D.15.设变量已正确定义,则以下能正确计算 f=n!的程序段是( ) Af=0: for(j=1;j=n;j+)f*=j; Bf=1; for(j=1;jn;j+)f*=j; Cf=1; for(j=n;j1;j+)f*=j; Df=1 for(j=n;j-2;j-)f*=j;(分数:2.00)A.B.C.D.二、填空题(总题数:10,分数:20.00)16.设有 int x=11;表达式(x+*1/3)的值是 1。(分数:2.00)填空项 1:_17.
7、现在程序的输出是_。 #includestdioh main() int arr10,j,k=0; for(j=0;j10;j+) arrj=j; for(j=1;j4;j+) k+=arrj+j; printf(“%d/n“,k); (分数:2.00)填空项 1:_18.设 i,j,k 均为整型变量,则执行完“for(i=0,j=10;i=j;i+,j-)k=i+j;“之后,k 的值是 1。(分数:2.00)填空项 1:_19.当一个变量占用连续的若干个字节时, 1 的地址就是变量的地址。(分数:2.00)填空项 1:_20.设 int i;,语句 for(i=1;i=10;i+)+i;循环
8、的次数是 1。(分数:2.00)填空项 1:_21.设 char c5=c,d,/0,e,/0);,执行语句 printf(“%s/n“,c );后的结果是 1。(分数:2.00)填空项 1:_22.设 short a53;如果数组 a首地址为 1000,则 a10的地址为 1(按行存储)。(分数:2.00)填空项 1:_23.函数调用时,若形参是一个变量,而对应的实参是一个有确定值的表达式,则函数参数的传递方式是 1传递。(分数:2.00)填空项 1:_24.外部静态变量的作用域是 1。(分数:2.00)填空项 1:_25.若要以八进制输出整型变量,则要在输出语句中加上格式输出符 1。(分数
9、:2.00)填空项 1:_三、程序分析题(总题数:4,分数:16.00)26.#includestdioh main() char *p=“BOOL“,“OPK“,“H“,“ASD“); int; for(i=3;i=0;i-,i-) printf(“%s“,*(p+i); printf(“/n“); (分数:4.00)_27.以下程序运行时输入:12回车,执行后输出结果 #includestdioh main() char ch1,ch2;int n1,n2; ch1=getchar();ch2=getchar(); n1=ch1-0;n2=n1*10+(ch2-0); printf(“%d
10、/n“,n2); (分数:4.00)_28.C盘中 P1.c.txt文件的内容为:abcde。A 盘中 P1.c.txt为空文档。#includestdio.h#includestdlib.hmain()FILE *f1,*f2;int k;if(fl=fopen(“C:/p1.c.txt“,“r“)=NULL)printf(“can not open file! /n“);exit(0);if(f2=fopen(“A:/p1.c.txt“,“w“)=NULL)printf(“can not open file! /n“);exit(0);for(k=1;k=500;k+)if(feof(f1
11、)break;fputc(fgetc(f1),f2);printf(“成功实现复制“);fclose(f1);fclose(f2);(分数:4.00)_29.#includestdioh main() int a=2,4,6,8,10; int y=1,x,*P; p=a1; for(x=0;x3;X+) y+=*(p+x); printf(“%d/n“,y); (分数:4.00)_四、程序填充题(总题数:3,分数:18.00)30.将 26个小写英文字母中的元音字母(a,e,i,o,u)写入到文件 vo.txt中。#includestdio.hvoid main()char_; /*第一空*
12、/FILE*fp;fp=fopen(“vo.txt“,“w“);for(ch=a;ch=z;ch+)if(_)fputc(ch,fp); /*第二空*/_; /*第三空*/(分数:6.00)填空项 1:_31.一个三位整数(100999),若各位数的立方和等于该数自身,则称其为“水仙花数“(如:153=1 3+53+33),找出所有的这种数。 #includestdioh main() int n,a,b,c; for(c=1;c=9;c+) for(b=0;b=9;b+) for(a=0;_;a+)/*第一空*/ n=_;/*第二空*/ if(a*a*a+b*b*b+c*c*c=_)/*第三
13、空*/ printf(“%d/n“,n); (分数:6.00)填空项 1:_32.输入一个正整数,若是素数(或称质数)则输出“Yes”,否则输出“No”。void main()int i,n;scanf(“%d“,_); /*第一空*/printf(“%d“,n);for(i=2;in;i+)if(n%i=0)_; /*第二空*/if(_)printf(“Yes/n“); /*第三空*/else printf(“No/n“);(分数:6.00)填空项 1:_五、程序设计题(总题数:2,分数:16.00)33.编写一个程序,用循环结构输出以下图形。 *(分数:8.00)_34.根据 Fibona
14、cci数列公式: * 计算并输出*前 20项之和。(分数:8.00)_高级语言程序设计自考题-7 答案解析(总分:100.00,做题时间:90 分钟)一、单项选择题(总题数:15,分数:30.00)1.下列关于文件随机定位函数 fseek()的描述正确的是( ) A若定位正确返回非零值 B包含在头文件 stdlibh 中 C本函数只能用于二进制文件 D本函数可以使用文件内部指针直接指向需要的某个数据(分数:2.00)A.B.C.D. 解析:2.下列语句中,不能将 fp指向的文件的内部指针指向文件尾的是( )Afseek(fp,20L,1); Bfseek(fp,0L,SEEK END );Cf
15、p=fopen(“a.txt“,“ab“); Dfp=fopen(“a.txt“,“ab+“);(分数:2.00)A. B.C.D.解析:解析 本题主要考查的知识点为 fopen和 fseek函数。要点透析 A 项表示的是从当前位置后移 20个字节的位置,而不是指向文件尾的位置。3.执行下列程序段后,*p 的值是( ) char *p=“asdf“; printf(“%c“,*(p+strlen(p); A语句错误 Bs Cd Da(分数:2.00)A.B.C.D. 解析:解析 指针变量 P在得到初值“asdf“之后没有初改变过,P 就是字符串“asdf“的首地址,故*P 的值为 a。4.关于
16、 for(表达式 1;表达式 2;表达式 3),叙述正确的是( )A表达式 1不可以缺省 B表达式 2不可以缺省C表达式 3不可以缺省 D三个表达式都可以缺省(分数:2.00)A.B.C.D. 解析:5.以下对文件型指针的定义,正确的是( )Afile fp; Bfile*fp;CFILE fp; DFILE*fp;(分数:2.00)A.B.C.D. 解析:解析 本题主要考查的知识点为文件型指针的定义。要点透析 文件型指针的定义方法为 FILE*文件型指针名 1,*文件型指针名 2,其中的“文件型指针名”是用户选取的标识符。6.若整型数据占两个字节,则以下程序的输出结果是( )main()in
17、t a=2,b=4;printf(“%d,%d/n“,a1,a%b );A1,2 B2,2C4,0 D4,2(分数:2.00)A.B.C.D. 解析:7.有以下程序( ) main() char p=a,b,C,q=“abc“; printf(“%d%d“,sizeof(p),sizeof(q); 程序运行后输出的结果是 A4 4 B3 3 C3 4 D4 3(分数:2.00)A.B.C. D.解析:解析 赋值语句“q=“abc“中赋给字符数组 q的是字符串“abc“,字符串串都包含一个“/0“结束符。8.以下程序的输出结果是( ) main() char a10=“123456789“),*
18、P; int 1; i=8; p=a+i; printf(“%s/n“,p-3); A5678 B6789 C7890 D不确定(分数:2.00)A.B. C.D.解析:解析 main() char a10=“123456789“,*P; int i; i=8; p=a+i; printf(“%s/n“,p-3);/*打印输出的是以 p-3为首地址的字符串*/ 9.C语言源程序中常定义多个不同的函数,函数之间不能通过( )传递数据。A虚实结合 B返回值C同名的全局变量 D同名的局部变量(分数:2.00)A.B.C.D. 解析:10.下列选项中合法的数组定义是( ) Aint a=“string
19、“; Bint a5=0,1,2,3,4,5; Cchar a=“sting“; Dchar a=0,1,2,3,4(分数:2.00)A. B.C.D.解析:11.下列数组定义并初始化正确的是( )Aint s=(1,2,3,4,5); Bint s5=1,2,3,4,5;Cint s2+3=(1,2,3); Dint s(5)=(1,2,3);(分数:2.00)A.B.C. D.解析:解析 数组初始化的格式为:数据类型 数组名长度=初值表;其中在一个定义语句中可以对全部数组赋初值,也可只对其中某些数组赋初值;对某个一维数组的所有元素均赋初值时,数组长度可以省略,其长度等于初值表中初值的个数。
20、12.对于 C语言中的函数,正确的叙述是( )A两个函数可以相互调用,但不能自己调用自己B程序执行可以始于任何一个函数,但结束必须在主函数C两个函数既可以定义成并列关系又可以定义成嵌套关系D一个 C程序可以由多个文件组成,一个文件又可以由多个函数组成(分数:2.00)A.B.C.D. 解析:13.有关变量的叙述,正确的是( ) A形式参数是全局变量 Ba 和 A在 C语言中是同一个变量 C函数体内定义的变量为全局变量 D在所有函数之外定义的变量为全局变量(分数:2.00)A.B.C.D. 解析:14.下列语句中,能将 c定义为文件型指针的是( )AFILE c BFILE *cCfile c
21、Dfile *c(分数:2.00)A.B. C.D.解析:解析 本题主要考查的知识点为文件型指针的定义。要点透析 用户可以用 FILE这个自定义的用户类型符来定义结构型的指针变量,专用于文件处理。15.设变量已正确定义,则以下能正确计算 f=n!的程序段是( ) Af=0: for(j=1;j=n;j+)f*=j; Bf=1; for(j=1;jn;j+)f*=j; Cf=1; for(j=n;j1;j+)f*=j; Df=1 for(j=n;j-2;j-)f*=j;(分数:2.00)A.B.C.D. 解析:解析 f=n!=n(n-1)(n-2)(n-3)-(n-(n-2)1,是自然数 1到
22、n的乘积。语句“for(j=n;j=2;j-)f*=j;“从 j的初值 n开始,依次减 1并将与 f的乘积赋于 f,符合题虑。二、填空题(总题数:10,分数:20.00)16.设有 int x=11;表达式(x+*1/3)的值是 1。(分数:2.00)填空项 1:_ (正确答案:4)解析:解析 “+“运算优先级高于“*“(乘法)故可有(x+1)13=4。17.现在程序的输出是_。 #includestdioh main() int arr10,j,k=0; for(j=0;j10;j+) arrj=j; for(j=1;j4;j+) k+=arrj+j; printf(“%d/n“,k); (
23、分数:2.00)填空项 1:_ (正确答案:12)解析:解析 #includestdioh main() int arr10,j,k=0; for(j=0;j10;j+) arrj=j;j*数组以下标的值为初始值被初始化*/ for(j=1;j4;j+)/*循环起始条件是 j=1*/ k+=arrj+j;/*k=arrj+j+k*/ printf(“%d/n“,k);18.设 i,j,k 均为整型变量,则执行完“for(i=0,j=10;i=j;i+,j-)k=i+j;“之后,k 的值是 1。(分数:2.00)填空项 1:_ (正确答案:10)解析:解析 求的是 i+j的值。每一次循环 i和
24、j都分别加、减 1,故其和值不变。19.当一个变量占用连续的若干个字节时, 1 的地址就是变量的地址。(分数:2.00)填空项 1:_ (正确答案:第一个字节)解析:20.设 int i;,语句 for(i=1;i=10;i+)+i;循环的次数是 1。(分数:2.00)填空项 1:_ (正确答案:0)解析:21.设 char c5=c,d,/0,e,/0);,执行语句 printf(“%s/n“,c );后的结果是 1。(分数:2.00)填空项 1:_ (正确答案:cd)解析:22.设 short a53;如果数组 a首地址为 1000,则 a10的地址为 1(按行存储)。(分数:2.00)填
25、空项 1:_ (正确答案:1006)解析:23.函数调用时,若形参是一个变量,而对应的实参是一个有确定值的表达式,则函数参数的传递方式是 1传递。(分数:2.00)填空项 1:_ (正确答案:值)解析:24.外部静态变量的作用域是 1。(分数:2.00)填空项 1:_ (正确答案:从定义点到程序结束)解析:25.若要以八进制输出整型变量,则要在输出语句中加上格式输出符 1。(分数:2.00)填空项 1:_ (正确答案:%0)解析:三、程序分析题(总题数:4,分数:16.00)26.#includestdioh main() char *p=“BOOL“,“OPK“,“H“,“ASD“); in
26、t; for(i=3;i=0;i-,i-) printf(“%s“,*(p+i); printf(“/n“); (分数:4.00)_正确答案:(ASDOPK)解析:解析 #includestdioh main() char *p=“BOOL“,“OPK“,“H“,“ASD“; int i; for(i=3;i0;i-,i-)/*循环的步进值是 2,因 i做了两次自减 1的运算*/ printf(“%s“,*(p+i);/*打印地址为 p偏移量为 i的字符型数组的内存单元的字符串*/ printf(“/n“); 27.以下程序运行时输入:12回车,执行后输出结果 #includestdioh m
27、ain() char ch1,ch2;int n1,n2; ch1=getchar();ch2=getchar(); n1=ch1-0;n2=n1*10+(ch2-0); printf(“%d/n“,n2); (分数:4.00)_正确答案:(12)解析:解析 #include stdioh main() char ch1,ch2;int n1,n2; ch1=getchar();ch2=getchar();/*变量 ch1和 ch2分别获得初值 1和 2*/ nI=ch1-0;n2=n1*10+(ch2-0);/*变量 ch1和 ch2都以其 ASC值参与运算*/ printf(“%d/n“,
28、n2); 28.C盘中 P1.c.txt文件的内容为:abcde。A 盘中 P1.c.txt为空文档。#includestdio.h#includestdlib.hmain()FILE *f1,*f2;int k;if(fl=fopen(“C:/p1.c.txt“,“r“)=NULL)printf(“can not open file! /n“);exit(0);if(f2=fopen(“A:/p1.c.txt“,“w“)=NULL)printf(“can not open file! /n“);exit(0);for(k=1;k=500;k+)if(feof(f1)break;fputc(f
29、getc(f1),f2);printf(“成功实现复制“);fclose(f1);fclose(f2);(分数:4.00)_正确答案:(成功实现复制)解析:29.#includestdioh main() int a=2,4,6,8,10; int y=1,x,*P; p=a1; for(x=0;x3;X+) y+=*(p+x); printf(“%d/n“,y); (分数:4.00)_正确答案:(19)解析:解析 #includestdioh main() int a=2,4,6,8,10; int y=1,x,*P; p=a1; for(x=0;x3;x+)/*循环的步进值是 1,执行循环
30、体需满足 x3*/ y+=*(p+x);/*与 y一起参与运算的是存储于以“a1“为首地址。偏移量为“x“的内存单元内,它属于数组“im a“的 int型数据*/ printf(“%d/n“,y); 四、程序填充题(总题数:3,分数:18.00)30.将 26个小写英文字母中的元音字母(a,e,i,o,u)写入到文件 vo.txt中。#includestdio.hvoid main()char_; /*第一空*/FILE*fp;fp=fopen(“vo.txt“,“w“);for(ch=a;ch=z;ch+)if(_)fputc(ch,fp); /*第二空*/_; /*第三空*/(分数:6.0
31、0)填空项 1:_ (正确答案:第一空:ch第二空:ch=a|ch=e|ch=i|ch=o|ch=u第三空:fclose(fp))解析:31.一个三位整数(100999),若各位数的立方和等于该数自身,则称其为“水仙花数“(如:153=1 3+53+33),找出所有的这种数。 #includestdioh main() int n,a,b,c; for(c=1;c=9;c+) for(b=0;b=9;b+) for(a=0;_;a+)/*第一空*/ n=_;/*第二空*/ if(a*a*a+b*b*b+c*c*c=_)/*第三空*/ printf(“%d/n“,n); (分数:6.00)填空项
32、 1:_ (正确答案:a=9/*第一空。明确个位数的范围(从 09)*/ 100*c+10*b+a/*第二空。计算并求出这个三位数*/ n/*第三空。将各位数的立方和与这个三位数进行比较以确定其是否为“水仙花数“*/)解析:32.输入一个正整数,若是素数(或称质数)则输出“Yes”,否则输出“No”。void main()int i,n;scanf(“%d“,_); /*第一空*/printf(“%d“,n);for(i=2;in;i+)if(n%i=0)_; /*第二空*/if(_)printf(“Yes/n“); /*第三空*/else printf(“No/n“);(分数:6.00)填空
33、项 1:_ (正确答案:第一空:&n第二空:break第三空:i=n(或 i=n))解析:五、程序设计题(总题数:2,分数:16.00)33.编写一个程序,用循环结构输出以下图形。 *(分数:8.00)_正确答案:(#includestdioh #includestringh void main() int i,j,k; for(i=0;i5;i+)/*循环主体,以确定行数*/ for(k=0;ki;k+)/*次级循环的第一个循环体,确定并输出空格的数目*/ printf(“); for(j=0;j9-2*i;j+)/*次级循环的第 522个循环体,确定并输 in“#“的数日*/ printf(“%c“,#); printf(“/n“); )解析:34.根据 Fibonacci数列公式: * 计算并输出*前 20项之和。(分数:8.00)_正确答案:(#includestdioh main() int i;float f22=1,1,sum=0; for(i=2;i-1=20;i+)/*循环终止条件为 i-1=20,以确保所计算的 sum的值为前 20项的值*/ fi=fi-1+fi-2; sum+=fi/fi-1; printf(“sum=%4f/n“,sum); )解析: