1、高级语言程序设计自考题12高级语言程序设计自考题-12(总分:100.00,做题时间:90分钟)一、单项选择题(总题数:15,分数:30.00)1.可以作为自定义标识符的是( )A2x BbreakCm-n Dm_n(分数:2.00)A.B.C.D.解析:解析 主要考查的知识点为自定义标识符。要点透析 A项以数字开头,B项为保留字,C项含有非字母、数字、下划线的字符,只有D项是正确的。2.在定义int a65之后,对a中元素的引用正确的是( )Aa25 Ba60Ca01 Da0,0(分数:2.00)A.B.C.D.解析:解析 本题主要考查的知识点为对二维数组元素的引用。要点透析 a65的行下标
2、的取值范围是05,列下标的取值范围是04,超出此范围的错误。D项的格式错误。3.设int a=4,b;则执行b=a1;语句后,b的结果是( )A8 B2C16 D10(分数:2.00)A.B.C.D.解析:解析 本题主要考查的知识点为位移位运算符。要点透析 “”为左移运算符,移位时将数据看成二进制数,题中表达式表示将a左移1位,0100左移一位后所对应的十进制数是8。4.执行表达式x=(y=1,z=2,k=3)后,x的值为( )A6 B3C2 D1(分数:2.00)A.B.C.D.解析:解析 本题主要考查的知识点为逗号表达式。要点透析 在逗号表达式中,最后一个表达式的值为逗号表达式的值。5.表
3、达式的值为0的是( )A5/5%5 B52C14 D0x7&7(分数:2.00)A.B.C.D.解析:解析 主要考查的知识点为各种运算符的使用。要点透析 A项中“/”和“%”的优先级相同,最终值为1。B项为关系运算,结果为真,即1。D项为位逻辑运算,结果仍为7。6.执行下列程序段后的输出结果是( )int x=12;while(-x10) printf(k);Akkkk BkkkCkk Dk(分数:2.00)A.B.C.D.解析:解析 本题主要考查的知识点为自减运算符-。要点透析 -运算符作前缀时的运算规则是先减一,后使用对象,所以当程序执行完第一次以后x的值是11,再执行第二次时x的值为10
4、,条件不成立,程序不再执行。此循环只能被执行一次。7.设int x=6;,执行语句x+=x-=x*;后,x的值是( )A-60 B0C6 D36(分数:2.00)A.B.C.D.解析:8.下列程序的运行结果是( )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.00)A.B.C.D.解析:9.以下说法中不正确是( )A使用while循环时,循环变量初始化的操作应在循环语句之前完成Bwhile循环是先判断表达式,后执行循环体语句Cdo-while和for循环均是先执行循环体
5、语句,后判断表达式Dfor,while和for-while循环中的循环体均可以由空语句构成(分数:2.00)A.B.C.D.解析:解析 本题主要考查的知识点为for、while和do-while循环的特点。要点透析 for循环是先判断表达式,后执行循环体语句。10.设int b5=1,2,3,4,5,6,7;,则元素b12的值是( )A0 B2C6 D7(分数:2.00)A.B.C.D.解析:解析 主要考查的知识点为二维数组元素的初始化。要点透析 在数组中,没有被赋初值的元素的默认值为零。11.在C语言中,引用数组元素时,其数组下标的数据类型允许是( )A整型常量 B整型表达式C整型常量或整型
6、表达式 D任何类型的表达式(分数:2.00)A.B.C.D.解析:解析 本题主要考查的知识点为数组下标的数据类型。要点透析 引用数组元素时,数组下标必须是整型,可以是常量,也可以是表达式。12.存储整数-12345时,在二进制文件和文本文件中占用的字节数分别是( )A2和2 B2和6C6和6 D6和2(分数:2.00)A.B.C.D.解析:解析 本题主要考查的知识点为二进制文件和文本文件的存储。要点透析 二进制文件中数据都是按其二进制方式存放的,文本文件中数据都是将其转换成对应的ASCII代码字符来存放的。题中-12345属于短整型,所以以二进制文件存储时占用2个字节。13.执行下列程序段后输
7、出的结果是( )int x,y,z=1;for(x=1,y=-1;xy;x+,y-)z+;printf(%d/n,z);A1 B2C5 D6(分数:2.00)A.B.C.D.解析:14.运行下列程序后,输出结果是( )void fun(int x,int y,int *cp,int *dp)*cp=x+y;*dp=x-y;main()int a=6,b=2;fun(a+b,a-b,&a,&b);printf(%d,%d/n,a,b);A6,2 B8,4C12,4 D8,2(分数:2.00)A.B.C.D.解析:15.fread(buf,32,2,fp)的功能是( )A从fp文件流中读出整数32
8、,并存放buf中B从fp文件流中读出整数32和2,并存放在buf中C从fp文件流中读出32个字节的字符,并存放在buf中D从fp文件流中读出2个32个字节的字符,并存放在buf中(分数:2.00)A.B.C.D.解析:解析 本题主要考查的知识点为fread函数的功能。要点透析 该函数是用来从fp所指向的文件当前位置读取2个32字节长的数据,存入以buf为首的内存区。二、填空题(总题数:10,分数:20.00)16.设a=6,b=5,c=4,则abc的值为 1。(分数:2.00)填空项1:_(正确答案:0)解析:17.使用系统函数getchar1,必须在程序的开头写 2命令。(分数:2.00)填
9、空项1:_(正确答案:#includestdio.h)解析:18.函数中的形参和调用时的实参都是数组名时,传递方式为 1。(分数:2.00)填空项1:_(正确答案:地址传递)解析:19.设int a,b=5;,则执行表达式a=b-2=3后a的值是 1。(分数:2.00)填空项1:_(正确答案:1)解析:20.设float a64;则数组a中第一维下标的最大值是 1。(分数:2.00)填空项1:_(正确答案:5)解析:21.对于数组x8,其地址可以写成x或 1。(分数:2.00)填空项1:_(正确答案:&x0)解析:22.设int i=100;则循环语句while(i=1)i-;执行后,i的值为
10、 1。(分数:2.00)填空项1:_(正确答案:0)解析:23.设short a53;如果数组a首地址为1000,则a10的地址为 1(按行存储)。(分数:2.00)填空项1:_(正确答案:1006)解析:24.若函数调用语句为f(a,b,f(a+b,a-b,b);,则函数f的参数个数是 1。(分数:2.00)填空项1:_(正确答案:3)解析:25.设有数据定义语句struct char n20;long m20;x;,则为变量x所分配的内存字节数是 1个。(分数:2.00)填空项1:_(正确答案:100)解析:三、程序分析题(总题数:4,分数:16.00)26.main()int a=1,b
11、=2,c=3;if(a=c)if(b=c)printf(a=%d/n,a);else printf(b=%d/n,b);printf(c=%d/n,c);(分数:4.00)_正确答案:(b=2c=3)解析:27.int f(int n)static int m=8;return +m+n;main()int i;for(i=0;i2;i+)printf(%5d,f(i);printf(/n);(分数:4.00)_正确答案:(9 11)解析:28.main()int a=1,2,3,4,5,6;int *p;int i;p=a:*(P+3)+=1;printf(%d,%d/n,*p,*(p+3)
12、;(分数:4.00)_正确答案:(1,5)解析:29.struct stu int x;int *px;a4,*p=a;main()int i,y4=10,11,12,13;for(i=0;i4;i+)ai.x=i,ai.px=y+i;printf(%d/n,+P-x);printf(%d/n,(+p)-x);printf(%d/n,+(*p-px);(分数:4.00)_正确答案:(1112)解析:四、程序填充题(总题数:3,分数:18.00)30.将8个数输入数组中,找出其中最大数和最小数并输出。main()int i,max,min,a8;for(i=0;i8;i+)scanf(%d,&a
13、i);max=a0;min=a0;for(i=1;i8;i+)if(aimax)max=_;if(aimin)_;printf(max=%d,min=%d/n,_);(分数:6.00)填空项1:_(正确答案:aimin=aimax,min)解析:31.下列程序的功能是寻找二维数组中的鞍点,找到则输出其行、列下标;找不到则输出“no!”,请填空。提示,鞍点是指行上最大、列上最小的数组元素。main()int a35,i,j,k,max_j,flag;for(i=0;i3;i+)for(j=0;j5;j+)scanf(%d,_);for(i=0;i3;i+)max_j=0;for(j=0;j5;j
14、+)if(aimax_jaij)_;flag=1;for(k=0;k3;k+)if(akmax_jaimax_j)flag=0;break;if(flag=1)_;if (flag=1)printf(%d,%d/n,i,max_j);elseprintf(no! /n);(分数:6.00)填空项1:_(正确答案:&aijmax_j=jbreak)解析:32.从键盘输入一串字符(“*”作为结束标志),将其写入文本文件file.dat中保存。#includestdio.h#includestdlib.hmain()char ch;FILE *fp;if(fp=fopen(file.dat,_):=
15、NULL)printf(Can not open file/n);exit(0);ch=getchar();while (ch!=*)fputc(_,fp);ch=getchar();fclose(_);(分数:6.00)填空项1:_(正确答案:wchfp)解析:五、程序设计题(总题数:2,分数:16.00)33.求101000之间的所有素数之和,并输出。(分数:8.00)_正确答案:(main() long s=0L;int k,m,flag;for(k=10;k1001;k+) flag=1;for(m=2;m=k/2;m+)if(k%m=0) flag=0;break;if(flag)s
16、+=k;printf(s=%1d/n,s);)解析:34.用指针方法实现:输入8个整数,将其中的最大数和最后一个数交换,最小数和第1个数交换,然后将8个整数倒序输出。(分数:8.00)_正确答案:(#includestdio.h#define N 8main() int aN,*p=a,i,d,d1=0,x,x1=0;for(i=0;iN;i+,p+) scanf(%d,p);if(i=0)d=*p;x=*p;if(d*p)d=*p;d1=i;else if(x*p)x=*p;x1=i;P-;ad1=*p;*P=d;ax1=*(p-7);*(p-7)=x;for(i=N-1;i=0;i-,p-)printf(%d,*p);)解析:
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2