1、全国自考(高级语言程序设计)模拟试卷 14 及答案与解析一、单项选择题1 C 语言程序的基本单位是( )(A)程序字段(B)语句(C)函数(D)字符2 若定义 mt i,*p;指向 i 的赋值语句是( )(A)p=&i;(B) *p=*&i;(C) *p=i;(D)*p=&i ;3 下面程序main() int a10=1,2,3,4,5,6,7,8,9,10,*p=a;printf(“dn“,*(p+2);的输出是( )(A)4(B) 3(C) 1(D)24 下面程序的输出是( )void apple(int *x)printf(“ dn“,+*x) ;main() int a=25;app
2、le( &a);(A)23(B) 24(C) 25(D)265 在 C 语言中,下列说法不正确的是( )(A)调用函数时,只能把实参的值传送给形参(B)在函数中,最好使用全局外部变量(C)形式参数只是局限于所在函数(D)被说明为 statlc 存储类型的外部变量是全局变量6 若有定义:f1oat *p3 ;则以下叙述中正确的是( )(A)定义了一个基类型为 f1oat 的指针变量 p,该变量具有 3 个指针(B)定义了一个指针数组 p,该数组含有 3 个元素,每个元素都是基类型为 f1oat的指针(C)定义了一个名为*p 的整型数组,该数组含有 3 个 f1oat 类型元素(D)定义了一个可指
3、向一维数组的指针变量 p,所指一维数组应具有 3 个 f1oat类型元素7 设有以下定义和语句int a32=1,2,3,4,5,6 ,*p3 ;p0=a2;则*(p0+1)所代表的数组元素是( )(A)a11(B) a10(C) a21(D)128 C 语言程序设计中,用户定义的函数可以嵌套调用,还可以( )(A)宏调用(B)嵌套创建(C)先调用再定义(D)递归调用9 下列函数返回值的数据类型是( )fun (int x) int y;y=4*x -5;return y;(A)int(B) void(C) f1oat(D)不确定10 有以下定义#include char a10,*b =a
4、;不能给数组 a 输入字符串的语句是 ( )(A)gets(a)(B) gets( &a0)(C) gets(a0)(D)gets(b)11 以下所列各函数的首部中,正确的是( )(A)void apple( var:Integer,var b:lnteger)(B) void apple(int a,b)(C) void apple(int a,int b)(D)Sub play(a as integer,b as integer)12 下列程序的输出结果是( )main()char*s=“12134211“; int v4=0 ,0,0,0 ,k,i ;for(k=0;*(s+k) ;k+
5、)switch(*(s+k)case 1:i =0;case 2:i=1;case 3:i=2;case 4:i=3;vi+;for(k=0;k=A &chB&C AIIAB 的值是_。21 以下程序的输出结果是_。x=2;do printf(“*“);x- - ;while(x) ;22 设有数据定义语句 structchar n20;10ng m30;x;,则为变量 x 所分配的内存字节数是_个。23 在 C 语言中,一个函数一般由两部分组成,它们是_和_。24 有语句 typedef int*ST;ST p;则 p 的类型是_ 。25 文件打开时,原有文件内容不被删除,为位置指针移动到文
6、件末尾,可做添加或读操作的方式是_。三、程序分析题26 #include typedef struct apple 10ng i;int k3 ; DATE ;struct dateint cat,DATE cow;double dog; too;DATE max;main() printf( “dn“ ,sizeof( struct date) + sizeof( max ) ; 27 假为 “ testtxt“的文本件存在 。#include “stdioh“#include “stdlibh“main() 11LE * fp;char * s3 = “123“, “abcd“,“7890
7、“ ;int k;if ( fp = fopen ( “testtxt“,“a + “) = NULL) printf( “File not openV n“),exit(0) ; for ( k =0;k struck ks int a;int * b; s4,*p;main() int n = 1,i;printf( “n“) ;p + ;29 在 C 盘一个名为 temptxt 的文件夹。#include #include main() int i,n;FILE* fp ;if (fp = fopen( “c : temptxt“,“w + “) = NULL) printf( “can
8、 not set the temp filen“) ;exit(0) ; for(i = 1;1 main() unsigned x;char c;scanf(“d,c“ ,&x,&c) ;switch(c) caseA:printf(“cl“,x);_; /*第一空 */caseB:printf(_);break; /*第二空*/caseC:printf(“x“,x);break ; /*第三空*/_ printf( “input error“);31 下面程序的作用是求满足以下算式的 XYZ 的值,请在“_”处填入正确的内容。 main() int x,y,z,j,result=768;
9、for(x=0 ;_;x+) /*第一空*/ for(y =0 ;y 32 下面程序是要建立一个文本文件 datal,从键盘输入一个实数,用 fwrite 函数写入文件 datal 中。输入数字 0 则结束。#include#includemain()_/*第一空*/f1oat a;if(fp=fopen( “datal“,“w“)=NULL) printf( “can not open the file!“);exit(0) ;while(1)scanf(“f“,&a) ;_/*第二空*/_/*第三空*/fc10se( fp)五、程序设计题33 在屏幕上显示输出 a 盘根目录下名为 “str
10、ing* txt”的文本文件读取的前 20 个字符组成的字符串。34 有一个字符串,包含 n 个字符。写一个函数,其功能是将此字符串中从第 m 个字符开始的全部字符复制成另一个字符串。要求在主函数中输入字符串及 m 值并输出复制结果。全国自考(高级语言程序设计)模拟试卷 14 答案与解析一、单项选择题1 【正确答案】 C【试题解析】 C 程序是由若干个函数构成的,它的基本单位是函数。2 【正确答案】 A【试题解析】 p 被定义为指向整型变量的指针,只能存储地址,&取地址运算符,&i 代表 i 的地址,p=&i;是使 p 指向 i 的赋值语句。3 【正确答案】 B【试题解析】 数组名 a 指向数
11、组的首地址,a+2 指针移动指向了“3”,所以输出的是 3。4 【正确答案】 D【试题解析】 主函数中把 a 的地址&a 作为实参传递给 app1e 函数,*x 的值为25,自加 1 就是 26,所以答案为 D。5 【正确答案】 B【试题解析】 全局外部变量破坏了模块的独立性,过多使用全局外部变量会使程序很容易误用变量,出现混乱。6 【正确答案】 B【试题解析】 f1oat *p3;定义了一个指针数组,指向 f1oat 型的数据,有 3 个数组元素,每一个都是指向数组的指针。7 【正确答案】 C 【试题解析】 p0为指向数组的指针,p0=a2表示第三行数组的首地址赋给p0;p0+l 指针指向第
12、三行第二个元素,即 a21。8 【正确答案】 D【试题解析】 C 语言允许函数的嵌套调用和递归调用,所谓嵌套调用就是函数甲调用了乙,乙调用了丙。所谓递归调用就是指函数调用自己。9 【正确答案】 A【试题解析】 在 C 语言中,当函数类型为 int 时,函数类型名 int 可以不写,系统默认为 int。10 【正确答案】 C【试题解析】 字符串输入函数 gets()的参数只能是指针变量。11 【正确答案】 C【试题解析】 函数的定义格式为:函数返回值类型名函数名(类型名形参 1,类型名形参 2,类型名形参 n),所以只有选项 C 符合。12 【正确答案】 B【试题解析】 *s=“12134211
13、“,把字符串的首地址给予指针 s,另外 case 语句中都无 break,一旦 case 语句执行会一直执行到最后一句,i=3,因此 vi+;只给v3增 1。字符串的长度为 8,都能在 switch 语句中执行到 case 语句,所以输出 0 0 0 8。13 【正确答案】 D【试题解析】 A 项为 a0的值加 i;B 项不是地址且不合法;C 项为第 i 个元素的值,不是地址。14 【正确答案】 A【试题解析】 外部变量只能定义成无存储类型或 static 类型;在定义内部变量时,省略存储类型,系统默认为 auto 类型;外部变量不能重名,但是内部变量能重名;extem 类型不允许初始化。15
14、 【正确答案】 B【试题解析】 ch=A&chB&CA)|(AB)。21 【正确答案】 * 【试题解析】 当 x=0 时循环结束。22 【正确答案】 140【试题解析】 char n20占 20 个字节,10ng m 30中,每个元素占 4 个字节,一共 120 个字节,所以为 x 分配的内存字节数为 140。23 【正确答案】 函数头,函数体【试题解析】 通常把一对花括号括住的部分称为“函数体”,函数体前面的部分是函数头。24 【正确答案】 指向整型的指针变量【试题解析】 typedef 基本数据类型符*用户类型符定义了基本数据类型符类型的指针变量。25 【正确答案】 a+ 【试题解析】 “
15、a+”打开一个已存在的文本文件,可以读取数据,也可以写数据到文件尾部。三、程序分析题26 【正确答案】 3027 【正确答案】 12abc789028 【正确答案】 3,529 【正确答案】 13 5 7 9四、程序填充题30 【正确答案】 break“。 “,xdefault;31 【正确答案】 x#inclide/*因包含函数 exit(0),故需在预编译时加入头文件一 stdlibh“*/main() FILE*fp;char821;if(fp=fopen(*a;8kirrgtxt“,“r“)=NULL) printf(“File cant be opened“);exit(0) ;fg
16、ets(s ,21,rp );/*从文件获得 20 个字符并组字符串存入字符数组*/rputs(s,stdout);/*从屏幕显示输出,8tcl Orlt 是显示器输出设备对应的文件型指针*/34 【正确答案】 #include #include char copy8tr( char*p1,char *p2,int m)int n=0;while(nm-1)/*寻找第 m 个字符/In+;p1+;while( *p1!=0)/复制从第 m 个字符到字符串结束这一段字符到*p2 中*/*p2=*p1;p1+;p2+;*p2=0;main()int m;char str180,str2 80;printf(“P1ease input a string from? n“);scanf(“d“,&m);if( strlen( strl)m)printf( “nError input!“);e1se copystr( strl,str2,m);/*调用函数 copystr()进行字符串输出*/printf(“nResult is:sn ,str2“);