1、全国自考(高级语言程序设计)模拟试卷 6 及答案与解析一、单项选择题1 C 语言中错误的 int 类型常数是( )(A)123(B) 1F7(C) 38(D)OxAF2 以下属于 C 语言保留字的是( )(A)define(B) put(C) fclose(D)extern3 sizeof(float)是( )(A)函数调用(B) int 型表达式(C) float 型表达式(D)非法表达式4 结构体变量各成员内存分配的顺序是( )(A)顺序的(B)逆序的(C)随机的(D)只分配一个最大成员内存占用量5 若定义了 int a;char b;float c ;, 则表达式 a*b-c 的类型是(
2、 )(A)float(B) char(C) int(D)double6 若有以下定义和语句: char *s1=“12345“ ,*s2=“1234“: printf(“%dn“,strlen(strcpy(s1,s2); 则输出结果是( )(A)4(B) 5(C) 6(D)不确定7 若 x、y 均是 int 型变量,则执行以下语句后的结果是( ) for(x=1;x5;x+=2) for(y=1;y5;y+) printf(“%2d“ ,x*y); if(y=4)printf(“n“); (A)1 2 3 4 3 6 9 12(B) 2 3 4 5 3 4 5 6(C) 1 2 3 4 5
3、6 9(D)2 3 4 3 6 9 6 9 128 设整型变量 m、na、b 的值均为 1,执行(m=a=b)(n=ab)后 m,n 的值是( )(A)0,1(B) 1,0(C) 1,1(D)0,09 char 型常量在内存中存放的是( )(A)二进制代码值(B)十进制代码值(C)十六进制代码值(D)ASC 代码值10 下面程序段所表示的数学函数关系是( ) y=-1 if(x!=0)if(x0)y=1;else y=0 ; (A) (B)  (C)  (D) 11 现有下列程序语句,执行后的结果是( ) #includestdio h void main()
4、char s1100=“123“,s2100=“qwer“; puts(s1);puts(s2); printf(“%s%s“,s1,s2); (A)123 qwer 123 qwer(B) 123 qwer 123qwer(C) 123qwerl23qwer(D)123qwer 123qwer12 假定所有变量均已正确说明,下列程序段运行后 x 的值是( ) a=b=c=0;x=60; if(!a)x-; else if(b)if(c)x=3; else x+=4;(A)3(B) 4(C) 60(D)6313 若有以下定义,则不能正确地表示数组中的元素的是( ) char *s=“1,2,3
5、,4,5,6,7,8,9,0,“;(A)*s(B) s9(C) *(s+1)(D)*(s+10)14 设有下列数据定义语句,则“printf(“%dn“,d0y/d0x*d1x);“ 的输出是( ) structint x;int y;d2=1,3,2 ,7) ;(A)0(B) 1(C) 3(D)615 执行以下程序段后,m 的值是( ) int a23=1,2,3 ,4,5,6); int m,*ptr; ptr=a00; m=(*ptr)*(*(ptr+2)*(*(ptr+4);(A)15(B) 24(C) 45(D)不确定二、填空题16 若有说明 int i,j,k;则表达式 i=10,
6、j=20 ,k=30 ,k*=i+j 的值为_。17 print(“%5.3fn“,123456.12345);输出为_。18 表达式3(234)的值为_。19 执行语句“int s=0,n=5;while(-n)s+=n ;“ 后,变量 s、n 值依次为_。20 程序中使用了字符串函数(如 scanf),则必须包含的头文件名为_。21 访问结构体数组元素 ak的成员 b,写作_。22 执行语句“for(s=0 ,i=1;i11;i+)if(i=6)continue;s+=i;)t 后,s 值为_。23 执行语句“n=1;if(n=5)n+;“后,变量 n 值为_。24 计算 a、b 、C 中
7、最小值的条件表达式为_ 。25 执行语句“a=5+(c=6); “后,变量 a、c 的值依次为_。三、程序分析题26 输入数据:2743回车。 #includestdioh main() int c; while(c=getchar()!=n) switch(c-2) case 0: case 1:putchar(c+4); case 2:putchar(c+4);break; case 3:putchar(c+3); case 4:putchar(c+2);break; printf(“n“); 27 #includestdioh void swap(int *P,int*q) int t;
8、 t=*P;*P=*q;*q=t; main() int a=10,b=20;swap(a,b); printf(“%d%dn“,a ,b); 28 若输入 3 个整数 3,2,1回车则下面程序的输出结果是 #includestdioh main() int i,n,aa10=0 ,0 ,0,0,0,0; scanf(“%d%d%d“,n,aa0 ,aa1); for(i=0;i =n;i+) printf(“%d“,aai) ; 29 #includestdioh typedef struct abc int a,b,c; ; main() struct abe s2=1,2,3),4,5,
9、6; int t=-s0a+s1 b; printf(“%dn“,t); 四、程序填充题30 下面程序段的功能是将形参 x 的值转换成二进制数,所得二进制数的每一位数放在一维数组中返回,二进制数的最低位放在下标为 0 的元素中,其他以此类推。 #include main(int x, int b) int k=0,r,i; scanf(“%d“,x) ; do r=x%2; b_=r;/*第一空*/ x/=2; while(_);/*第二空*/ for(_);i=0;i-)/*第三空*/ printf(“%d“,bi) ; 31 下面程序是将字符串 P 中的所有字符复制到字符串 b 中,要求每
10、复制三个字符后插入一个空格。 #includestdioh void cp(char *p,char *b) int i,k=0; while(*p) i=0; while(_)/*第一空*/ bk=*P; k+;p+;i+ ; if(*p) _;/* 第二空*/ _;/*第三空*/ main() char a20,b20; gets(a); cp(a, b); puts(b); printf(“n“); 32 下列给定程序中,函数 fun()的功能是:读人一个字符串(长度20),将该字符串中的所有字符按 ASC码降序排序后输出。 #includestdioh void fun(char t)
11、 char c; int i,j; for(i=0;_;i+)/*第一空*/ for(j=i+1;j=strlen(t) ; j+) if(_)/*第二空*/ c=tj; tj=ti; ti=c; main() char s81; printf(“Please enter a character string:n“); gets(s); printf(“nnBefore sorting:n%s“,s); _;/*第三空*/ printf(“nAfter sorting decreasingly:n%sn“ ,s); 五、程序设计题33 编程要求输出两个字符串对应位置相等的字符,并输出其位置号(
12、自然编号)。34 建立一个磁盘文件,文件名由键盘输入,文件内容也由键盘输入。文件内容的输入以“*“作为输入结束标志。全国自考(高级语言程序设计)模拟试卷 6 答案与解析一、单项选择题1 【正确答案】 B2 【正确答案】 D3 【正确答案】 B【试题解析】 sizeof(float) 的用意是求 float 型数据的长度。sizeof()是一个运算符,得到的值是整型数据,故它是一个 int 型表达式。4 【正确答案】 A5 【正确答案】 A6 【正确答案】 A【试题解析】 strcpy(s1 , s2)将字符串“1234“ 全部复制到 s1 中,将原来的内容覆盖。s1 中的 12345 分别被
13、12340 取代。故最终计算得出答案为 4。7 【正确答案】 A【试题解析】 此题为一个简单的 for 循环嵌套。外层步进值为 2,循环中断条什是 x5;内层步进值为 1,循环中断条件是 y5。语句“if(y=4)printf(“n“):“的用意是当 y=4 时回车换行。8 【正确答案】 B【试题解析】 在语句“(m=a=b)(n=ab)“中运算符 “=“的优先级高于赋值运算符“=“,故 m 和 n 的值分别是“a=b“和“a b“这两个表达式的逻辑值。9 【正确答案】 D10 【正确答案】 C【试题解析】 因语句“if(x!=0)if(x0)y=1;elsey=0;“ 中的判定条件是“x!=
14、0“和“x 0“,故此语句只确定 x0 和 x0 时 y 的值。当 x=0 时 y=-1,当 xO 时y=0,x 0 时 y=1。11 【正确答案】 B【试题解析】 puts()函数的作用是输出字符数组中存放的字符串,并在输出完成后回车换行。12 【正确答案】 D【试题解析】 a=b=c=0;x=60; if(!a)x-;/* 执行后,x 的值自减 1。此时 x=59*/ elseif(b)if(c)x=3;/*变量 b、c 的值都是“0“ 不执行“x=3“*/ elsex+=4;/*因不能满足“if(b)if(c)“ 的条件,执行“x+=4“,此时 x=63*/ 13 【正确答案】 D【试题
15、解析】 *(s+10)表示由 s 的首地址向后偏移 10 个字节,产生数组地址越界。14 【正确答案】 D15 【正确答案】 A【试题解析】 *ptr、“*(ptr+2)“和“*(ptr+4)“ 的值分别是 1、3 和 5,故答案选A。二、填空题16 【正确答案】 90017 【正确答案】 12345618 【正确答案】 419 【正确答案】 100【试题解析】 循环体“while(-n)s+=n ;“连续执行直到 n 等于 0 时为止。20 【正确答案】 stdioh21 【正确答案】 akb22 【正确答案】 49【试题解析】 语句“for(s=0,i=1;i11;i+)if(i=6)co
16、ntinue;s+=i;“ 中循环体被执行 10 次。其中当 i=6 时,循外体内“s+=i ;“不被执行。23 【正确答案】 6 解知析:语句中“if(n=5)“一句给 n 赋以 5 值,执行“n+ ;“ 之后n 的值为 6。24 【正确答案】 a d? a:(bc?(d=b):(d=c)25 【正确答案】 11 6三、程序分析题26 【正确答案】 66877【试题解析】 #include stdioh main() int c; while(c=getchar()!=n/*从键盘获得字符*/switch(c-2)/*开始进行分支选择*/ case 0: case 1:putchar(c+4
17、) ; /*如果此行语句被执行,则其下面的一行语句将被无条件执行。*/ case 2:putchar(c+4) ; break;/*如果此行语句被执行则仅执行这一行。*/ case 3:putchar(c+3) ; /*同 casel*/ case 4:putchar(c+2) ; break;/* 同 case3*/ printf(“n“);27 【正确答案】 20,10【试题解析】 #include stdioh void swap(int *P,int *q)/*参数传递方式采用地址传递 */ int t; t=*p;*p=*q;*q=t ;/* 交换 a 与 b 的值*/ main()
18、 int a=10,b=20;swap(a,b);/*调用函数 swap()*/ printf(“%d%dn“,a,b);28 【正确答案】 0【试题解析】 #include stdioh main() int i,n, aa10=0,0 ,0,0,0,0; scanf(“%d%d%d“,8n,aa0 ,aa1);/*输入时因格式不匹配而导致n,aa0,aa1 三个变量只有 n 获得值 3*/ for(i=0;i =n;i+) printf(“%d“,aai); 29 【正确答案】 4【试题解析】 #include stdioh typedef struct abc int a,b,C; ;/
19、*定义一个结构体类型*/ main() struct abc s2=1,2, 3,4,5,6;/*定义一个结构体数组 s2并赋初值*/ int t=-s0a+s1b;/*引用结构体数组元素的成员进行计算,计算 t 的值*/ printf(“%dn“,t) ; 四、程序填充题30 【正确答案】 k+/*第一空。将余数 r 赋值给数组元素 bk并使 k 自加 1,为下一次循环做准备*/ x/*第二空。当 x=0 时则终止循环。当算术运算获得的值小于 1 时,变量将被赋于 0 值*/ i=k-1/*第三空。在循环体内最高位获值后,k 又自加 1 一次;故输出时需将 k 的值减 1 以使第一次输出能正
20、确地输出最高位的值*/31 【正确答案】 i3*P/*第一空。当复制 3 个字符后循环终止。注意此处*P并小多余,加入这一项是为了判断前要复制的字符是否为空。*/ bk+=/*第二空。输入空格,并使 k 自增 1。*/ bk=0/*第三空。在字符串末尾加上字符串结束标志。*/32 【正确答案】 i=strlen(t)/*第一空。设定循环上限,以减少不必要的比较束提高程序效率*/ titj/*第二空。如果 ti内所包含的字符变量的 ASC值小于 tj内所包含的字符变量的 ASC,则执行后面语句以交换其位置。*/ fun(s)/*第三空。对函数 fun(s)进行调用进行排序,参数传递方式采用地址传
21、递方式。*/五、程序设计题33 【正确答案】 #includestdioh main() char*c,*s ; int i=0; gets(c);/*字符数组 c 获得字符串内容*/ gets(s);/*字符数组 s 获得字符串内容*/ while(eisi)/* 相应位置的两个字符都不为空*/ if(ci=si)/*判断相应位置的字符是否相同*/ printf(“%ct“,ci);/*输出该字符*/ printf(“%dn“,i+1);/*输出该字符的位置号(自然编号)*/ 34 【正确答案】 #includestdioh #includestdlib h main() char ch,fname20; FILE *fp; scanf(“%s“,fname); if(fp=fopen(fname,“w“)=NULL)/*如果 fp 为空则创建文件失败*/ printf(“Can not open the file required“); exit(0); ch=getchar(); while(ch=*) fputc(ch,fp); putchar(ch); eh=getchar(); /*对文件输入内容*/ fclose(fp);/*关闭文件*/
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1