高级语言程序设计自考题8Word文档下载推荐.docx
《高级语言程序设计自考题8Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《高级语言程序设计自考题8Word文档下载推荐.docx(16页珍藏版)》请在冰点文库上搜索。
5.不属于字符型常量的是()
A."
s"
B.'
8'
C.'
A'
D.'
/n'
A.
6.一个源文件中定义的全局变量的作用域为()
A.本文件的全部范围B.本程序的全部范围
C.本函数的全部范围D.从定义该变量开始至本文件结束
[解析]本题主要考查的知识点为全局变量的作用域。
[要点透析]全局变量的作用域是从定义点到整个程序结束,既从定义该变量时开始到该程序结束,全局变量都产生作用。
7.有以下程序()
main()
char*p[10]="
abc"
,"
aabdfg"
dcdbe"
abbd"
cd"
printf("
%d/n"
,strlen(p[4]));
执行后输出结果是
A.2B.3
C.4D.5
[解析]输出的数据是第五个字符串的字符个数。
p[4]传递给函数strlen()的址第五个字符串的首地址。
8.C语言早期规定建立文件缓冲区采用的形式是()
A.缓冲文件系统B.非缓冲文件系统
C.分页文件系统D.A&B
9.当C的值不为0时,在下列选项中能正确将C的值赋给变量a和b的是()
A.c=a=bB.(a=c)||(b=c)
C.(a=c)&&(b=c)D.a=c=b
[解析]因表达式"
(a=c)"
和"
(b=c)"
的值分别是a和b的值(a,b都不为0)。
当获得"
a=c"
不为0的判定后,表达式"
(a=c)||(b=c)"
中的"
将不会被执行。
10.执行下列程序段后输出的结果是()
intx,y,z=1;
for(x=1,y=-1;
x<y;
x++,y--)z++;
,z);
A.1B.2
C.5D.6
11.运算符优先级符合由高到低排列的一组是()
A.+、!
=、&
&
、=B.&
、!
=、+、=
C.!
=、+、=、&
D.&
、=、!
=、+
[解析]运算符的优先级由高到低为:
算术运算符、关系运算府、双目逻辑运算符、赋值运算符,故本题选A。
12.设int*p[4];
,则标识符p是()
A.整型数组名B.指针数组名
C.指针函数名D.指向整型变量的指针
B.
[解析]指针数组的定义格式为:
数据类型*指针数组名[长度],…其中,指针数组名是标识符,前面必须有“*”号,故本题选B。
13.若当前文件目录为C:
/tc,在C语句中下列能表示文件tc.c的是
A.tc.cB.C:
tc/tc.c
C.C/tc/tc.cD.C/tc.c
14.下列语句中,正确的是()
A.typedefv1int;
B.typedefv2=int;
C.typedefintv3;
D.typedefint=v4;
15.设inta[2]=1,2,*p=a;
,则*P是()
A.元素a[0]的值B.元素a[0]的地址
C.元素a[1]的值D.元素a[1]的地址
[解析]*p、*(p+0)、p[0]均相当于a[0]的值。
二、填空题(总题数:
10,分数:
20.00)
16.设inta=1,b=2,m=2,n=2;
,执行表达式(m=a<b)||++n后,n的值是1。
填空项1:
__________________
(正确答案:
2)
17.设floatx=23.65;
,则执行语句printf("
,(int)(x+0.5));
后输出结果是1。
24)
18.用来定义寄存器类型变量的C语言保留字是1。
register)
19.设
intx=5;
x+==x-=x*x;
则x的值是______。
-40)
20.设charw;
intx;
floaty;
doublez;
,则表达式w*x+z-y的值的类型是1。
double(或双精度))
21.设intx=3;
,执行语句printf((x%2)?
("
**%d/n"
):
##%d/n"
),x);
后,输出结果是1。
**3)
22.设inta,b,c;
则执行a=(b=3,c=5,b=10);
后变量a的值是1。
10)
23.设inta=12;
,语句printf("
,(a/3,a%3,a/10>0));
的输出结果是1。
1)
24.1是C语言中唯一的一个三目运算符,它是由两个符号组成。
条件运算符)
25.C语言标识符的第一个字符只能字母或1
下划线)
三、程序分析题(总题数:
4,分数:
16.00)
26.main()
inta[3][4]=1,3,5,7,12,14,16,18,9,6,4,2,j,k,m,n,x;
x=m=n=0;
for(j=2;
j>-1;
j--)
for(k=0;
k<4;
k++)
if(x<a[j][k])
x=a[j][k],m=j,n=k;
a[%d][%d]=%d/n"
,m,n,x);
4.00)
__________________________________________________________________________________________
正确答案:
(a[1][3]=18)
27.#include<stdio.h>
inti,j,row,col,max;
inta[3][4]=1,2,3,4,,10,4,20,6,,0,-1,-3,-5,;
max=a[0][0];
for(i=0;
i<3;
i++)
for(j=0;
j<4;
j++)
if(a[i][j]>max)
max=a[i][j];
row=i;
col=j;
)
max=%d,row=%d,col=%d/n"
,max,row,col);
(max=20,row=1,col=2)
[解析]
#include<stdio.h>
{inti,j,row,col,max;
inta[3][4]={{1,2,3,4,},{10,4,20,6,},{0,-1,-3,-5,}};
/*初始化数组a[3][4],没有初始化的元素默认为"
0"
*/
for(j-0;
{max=a[i][j];
}/*用每个元素和max对比,比max大的将其值赋于max并记录其横、纵两个下标的值*/
}
28.#include<stdio.h>
char*a="
12134211"
intv1=0,v2=0,v3=0,v4=0,k;
k<=strlen(a);
k++)
switch(*a++)
default:
v4++;
case'
1'
:
v1++;
3'
v3++;
2'
v2++;
v1=%d,v2=%d,v3=%d,v4=%d/n"
,v1,v2,v3,v4);
(v1=3,v2=5,v3=4,v4=1
解折:
main3()
{char*a="
12131211"
k<strlen(a);
k++)/*,循环被终止的条件是k的值大于字符串a的长度8*/
switch(*a++)/*选择的条件是数组a的元素,并且a作为于指针变量有一个自增1运算*/
{default:
v2++}/*因没有break语句,从符介条什的语句开始,每一行case语句都会被执行*/
vt=%d,v2=%d,v3=%d,v4=%d/n"
})
29.intfm(inta,intb)
if(b==1)returna;
elsereturna+fm(a,b-1);
,fm(4,3));
(12)
四、程序填充题(总题数:
3,分数:
18.00)
30.求f(x[0,10])的累加和,其中f(x)=2x+1。
intF(intx)
return______;
)/*第一空*/
intSumFun(intn)
intx,s=0:
for(x=0;
x<n;
x++)______;
/*第二空*/
returns;
Thesum=%d/n"
,______);
/*第三空*/
6.00)
x*x+1/*笫一空。
此为函数式"
f(x)=2x+1的C语言表达式*/
s+-=F(x)/*第二空。
求函数式"
f(x)"
的累加*/
SumFum(10)/*第三空。
调用函数"
StunFun()求累加值"
*/)
31.以下程序用来统计从终端输入的字符中大写字母的个数。
以"
$"
作为输入结束标记。
#include<ctypc.h>
intnum[126],i;
charc;
i<26;
num[i]=0;
while((______)!
='
$'
if(isupper(c))num[c-65]+=1;
if(______)/*第二空*/
%c:
,______,num[i]);
c=getchar()/*第一空。
得到从键盘输入的值,并判断是不是结束标志"
num[i]/*第二空。
判断用以记录个数的数组元素是否为0,如为0则不输出*/
i+65/*第三空。
从语句"
num[c-65]+=1;
"
可知数组对字符的记录是通过下标和字符的ASCⅡ值之间的关系进行的。
故此处应填上与之相应的换算关系*/)
32.根据迭代公式
,求a的平方根(精度要求|x1-x0|<10-6)。
#defineEPS1E-6
#include______/*第一空*/
voidmain()
floata,x0,x1=1.0;
scanf("
%f"
,&
a);
do
x0=x1;
x1=______;
/*第二空*/
while(fabs(x1-x0)>=______);
/*第三空*/
sqrt=%.6f/n|"
,x1);
第一空:
<math.h>(或"
math.h"
)
第二空:
(x0+a/x0)/2
第三空:
EPS(或1E-6))
五、程序设计题(总题数:
2,分数:
33.输入一个整数n(n<10),如果n=3,则输出
1
222
33333
以此类推。
8.00)
(#include<stdio>
#include<stdlib.h>
{
intn,i,s=1,k;
%d"
,&n);
if(n>10)exit(0);
/*判定输入变量值是否超过10,如超过则自动终止程序运行*/
k=2*n-1;
/*确定输出最长行输出的数字个数*/
while(k!
=0)/*确定输出模式,并循环输出*/
i<n-1;
i++)primf("
"
);
i<2*s-1;
i++)printf("
,s);
/n"
if(s<k){--n;
++s;
--k;
}/*当s<k时输出为增量形式输出*/
else{++n;
--s;
}/*当s>k时输出为减量形式输出*/
}
34.编写程序,输入一个3×
4的矩阵和一个4×
3的矩阵,分别存入数组a和b,然后求它们的乘积存入数组c,输出数组c中的矩阵。
矩阵中的数据均为整型。
(main()
{inta[3][4],b[4][3],c[3][3],i,j,k;
i++)
j++)
,&a[i][j]);
i<4;
j<3;
b[i][j]);
{c[i][j]=0;
c[i][j]+=a[i][k]*b[k][j];
{printf("
%10d"
,c[i][j]);