1、高级语言程序设计自考题-24 及答案解析(总分:100.00,做题时间:90 分钟)一、B单项选择题/B(总题数:15,分数:30.00)1.以下选项中属于 C 语言数据类型的是_ A.复数型 B.逻辑型 C.双精度型 D.集合型(分数:2.00)A.B.C.D.2.下列描述中不正确的是_ A.字符型数组中可以存放字符串 B.可以对字符型数组进行整体输入、输出 C.可以对整型数组进行整体输入、输出 D.字符型变量无法存放字符串(分数:2.00)A.B.C.D.3.请选出合法的 C 语言赋值语句_ A.int a=b=58 B.i+; C.a=58,b=58 D.k=int(a+b);(分数:2
2、.00)A.B.C.D.4.以下是 C 语言保留字的是_ A.int B.Unsigned C.Double D.floated(分数:2.00)A.B.C.D.5.以下程序的输出结果是_main()int k=18;printf(“%d,%o,%x/n“,k,k,k); A.18,022,0x12 B.18,18,18 C.18,0x12,022 D.18,22,12(分数:2.00)A.B.C.D.6.C 语言中下列叙述正确的是_ A.不能使用 do-while 语句构成的循环 B.do-while 语句构成的循环,必须用 break 语句才能退出 C.do-while 语句构成的循环,当
3、 while 语句中的表达式值为非零时结束循环 D.do-while 语句构成的循环,当 while 语句中的表达式值为零时结束循环(分数:2.00)A.B.C.D.7.以下合法的数组说明是_ A.char a6=“string“ B.int a=0,1,2,3,4,5; C.char a=“string“; D.int a5=0,1,2,3,4,5;(分数:2.00)A.B.C.D.8.能正确表示 a 和 b 同时为正或同时为负的逻辑表达式是_ A.a*b0 B.(a+b0)a=(-i=j)?-i:+j;b=i+;c=j;printf(“%d,%d,%d/n“,a,b,c);输出的结果是_
4、A.1,1,3 B.2,1,3, C.1,1,2 D.4,2,4(分数:2.00)A.B.C.D.10.阅读以下程序:fun(char *s1,char *s2)int i=0;while(s1i=s2ireturn(s1i=/0此函数的功能是_ A.将 s2 所指字符串赋给 s1 B.比较 s1 和 s2 所指字符串是否相等,若相等,函数值为 1,否则函数值为 0 C.比较 s1 和 s2 所指字符串的大小,若 s1 比 s2 的大,函数值为 1,否则函数值为 0 D.比较 s1 和 s2 所指字符串的长度,若 s1 比 s2 的长,函数值为 1,否则函数值为 0(分数:2.00)A.B.C
5、.D.11.typedef structint n;char c;double x;STD;则以下选项中,能正确定义结构体数组并赋初值的语句是_ A.STD apple2=1,A,32,2,B,45; B.STD apple2=1,“A“,32,2,“,45; C.struct apple2=1,A,2,B; D.struct apple2=1,“A“,32.5,2,“B“,45.0;(分数:2.00)A.B.C.D.12.若有以下说明和语句struct workerint no;char *num;work,*p=则以下引用方式不正确的是 A.work.no B.(*p).no C.work
6、-no D.workno(分数:2.00)A.B.C.D.13.下面程序段的运行结果是_main()char a8=“abcdefg“;char b4=“ABC“;strcpy(a,b);printf(“%c“,a3); A.C B./0 C.C D.f(分数:2.00)A.B.C.D.14.已知函数 apple 的定义为 void apple(),则函数中 void 的含义是_ A.执行函数 apple()后,函数没有返回值 B.执行函数 apple()后,函数不再返回 C.执行函数 apple()后,可以返回任意类型 D.以上三个答案都是错的(分数:2.00)A.B.C.D.15.使用系统
7、函数 sqrt()时,应在程序开头写的编译预处理命令是 A.#includestring.h B.#includemath.h C.#includestdio.h D.includestdlib.h(分数:2.00)A.B.C.D.二、B填空题/B(总题数:10,分数:20.00)16.C 语言规定常量有整型常量、_、_、字符串常量。(分数:2.00)填空项 1:_17.增 1、减 1 运算符是_运算符,结合性是_。(分数:2.00)填空项 1:_18.强制性数据类型转换的格式为:_。(分数:2.00)填空项 1:_19.跳过之后的语句,重新判断循环控制条件,决定是否继续循环的语句是_。(分数
8、:2.00)填空项 1:_20.字符串连接函数 strcat(字符数组,字符串)的返回值为_。(分数:2.00)填空项 1:_21.取地址运算符为_,它和_是逆运算。(分数:2.00)填空项 1:_22.存储类型为自动型,它的存储类型符为_,外部参照型的存储类型符为_。(分数:2.00)填空项 1:_23.当调用 putchar 函数时,必须在程序清单的开头写上_ 。(分数:2.00)填空项 1:_24.按文件中的数据存放格式,可以把磁盘文件分为_和_。(分数:2.00)填空项 1:_25.若 fseek 函数返回 0,则表明定位_(正确/错误)。(分数:2.00)填空项 1:_三、B程序分析
9、题/B(总题数:4,分数:16.00)26.main() int i; for(i=0;i4;i+) switch(i) case 1:printf(“%d“,i); case 2:prIntf(“%d“,i); case 4:printf(“%d“,i); default:printf(“%d“,i); (分数:4.00)_27.#includestdio.h main() char b=“CDEFGH“; char *chp= while(-chp putchar(*chp); printf(“/n“); (分数:4.00)_28.void funcl(int i); void func2
10、(int i); char st=“hello,ketty!“; void funcl(int i) printf(“%c“,sti); if(i3)i+=2;func2(i); void func2(int i) printf(“%c“,sti); if(i3)i+=2,funcl(i); main() int i=0;funcl(i);printf(“/n“);(分数:4.00)_29.struct H int x;int *y;xy2; void f(struct H *p) (p+1)-x=10; (*p).x=15; (*p).y= (*(p+1).y= main() struct
11、H *q=xy; f(q); printf(“%d,%d/n“,*(q-y),*(xy0.y) (分数:4.00)_四、B程序填充题/B(总题数:3,分数:18.00)30.函数 f 用于计算数组各元素值的平方,主函数调用 f 并输出各元素的值。 void f(int a,int s) int i; for(i=0;ia;i+)_;/*第一空*/ main() int i,b5=1,2,3,4,5; f(5,_);/*第二空*/ for(i=0;i5;i+)printf(“%5d“,_); /*第三空*/ printf(“/n“); (分数:6.00)填空项 1:_31.一个三位整数(1009
12、99),若各位数的立方和等于该数自身,则称其为“水仙花数”(如:153=13+53+33),找出所有的这种数。#includestdio.hmain()int n,a,b,c;for(c=1;c=9;c+)for(b=0;_;b+)/*第一空*/for(a=0;a=9;a+)n=_;/*第二空*/if(a*a*a+b*b*b+c*c*c=_)/*第三空*/printf(“%d/n“,n);(分数:6.00)填空项 1:_32.下列给定程序中,函数 fun 的功能是:判断 ch 中的字符是否与 str 所指串中的某个字符相同;只要有相同的,就什么也不做;若都不同,则将 ch 中的字符插在串的最后
13、,成为新的 字符串。 #includestdio.h #includestring.h void fun(_,char ch)/*第一空*/ while(*str if(*str!=ch) *str=ch; _; /*第二空*/ main() char s81,c; printf(“/n please enter a string:/n“); _; /*第三空*/ printf(“/n please enter the character to search:“); c=getchar(); fun(s,c); printf(“/n the result is%s/n“s); (分数:6.00
14、)填空项 1:_五、B程序设计题/B(总题数:2,分数:16.00)33.编写一个程序,其功能是:输出两个字符串对应位置相等的字符,并输出其位置号(自然编号)。(分数:8.00)_34.调用函数 huiwen 检查一个字符串是否是回文。当字符串是回文时,函数返回“yes”;否则函数返回“no!”,并在主函数中输出。所谓回文即正向与反向的拼写都一样,例 如:adgda。(分数:8.00)_高级语言程序设计自考题-24 答案解析(总分:100.00,做题时间:90 分钟)一、B单项选择题/B(总题数:15,分数:30.00)1.以下选项中属于 C 语言数据类型的是_ A.复数型 B.逻辑型 C.双
15、精度型 D.集合型(分数:2.00)A.B.C. D.解析:考点 数据的类型 解析 C 语言中的数据类型包括短整型、长整型、单精度型、双精度型、字符型等。2.下列描述中不正确的是_ A.字符型数组中可以存放字符串 B.可以对字符型数组进行整体输入、输出 C.可以对整型数组进行整体输入、输出 D.字符型变量无法存放字符串(分数:2.00)A.B.C. D.解析:考点 数组的输入/输出 解析 字符数组可以通过格式输入/输出函数中的“%s“格式对字符串整体输入/输出,但是整型数组无法整体输入/输出。3.请选出合法的 C 语言赋值语句_ A.int a=b=58 B.i+; C.a=58,b=58 D
16、.k=int(a+b);(分数:2.00)A.B. C.D.解析:考点 C 语言的赋值语句 解析 在赋值语句后要用“;”作为结束,在定义类型的同时不允许连续对两个变量赋值,所以 A、C 错误,而数据类型说明符需要放在最前面,所以 D 错。4.以下是 C 语言保留字的是_ A.int B.Unsigned C.Double D.floated(分数:2.00)A. B.C.D.解析:考点 C 语言的保留字 解析 在 C 语言中有特殊含义的单词称为“保留字”,也称“关键字”,主要用于构成语句。所有的保留字均由小写字母组成。5.以下程序的输出结果是_main()int k=18;printf(“%d
17、,%o,%x/n“,k,k,k); A.18,022,0x12 B.18,18,18 C.18,0x12,022 D.18,22,12(分数:2.00)A.B.C.D. 解析:考点 输出格式 解析 “%d,%o,%x/n“表示分别输出的是十进制、八进制和十六进制。在输出八进制和十六进制时不输出 0 和 0x 这两个进制说明符。6.C 语言中下列叙述正确的是_ A.不能使用 do-while 语句构成的循环 B.do-while 语句构成的循环,必须用 break 语句才能退出 C.do-while 语句构成的循环,当 while 语句中的表达式值为非零时结束循环 D.do-while 语句构成
18、的循环,当 while 语句中的表达式值为零时结束循环(分数:2.00)A.B.C.D. 解析:考点 do-while 循环 解析 do-while 语句构成的循环,不一定要用 break 语句才能退出,当while 语句中的表达式值为零时也可结束循环。7.以下合法的数组说明是_ A.char a6=“string“ B.int a=0,1,2,3,4,5; C.char a=“string“; D.int a5=0,1,2,3,4,5;(分数:2.00)A.B. C.D.解析:考点 数组初始化 解析 字符串“string”长度为 6,但是因为系统在字符串后面加上/0作为结束符,所以占 7 个
19、字节,A 项中字符串超出其容量,应为 a7;同理,D 项中超出了数组容量;而 C项中,字符串不能赋值给字符变量,应 赋单个字符。8.能正确表示 a 和 b 同时为正或同时为负的逻辑表达式是_ A.a*b0 B.(a+b0)a=(-i=j)?-i:+j;b=i+;c=j;printf(“%d,%d,%d/n“,a,b,c);输出的结果是_ A.1,1,3 B.2,1,3, C.1,1,2 D.4,2,4(分数:2.00)A.B.C. D.解析:考点 条件运算符 解析 这种条件表达式的一般形式为:表达式 1?表达式 2:表达式 3,条件运算符的执行顺序是先求解表达式 1,若非零则求解表达式 2,否
20、则求解表达式 3,所求表达式即为整个条件表达式的值。(-i=j+ +)中,i 先自减为 2,i=j 则执行-i,i 变为 1,即 a=1;b=i,i+,所以b=1;j 一直没变化,c=2,所以答案为 C。10.阅读以下程序:fun(char *s1,char *s2)int i=0;while(s1i=s2ireturn(s1i=/0此函数的功能是_ A.将 s2 所指字符串赋给 s1 B.比较 s1 和 s2 所指字符串是否相等,若相等,函数值为 1,否则函数值为 0 C.比较 s1 和 s2 所指字符串的大小,若 s1 比 s2 的大,函数值为 1,否则函数值为 0 D.比较 s1 和 s
21、2 所指字符串的长度,若 s1 比 s2 的长,函数值为 1,否则函数值为 0(分数:2.00)A.B. C.D.解析:考点 函数的调用 解析 形参为两个数组的地址,while(s1i=s2ichar c;double x;STD;则以下选项中,能正确定义结构体数组并赋初值的语句是_ A.STD apple2=1,A,32,2,B,45; B.STD apple2=1,“A“,32,2,“,45; C.struct apple2=1,A,2,B; D.struct apple2=1,“A“,32.5,2,“B“,45.0;(分数:2.00)A. B.C.D.解析:考点 typedef 和结构体
22、的初始化 解析 STD 被 typedef 定义为结构体的类型说明符,且无结构体变量名,属于直接定义,所以只能用 STD 进行初始化,C,D 项错误;而成员二为字符变量,B 项中的双引号说明为字符串,不符合格式,所以选择 A 项。12.若有以下说明和语句struct workerint no;char *num;work,*p=则以下引用方式不正确的是 A.work.no B.(*p).no C.work-no D.workno(分数:2.00)A.B.C.D. 解析:考点 结构体成员的引用 解析 结构体成员的引用可以分为(*结构指针).成员名,结构体变量.成员名,结构指针-成员名,D 项应改
23、为 p-no 或者 work.no。13.下面程序段的运行结果是_main()char a8=“abcdefg“;char b4=“ABC“;strcpy(a,b);printf(“%c“,a3); A.C B./0 C.C D.f(分数:2.00)A.B.C. D.解析:考点 strcpy 函数 解析 strcpy(s1,s2)函数的功能是把字符串 2 覆盖到字符串上,数组 a 变为“ABC/Oefg“,所以 a3为 C。14.已知函数 apple 的定义为 void apple(),则函数中 void 的含义是_ A.执行函数 apple()后,函数没有返回值 B.执行函数 apple()
24、后,函数不再返回 C.执行函数 apple()后,可以返回任意类型 D.以上三个答案都是错的(分数:2.00)A. B.C.D.解析:考点 调用函数返回值的类型 解析 函数的一般定义格式为:存储类型符数据类型符函数名(形式参数表)。有返回值函数的数据类型可以选取任意的数据类型符,而无返回值函数的数据类型符只能用“void”表示不返回值。15.使用系统函数 sqrt()时,应在程序开头写的编译预处理命令是 A.#includestring.h B.#includemath.h C.#includestdio.h D.includestdlib.h(分数:2.00)A.B. C.D.解析:考点 编
25、译预处理命令 解析 系统函数 sqrt()为求正平方根函数,是数学处理函数的一种,它包含在头文件“math.h”中。所以在程序中使用它时应在程序开头写上编译预处理命令“#includemath.h“。二、B填空题/B(总题数:10,分数:20.00)16.C 语言规定常量有整型常量、_、_、字符串常量。(分数:2.00)填空项 1:_ (正确答案:实型常量、字符常量)解析:考点 常量类型 解析 常量类型有整型常量、实型常量、字符常量和字符串常量。17.增 1、减 1 运算符是_运算符,结合性是_。(分数:2.00)填空项 1:_ (正确答案:单目,自右向左)解析:考点 增 1,减 1 运算符
26、解析 增 1,减 1 运算符都是单目运算符,右结合性。18.强制性数据类型转换的格式为:_。(分数:2.00)填空项 1:_ (正确答案:(数据类型符)(表达式))解析:考点 数据类型转换规则 解析 运算结果的强制性数据类型转换格式为:(数据类型符)(表达式)。19.跳过之后的语句,重新判断循环控制条件,决定是否继续循环的语句是_。(分数:2.00)填空项 1:_ (正确答案:continue 语句)解析:考点 continue 语句的功能 解析 continue 语句的功能是跳过其下面的语句,再次判断循环条件。20.字符串连接函数 strcat(字符数组,字符串)的返回值为_。(分数:2.0
27、0)填空项 1:_ (正确答案:字符数组的首地址)解析:考点 strcat 函数 解析 strcat 函数的功能是将字符串连接到字符数组中,组成新的字符串存入字符数组,并返回字符数组的地址。21.取地址运算符为_,它和_是逆运算。(分数:2.00)填空项 1:_ (正确答案: for(i=0;i4;i+) switch(i) case 1:printf(“%d“,i); case 2:prIntf(“%d“,i); case 4:printf(“%d“,i); default:printf(“%d“,i); (分数:4.00)_正确答案:(011112223)解析:27.#includestd
28、io.h main() char b=“CDEFGH“; char *chp= while(-chp putchar(*chp); printf(“/n“); (分数:4.00)_正确答案:(F)解析:28.void funcl(int i); void func2(int i); char st=“hello,ketty!“; void funcl(int i) printf(“%c“,sti); if(i3)i+=2;func2(i); void func2(int i) printf(“%c“,sti); if(i3)i+=2,funcl(i); main() int i=0;funcl
29、(i);printf(“/n“);(分数:4.00)_正确答案:(hlo)解析:29.struct H int x;int *y;xy2; void f(struct H *p) (p+1)-x=10; (*p).x=15; (*p).y= (*(p+1).y= main() struct H *q=xy; f(q); printf(“%d,%d/n“,*(q-y),*(xy0.y) (分数:4.00)_正确答案:(10,10)解析:四、B程序填充题/B(总题数:3,分数:18.00)30.函数 f 用于计算数组各元素值的平方,主函数调用 f 并输出各元素的值。 void f(int a,in
30、t s) int i; for(i=0;ia;i+)_;/*第一空*/ main() int i,b5=1,2,3,4,5; f(5,_);/*第二空*/ for(i=0;i5;i+)printf(“%5d“,_); /*第三空*/ printf(“/n“); (分数:6.00)填空项 1:_ (正确答案:si=si*si b bi)解析:31.一个三位整数(100999),若各位数的立方和等于该数自身,则称其为“水仙花数”(如:153=13+53+33),找出所有的这种数。#includestdio.hmain()int n,a,b,c;for(c=1;c=9;c+)for(b=0;_;b+
31、)/*第一空*/for(a=0;a=9;a+)n=_;/*第二空*/if(a*a*a+b*b*b+c*c*c=_)/*第三空*/printf(“%d/n“,n);(分数:6.00)填空项 1:_ (正确答案:b=9 c*100+b*10+a n)解析:32.下列给定程序中,函数 fun 的功能是:判断 ch 中的字符是否与 str 所指串中的某个字符相同;只要有相同的,就什么也不做;若都不同,则将 ch 中的字符插在串的最后,成为新的 字符串。 #includestdio.h #includestring.h void fun(_,char ch)/*第一空*/ while(*str if(*
32、str!=ch) *str=ch; _; /*第二空*/ main() char s81,c; printf(“/n please enter a string:/n“); _; /*第三空*/ printf(“/n please enter the character to search:“); c=getchar(); fun(s,c); printf(“/n the result is%s/n“s); (分数:6.00)填空项 1:_ (正确答案:char*str *(str+1)=0(为字符串加上结束符) gets(s))解析:五、B程序设计题/B(总题数:2,分数:16.00)33.
33、编写一个程序,其功能是:输出两个字符串对应位置相等的字符,并输出其位置号(自然编号)。(分数:8.00)_正确答案:(#includestdio.h main() char *c,*s; int i=0; gets(c);/*字符数组 c 获得字符串内容*/ gets(s);/*字符数组 s 获得字符串内容*/ while(ci/*输出该字符*/ printf(“%d/n“,i+1);/*输出该字符的位置号(自然编号)*/ )解析:34.调用函数 huiwen 检查一个字符串是否是回文。当字符串是回文时,函数返回“yes”;否则函数返回“no!”,并在主函数中输出。所谓回文即正向与反向的拼写都
34、一样,例 如:adgda。(分数:8.00)_正确答案:(#includestdio.h char *huiwen(char*str)/*回文验证函数,采用地址转递方式*/ char*p1,*p2;int i,t=0; p1=str;p2=str+(strlen(str)-1);/*p1 和 p2 将分别获得字符串头和尾(非/0)的地址*/ for(i=0;i=strlen(str)/2;i+) if(*p1+!=*p2-)t=1;break;/*将字符串两端字符进行对比,并向中间靠拢。出现对称不相等字符(字符串不是回文)就终止循环,将变量 t 置为 1*/ if(!t)return(“yes!“); else return(“no!“); main() (char str50 printf(“Input:“);scanf(“%s“,str); printf(“%s/n“,huiwen(str); )解析: