高级语言程序设计自考题12.docx
《高级语言程序设计自考题12.docx》由会员分享,可在线阅读,更多相关《高级语言程序设计自考题12.docx(15页珍藏版)》请在冰点文库上搜索。
高级语言程序设计自考题12
高级语言程序设计自考题-12
(总分:
100.00,做题时间:
90分钟)
一、单项选择题(总题数:
15,分数:
30.00)
1.可以作为自定义标识符的是()
A.2xB.break
C.m-nD.m_n
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]主要考查的知识点为自定义标识符。
[要点透析]A项以数字开头,B项为保留字,C项含有非字母、数字、下划线的字符,只有D项是正确的。
2.在定义inta[6][5]之后,对a中元素的引用正确的是()
A.a[2][5]B.a[6][0]
C.a[0][1]D.a[0,0]
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]本题主要考查的知识点为对二维数组元素的引用。
[要点透析]a[6][5]的行下标的取值范围是0~5,列下标的取值范围是0~4,超出此范围的错误。
D项的格式错误。
3.设inta=4,b;则执行b=a<<1;语句后,b的结果是()
A.8B.2
C.16D.10
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]本题主要考查的知识点为位移位运算符。
[要点透析]“<<”为左移运算符,移位时将数据看成二进制数,题中表达式表示将a左移1位,0100左移一位后所对应的十进制数是8。
4.执行表达式x=(y=1,z=2,k=3)后,x的值为()
A.6B.3
C.2D.1
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]本题主要考查的知识点为逗号表达式。
[要点透析]在逗号表达式中,最后一个表达式的值为逗号表达式的值。
5.表达式的值为0的是()
A.5/5%5B.5>2
C.14D.0x7&7
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]主要考查的知识点为各种运算符的使用。
[要点透析]A项中“/”和“%”的优先级相同,最终值为1。
B项为关系运算,结果为真,即1。
D项为位逻辑运算,结果仍为7。
6.执行下列程序段后的输出结果是()
intx=12;while(--x>10)printf("k");
A.kkkkB.kkk
C.kkD.k
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]本题主要考查的知识点为自减运算符--。
[要点透析]--运算符作前缀时的运算规则是先减一,后使用对象,所以当程序执行完第一次以后x的值是11,再执行第二次时x的值为10,条件不成立,程序不再执行。
此循环只能被执行一次。
7.设intx=6;,执行语句x+=x-=x*;后,x的值是()
A.-60B.0
C.6D.36
(分数:
2.00)
A. √
B.
C.
D.
解析:
8.下列程序的运行结果是()
main()
inta=3,c=6;
printf("a=%d,b=%d/n",a,c);
A.a=%3,b=%6B.a=d,b=d
C.a=3,b=6D.a=%d,b=%d
(分数:
2.00)
A.
B.
C. √
D.
解析:
9.以下说法中不正确是()
A.使用while循环时,循环变量初始化的操作应在循环语句之前完成
B.while循环是先判断表达式,后执行循环体语句
C.do-while和for循环均是先执行循环体语句,后判断表达式
D.for,while和for-while循环中的循环体均可以由空语句构成
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]本题主要考查的知识点为for、while和do-while循环的特点。
[要点透析]for循环是先判断表达式,后执行循环体语句。
10.设intb[][5]=1,2,3,4,5,6,7;,则元素b[1][2]的值是()
A.0B.2
C.6D.7
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]主要考查的知识点为二维数组元素的初始化。
[要点透析]在数组中,没有被赋初值的元素的默认值为零。
11.在C语言中,引用数组元素时,其数组下标的数据类型允许是()
A.整型常量B.整型表达式
C.整型常量或整型表达式D.任何类型的表达式
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]本题主要考查的知识点为数组下标的数据类型。
[要点透析]引用数组元素时,数组下标必须是整型,可以是常量,也可以是表达式。
12.存储整数-12345时,在二进制文件和文本文件中占用的字节数分别是()
A.2和2B.2和6
C.6和6D.6和2
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]本题主要考查的知识点为二进制文件和文本文件的存储。
[要点透析]二进制文件中数据都是按其二进制方式存放的,文本文件中数据都是将其转换成对应的ASCII代码字符来存放的。
题中-12345属于短整型,所以以二进制文件存储时占用2个字节。
13.执行下列程序段后输出的结果是()
intx,y,z=1;
for(x=1,y=-1;x<y;x++,y--)z++;
printf("%d/n",z);
A.1B.2
C.5D.6
(分数:
2.00)
A. √
B.
C.
D.
解析:
14.运行下列程序后,输出结果是()
voidfun(intx,inty,int*cp,int*dp)
*cp=x+y;*dp=x-y;
main()
inta=6,b=2;
fun(a+b,a-b,&a,&b);
printf("%d,%d/n",a,b);
A.6,2B.8,4
C.12,4D.8,2
(分数:
2.00)
A.
B.
C. √
D.
解析:
15.fread(buf,32,2,fp)的功能是()
A.从fp文件流中读出整数32,并存放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,则a>b>c的值为1。
(分数:
2.00)
填空项1:
__________________ (正确答案:
0)
解析:
17.使用系统函数getchar1,必须在程序的开头写2命令。
(分数:
2.00)
填空项1:
__________________ (正确答案:
#include<stdio.h>)
解析:
18.函数中的形参和调用时的实参都是数组名时,传递方式为1。
(分数:
2.00)
填空项1:
__________________ (正确答案:
地址传递)
解析:
19.设inta,b=5;,则执行表达式a=b-2==3后a的值是1。
(分数:
2.00)
填空项1:
__________________ (正确答案:
1)
解析:
20.设floata[6][4];则数组a中第一维下标的最大值是1。
(分数:
2.00)
填空项1:
__________________ (正确答案:
5)
解析:
21.对于数组x[8],其地址可以写成x或1。
(分数:
2.00)
填空项1:
__________________ (正确答案:
&x[0])
解析:
22.设inti=100;则循环语句while(i>=1)i--;执行后,i的值为1。
(分数:
2.00)
填空项1:
__________________ (正确答案:
0)
解析:
23.设shorta[5][3];如果数组a首地址为1000,则a[1][0]的地址为1(按行存储)。
(分数:
2.00)
填空项1:
__________________ (正确答案:
1006)
解析:
24.若函数调用语句为f(a,b,f(a+b,a-b,b));,则函数f的参数个数是1。
(分数:
2.00)
填空项1:
__________________ (正确答案:
3)
解析:
25.设有数据定义语句structcharn[20];longm[20];x;,则为变量x所分配的内存字节数是1个。
(分数:
2.00)
填空项1:
__________________ (正确答案:
100)
解析:
三、程序分析题(总题数:
4,分数:
16.00)
26.main()
inta=1,b=2,c=3;
if(a<=c)
if(b==c)printf("a=%d/n",a);
elseprintf("b=%d/n",b);
printf("c=%d/n",c);
(分数:
4.00)
__________________________________________________________________________________________
正确答案:
(b=2
c=3)
解析:
27.intf(intn)
staticintm=8;
return++m+n;
main()
inti;
for(i=0;i<2;i++)printf("%5d",f(i));
printf("/n");
(分数:
4.00)
__________________________________________________________________________________________
正确答案:
(911)
解析:
28.main()
inta[]=1,2,3,4,5,6;
int*p;
inti;
p=a:
*(P+3)+=1;
printf("%d,%d/n",*p,*(p+3));
(分数:
4.00)
__________________________________________________________________________________________
正确答案:
(1,5)
解析:
29.structstuintx;
int*px;
a[4],*p=a;
main()
inti,y[4]=10,11,12,13;
for(i=0;i<4;i++)
a[i].x=i,a[i].px=y+i;
printf("%d/n",++P->x);
printf("%d/n",(++p)->x);
printf("%d/n",++(*p->px));
(分数:
4.00)
__________________________________________________________________________________________
正确答案:
(1
1
12)
解析:
四、程序填充题(总题数:
3,分数:
18.00)
30.将8个数输入数组中,找出其中最大数和最小数并输出。
main()
inti,max,min,a[8];
for(i=0;i<8;i++)
scanf("%d",&a[i]);
max=a[0];
min=a[0];
for(i=1;i<8;i++)
if(a[i]>max)
max=______;
if(a[i]<min)
______;
printf("max=%d,min=%d/n",______);
(分数:
6.00)
填空项1:
__________________ (正确答案:
a[i]
min=a[i]
max,min)
解析:
31.下列程序的功能是寻找二维数组中的鞍点,找到则输出其行、列下标;找不到则输出“no!
”,请填空。
提示,鞍点是指行上最大、列上最小的数组元素。
main()
inta[3][5],i,j,k,max_j,flag;
for(i=0;i<3;i++)
for(j=0;j<5;j++)
scanf("%d",______);
for(i=0;i<3;i++)
max_j=0;
for(j=0;j<5;j++)
if(a[i][max_j]<a[i][j])______;
flag=1;
for(k=0;k<3;k++)
if(a[k][max_j]<a[i][max_j])
flag=0;break;
if(flag==1)______;
if(flag==1)
printf("%d,%d/n",i,max_j);
else
printf("no!
/n");
(分数:
6.00)
填空项1:
__________________ (正确答案:
&a[i][j]
max_j=j
break)
解析:
32.从键盘输入一串字符(“*”作为结束标志),将其写入文本文件file.dat中保存。
#include<stdio.h>
#include<stdlib.h>
main()
charch;
FILE*fp;
if((fp=fopen("file.dat","______")):
=NULL)
printf("Cannotopenfile/n");exit(0);
ch=getchar();
while(ch!
='*')
fputc(______,fp);
ch=getchar();
fclose(______);
(分数:
6.00)
填空项1:
__________________ (正确答案:
w
ch
fp)
解析:
五、程序设计题(总题数:
2,分数:
16.00)
33.求10~1000之间的所有素数之和,并输出。
(分数:
8.00)
__________________________________________________________________________________________
正确答案:
(main()
{longs=0L;
intk,m,flag;
for(k=10;k<1001;k++)
{flag=1;
for(m=2;m<=k/2;m++)
if(k%m==0){flag=0;break;}
if(flag)s+=k;
}
printf("s=%1d/n",s);
})
解析:
34.用指针方法实现:
输入8个整数,将其中的最大数和最后一个数交换,最小数和第1个数交换,然后将8个整数倒序输出。
(分数:
8.00)
__________________________________________________________________________________________
正确答案:
(#include<stdio.h>
#defineN8
main()
{inta[N],*p=a,i,d,d1=0,x,x1=0;
for(i=0;i<N;i++,p++)
{scanf("%d",p);
if(i==0){d=*p;x=*p;}
if(d<*p){d=*p;d1=i;}
elseif(x>*p){x=*p;x1=i;}
}
P--;
a[d1]=*p;*P=d;
a[x1]=*(p-7);*(p-7)=x;
for(i=N-1;i>=0;i--,p--)
printf("%d",*p);
})
解析: