1、高级语言程序设计自考题-3 及答案解析(总分:98.00,做题时间:90 分钟)一、单项选择题(总题数:15,分数:27.00)1.若已定义:int a9,*p=a;并在以后的语句中未改变 P 的值,不能表示 a1地址的表达式是( ) Ap+1 Ba+1 Ca1 D*p1(分数:2.00)A.B.C.D.2.若文件型指针 fp 已经指向某文件的末尾,则函数 feof(fp)的返回值是( )A0 B-1CNULL D非零值(分数:2.00)A.B.C.D.3.下列错误的是( ) Achar s=“China“; Bchar s10=“China“; Cchar s10;s=“China“; Dc
2、har s10=c,h,i,n,a;(分数:1.00)A.B.C.D.4.以下符合 C 语言语法的实型常量是( ) A1.2E0.5 B3.14.159E C5E-3 DE15(分数:2.00)A.B.C.D.5.正确的变量定义是( ) Aunsigned long d=1000; Bfloat m1=m2=10.0; Cchar c1=A,c2=A; Ddouble x=0.618,x=3.14;(分数:2.00)A.B.C.D.6.通常适用于从被调用函数中将一个值传回主调函数的参数传递方式是( ) A利用返回值数据传递方式 B利用形参与实参传递数据的方式 C利用全局变量传递数据的方式 D以
3、上都不对(分数:2.00)A.B.C.D.7.下列语言中不属于面向过程的语言是( ) AB 语言 BC 语言 C汇编语言 DALGOL 语言(分数:2.00)A.B.C.D.8.若有以下语句: char *language=“fortran“,“basic“,“C“,“java“; char *q;q=language+3; 则语句 printf(“%c/n“,*q;的输出是( ) Aq 的值 B字符串“C“ Clanguage3的值 D程序错误,无法得到输出(分数:2.00)A.B.C.D.9.使用语句 scanf(“a=%f,b=%f“,a,b );输入变量 a、b 的值(口代表空格),正
4、确的是( ) A125,2.4 B1.25 口 2.4 Ca=1.25,b= 2.4 Da=1.25 口 b=2.4(分数:1.00)A.B.C.D.10.二进制语言属于( )A面向过程语言 B面向机器语言C面向问题语言 D面向汇编语言(分数:2.00)A.B.C.D.11.在 C 语言中,有值函数的数据类型是指( ) A函数形式参数的数据类型 B函数返回值的数据类型 C调用该函数时的实参的数据类型 D任意指定的数据类型(分数:1.00)A.B.C.D.12.若有下列类型说明语句: char w;int x;float y;double z; 则表达式 w*x+z-y 的结果的数据类型是( )
5、 Achar Bint Cfloat Ddouble(分数:2.00)A.B.C.D.13.在定义了数组 int a610之后,对数组元素的引用不正确的是 A*(a6+2) Ba68 C*(a61+4) Da6+5(分数:2.00)A.B.C.D.14.char 型常量在内存中存放的是( ) A二进制代码值 B十进制代码值 C十六进制代码值 DASC代码值(分数:2.00)A.B.C.D.15.下列程序的运行结果是( )main()int a=3,c=6;printf(“a=%d,b=%d/n“,a,c );Aa=%3,b=%6 Ba=d,b=dCa=3,b=6 Da=%d,b=%d(分数:2
6、.00)A.B.C.D.二、填空题(总题数:10,分数:20.00)16.函数 strcmp1 和函数 strcat2 包含在头文件 3 中。(分数:2.00)填空项 1:_17.“-“称为 1 运算符。(分数:2.00)填空项 1:_18.表达式3(234)的值为 1。(分数:2.00)填空项 1:_19.以下循环体的执行次数是_。 #includestdioh main() int j,k; for(j=0,k=1;j=k+1;j+=2,k-) printf(“%d/n“,j);)(分数:2.00)填空项 1:_20.C 语言中规定,在程序中表示一维数组首地址的表达式可以写成 1,还可写成
7、数组名。(分数:2.00)填空项 1:_21.若有语句:int i=-19,j=i%4;printf(“%d/n“,j);则输出结果是 1。(分数:2.00)填空项 1:_22.设 char s20=“My“;,则执行 strcat(s,“Sun!“)后 s 的内容是 1。(分数:2.00)填空项 1:_23.计算 a、b、C 中最小值的条件表达式为 1。(分数:2.00)填空项 1:_24.设 int a23,p;,将数组 a 的最后一个元素赋值给变量 p 的正确语句是 1。(分数:2.00)填空项 1:_25.执行语句 do x=1;while(x+!=1);后,变量 x 的值是 1。(分
8、数:2.00)填空项 1:_三、程序分析题(总题数:4,分数:17.00)26.#includestdioh int f1(int x,int y)return xy? x:y;) int f2(int x,int y)return xy? y:x; main() int a=4,b=3,c=5,d=2,e,f,g; e=f2(f1(a,b ),f1(c,d );f=f1(f2(a,b ),f2(c,d ); g=a+b+c+d-e-f; printf(“%d,%d,%d/n“,e,f,g); (分数:4.00)_27.void LE(int*a,int b ) int x=*a: print
9、f(“%d/t%d/n“,*a,b ); *a=b;b=x; main() int x=10,y=25; LE(x,y); printf(“%d/t%d/n“,x,y); (分数:5.00)_28.void main()int i,a5,*p;for(i=4;i=0;i-):*(a+i)=i;for(p=a;pa+5;p+)printf(“%d/t“,*p);printf(“/n“);(分数:4.00)_29.#define SIZE 4 main() int nSIZE=8,3,4,1; int i,j; for(i=0;iSIZE;i+) printf(“%d“,ni); for(j=1;
10、j=ni;j+)printf(“*“): printf(“/n“); (分数:4.00)_四、程序填充题(总题数:3,分数:18.00)30.键入数据至二维数组,求出其中的最大值、最小值及所有元素之和。void main()int i,j;int a34,max,min,sum=0;for(i=0;i3;i+)for(j=0;j4;j+)scanf(“%d“,_); /*第一空*/max=min=a00;for(i=0;i3;i+)for(j=0;j4;j+)_; /*第二空*/if(aijmax)max=aij;if(aijmin)min=aij;printf(“max=%d,min=%d,
11、sum=%d/n“,_); /*第三空*/(分数:6.00)填空项 1:_31.下面程序是要建立一个文本文件 datal,从键盘输入一个实数(正数表示收入,负数表示支出),用fwrite 函数写入文件 datal 中。输入数字 0 则结束。#includestdio.h#includestdlib.hmain()_float a;if(fp=fopen(“datal“,“w“)=NULL)printf(“can not open the file!“);exit(0);while(1)scanf(“%f“, for(j=1;j=ni;j+)printf(“*“): printf(“/n“);
12、(分数:4.00)_正确答案:(8* 3* 4* 1*)解析:四、程序填充题(总题数:3,分数:18.00)30.键入数据至二维数组,求出其中的最大值、最小值及所有元素之和。void main()int i,j;int a34,max,min,sum=0;for(i=0;i3;i+)for(j=0;j4;j+)scanf(“%d“,_); /*第一空*/max=min=a00;for(i=0;i3;i+)for(j=0;j4;j+)_; /*第二空*/if(aijmax)max=aij;if(aijmin)min=aij;printf(“max=%d,min=%d,sum=%d/n“,_);
13、/*第三空*/(分数:6.00)填空项 1:_ (正确答案:第一空:&aij第二空:sum+=aij(或 sum=sum+aij)第三空:max,min,sum)解析:31.下面程序是要建立一个文本文件 datal,从键盘输入一个实数(正数表示收入,负数表示支出),用fwrite 函数写入文件 datal 中。输入数字 0 则结束。#includestdio.h#includestdlib.hmain()_float a;if(fp=fopen(“datal“,“w“)=NULL)printf(“can not open the file!“);exit(0);while(1)scanf(“%
14、f“,&a );_fclose(fp);(分数:6.00)填空项 1:_ (正确答案:FILE *fp;if(a=0)break;fwrite(&a,sizeof(float),1,fp);)解析:32.以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。 #includestdioh main() int i,a20,sum,count; sum=count=0: for(i=0;i20;i+)scanf(“%d“,_);/*第一空*/ for(i=0;i20;i+) if(_)/*第二空*/ count+; _;/*第三空*/ printf(“count=%d,sum=%d
15、/n“,count,sum); (分数:6.00)填空项 1:_ (正确答案:a0/*第一空。对数纰进行初始化*/ ai0/*第二空。判定数组元 ai是否大于 0*/ sum+=ai/*第三空。对大于 0 的数组元素求和 1*/)解析:五、程序设计题(总题数:2,分数:16.00)33.从键盘输入一串字符(!作为结束标志),保存到文件“user.dat”中。(分数:8.00)_正确答案:(#includestdio.hvoid main()FILE*fp;char ch;fp=fopen(“user.dat“,“w“);while(ch=getchar()!=!)fputc(ch,fp);fclose(fp);)解析:34.从键盘输入 50 个整数,计算并输出大于等于零的数的平均值(保留小数点后两位)。(分数:8.00)_正确答案:(#includestdio.h#define N 50main() int aN,i,n=0;float sum=0,aver;for(i=0;iN;i+)scanf(“%d“,&ai);for(i=0;iN;i+)if(ai=0)sum=sum+ai;n+;if(n=0)printf(“All numbers are negative!/n“);else aver=sum/n;printf(“aver=%7.2f/n“,aver);)解析: