高等教育自学考试高级语言程序设计试题九套Word文件下载.docx
《高等教育自学考试高级语言程序设计试题九套Word文件下载.docx》由会员分享,可在线阅读,更多相关《高等教育自学考试高级语言程序设计试题九套Word文件下载.docx(136页珍藏版)》请在冰豆网上搜索。
do
{
x=x*x;
}while(!
x);
A.0
B.1
C.2
D.无限
9.实现字符串连接的系统函数名是(A)A.strcat
B.strcmp
C.strcpy
D.strlen
10.若实参是一个数组名,在调用函数时,实参向形参传递的是(B)
A.数组的长度
B.数组的首地址
C.数组每个元素的值
D.数组每个元素的地址
11.设inta[][4]={l,2,3,4,5,6,7};
,则a[1][3]的值是(A)
B.3
C.4
D.7
12.若定义一个只限本源文件使用的全局变量,则该变量的存储类别是(C)
A.extern
B.register
C.static
D.auto
13.设chark=’;
a’floatj=2.0;
,执行k+=5/j;
printf(%“c”,k);
后,输出结果是(C)
A.a
B.b
C.c
D.d
14.下列程序段正确的是(D)A.chars[]={‘xyz;
’}
scanf(‘‘%s”,s);
B.float*p,i;
p=*p+i;
C.chars[5]=‘word;
’
puts(s);
D.inta[5]={0},*p=a;
*p=*(p+1);
15.关于编译预处理命令,叙述正确的是(A)A.预处理命令都以“#开”头
B.预处理命令必须位于程序的首部
C.预处理命令只能实现宏定义和条件编译的功能
D.每个程序必须在开头使用预处理命令#include<
stdio.h>
二、填空题(本大题共10小题,每小题2分,共20分)
请在每小题的空格中填上正确答案。
错填、不填均无分。
16.
设floata,b,c;
,若a、b和c分别为三角形的三条边长,它们“能构成等边三角形”
的逻辑表达式是______(a-b)==(b-c)______。
17.
设inti;
float
f=3.14;
,执行i=(int)f;
后,变量f的值是_____3_______。
l8.
设chars[]=
”’Name
n”;
,s的长度是_____15_______。
19.执行printf(%“n”,3&
2&
5);
后的结果是_____0_______。
20.算术运算符的优先级比关系运算符的优先级_____高_______。
21.单目运算符的结合性是_____自右向左_______。
22.设intx=1,y=3,z;
,执行z=x>
y?
++x:
y++;
后,z的值是______3______。
23.设intm=3;
floatn=12.6;
charch=’a;
’,若用输入语句实现上述三个变量的初始化
结果且键入数据形式为:
3,12.6a<
回车换行>
,则scanf语句应是_____scanf(“%d,%f%a”,
m,&
n,&
ch);
_______
。
24.若定义函数时类型缺省,则该函数默认的类型是
____int________
25.设inta[5]={l,3,5,7,9},*p=&
a[2]
;
,则
++(*p)
的值是
_____6_______。
三、程序分析题
(本大题共
4小题,每小题
4分,共
16分)
阅读下列程序,将输出结果写到各题右侧的空白处。
26.
voidmain()
intcolor=2;
switch(color)
casel:
printf(
“redn”);
break;
case2:
“yellown”);
case3:
“bluen”);
}
yellow
blue
27.
void
main()
int
m,n;
for(m=1;
m<
=3;
m++)
for(n=1;
n<
=2*m-l;
n++)printf
“*”);
printf(
“n”);
*
***
*****
28.
floatx=3.6;
i;
i=x;
printf(‘x=%5.3f,i=%dn”,x,i);
x=3.600,i=3
29.
a[2][3]={{1,2,3},{4,5,6}};
b[3][2],i,j;
for(i=0;
i<
=1;
i++)
for
(j=0;
j<
=2;
j++)
“%5d”,a[i][j]);
1
2
3
b[j][i]=a[i][j];
4
5
6
printf(‘‘n”);
printf(“arrayb:
n”);
array
b:
(i=0;
2536
for(j=0;
printf(“%5d”,b[i][j]);
四、程序填充题(本大题共3小题,每小题6分,共18分)
请将下列程序横线处缺少的部分补上,使其能正确运行。
30.从键盘输入10个学生的姓名、性别和成绩,计算并输出这些学生的平均成绩。
#defineN10
structstudent
charname[20];
charsex;
intscore;
}stu[N];
voidmain()
inti;
floataver,sum=0;
N;
{scanf(“%d,%c%s”,__&
stu[i].score,&
stu[i].sex,&
stu[i].name_______)
sum=sum+___stu[i].score______;
/*第二空*/
/*第一空
*/
aver=___sum/N________;
/*第三空
printf(“aver=%6.2fn”,aver);
31.从键盘输入一串字符(以“?
作”为结束标志),保存到文本文件text.txt中。
#include“stdio.h”
*fp_____;
/*第一空*/
charch;
if((fp=fopen(“text.txt’’,___”w”____))==NULL)exit(0);
while((ch=getchar())!
=’?
’fpute)(ch,___fp______);
/*第三空*/
fclose(fp);
32.用递归方法计算学生年龄,已知第一位学生年龄为10岁,其余学生一个比一个大2岁,求第5位学生的年龄。
递归公式如下:
age(n)=
intage(intn)
if(n==1)return(__10______);
elsereturn(_age(n-1)+2________);
printf(‘‘%dn”,__age(5)_______);
五、程序设计题(本大题共2小题,每小题8分,共16分)
33.从键盘输入三个整数a、b和c,按照由小到大的顺序输出。
#include<
stdio.h>
voidmain(){
inta,b,c,t;
scanf("
%d,%d,%d"
&
a,&
b,&
c);
if(a<
b){t=a;
a=b;
b=t;
c){t=a;
a=c;
c=t;
if(b<
c){t=b;
b=c;
printf("
%d->
%d\n"
c,b,a);
34.
(1)编写一函数,将指针变量pl和p2所指向的整数值交换。
其中:
函数头是voidswap(int*pl,int*p2)
voids*p1,int*p2){
intt;
t=*p1;
*p1=*p2;
*p2=t;
(2)编写一个主程序,从键盘输入两个整数,调用上述函数实现两个数据的交换并输出。
inta=19,b=-99,*p=&
a,*q=&
b;
s);
printf(“%d,%d”,*p,*q);
全国2009年10月高等教育自学考试
高级语言程序设计
(一)试题
00342
一、单项选择题(本大题共
15小题,每小题
2分,共
30分)
在每小题列出的四个备选项中只有一个是符合题目要求的内。
请将其代码填写在题后的括号
1.主函数头中的“main是”(BA.保留字
)
B.函数名
C.变量名
D.类型名
2.下列运算符中优先级最高的是(D)
A.?
:
B.&
C.
D.!
3.设staticinta;
执行表达式(a==1)&
(a=-1)&
(a=2)后,a的值是(D)
A.-1
B.0
C.1
D.2
4.设inta,b;
与a+=b++;
等价的是(C)
A.a=b++;
B.a=++b;
C.a=a+b++;
D.a=a+++b;
5.关于宏定义命令,叙述正确的是(B)
A.在程序编译前进行宏替换
B.在程序编译时进行宏替换
C.在程序编译后进行宏替换
D.在程序运行时进行宏替换
6.下列表达式值为0的是(D)
A.5/2
B.2&
C.!
25
D.2&
7.对循环结构正确的叙述是(
B)
A.do-while
循环体可能被执行
0次
B.do-while
循环体至少被执行
1次
C.while循环体不可能被执行
D.for循环体不可能被执行无限次
8.下列数组定义并初始化正确的是(A.ints[]=(1,2,3,4,5);
B.ints[5]=1,2,3,4,5;
C.ints[2+3]={1,2,3};
D.ints(5)={1,2,3};
C)
9.设chars[10];
能将字符串“+-*/”正确输入的语句是(B)
A.scanf(“%s”),s;
B.scanf(“%s”,*s);
C.scanf(“%s”[,s0]);
D.scanf(“%s”[,s10]);
10.对于C语言中的函数,正确的叙述是(D)
A.两个函数可以相互调用,但不能自己调用自己
B.程序执行可以始于任何一个函数,但结束必须在主函数
C.两个函数既可以定义成并列关系又可以定义成嵌套关系
D.一个C程序可以由多个文件组成,一个文件又可以由多个函数组成
11.设intm[5],*p=m;
与元素m[5],*p=m;
与元素m[2]等价的是(C)
A.m+2
B.*m+2
C.*(p+2)
D.*p+2
12.设inta[3][3]={{1,2,3},{4,5},{6}}
元素a[1][2]的值是(A)
D.6
13.设typedef
ARR[10];
与ARRa,*b
等价的定义是(D)
A.int
a,b;
B.int
a,*b;
C.int
a[10],*b
D.int
a[10],*b[10]
14.设intn,p=0;
与语句if(n!
=0)p=1;
等价的是(A)
A.if(n)p=1;
B.if(n=1)p=l;
C.if(n!
=1)p=1;
D.if(!
n)p=l;
15.文件使用方式“rb+的”含义是(C)
A.对文本文件只读
B.对文本文件读和写
C.对二进制文件读和写
D.对二进制文件只写
二、填空题(本大题共
10小题,每小题2分,共20分)
16.执行printf(“%
n”,1+!
2+(3<
=4)+5/6+7%8);
后的输出结果是____9_____。
17.设int
m=0;
执行表达式m
(m=2)(m=3)(m=4)后,m的值是____2_____。
18.设int
n;
“n的值能同时被
3和5
整除”的逻辑表达式是____n%(3*5)!
=0_____。
19.执行循环语句for(;
’0;
’)printf
(“Happy!
后,输出“Happy!
的”行数是___无数
______。
20.设宏定义#define
K2+3执行printf
(“%n”,K/K);
后的输出结果是
____6_____。
21.设int
执行for(n=0;
n==0;
n++)n=0;
后,循环体被执行的次数是
____1_____。
22.执行printf(“%
n”,5&
5-3&
4);
后的输出结果是____4_____。
23.表示空类型(或称无类型)的保留字是
____void_____。
24.设char*strp=“CHINA;
”,执行printf(“%n”,strp+3);
后的输出结果是___NA_____。
25.使用系统函数对两个字符串进行比较,该系统函数的名字是____strcmp()_____。
三、程序分析题(本大题共4小题,每小题4分,共16分)
阅读下列程序,将输出结果写到各题右侧的空白处。
voidmain()
inti,a[5],*p;
for(i=4;
i>
=0;
i--)*(a+i)=i;
for(p=a;
p<
a+5;
p++)printf(“%dt”,*p);
printf(“n”);
01
234
gcd(int
p,int
q)
if(p==q)returnp;
elseif(p>
q)returngcd(p-q,q);
elsereturngcd(p,q-p);
intm=24,n=36,min,max;
max=gcd(m,n);
min=m*n/max;
printf
(“max=%d,min=
%
n”,max,min);
max=12,min=72
s(inta)
staticintb=l0;
if(a%2==1)return(++b);
elsereturn(++a);
{inti;
for(i=0;
3;
i++)printf(“%d\t”(,si));
printf(“\n”);
111
structpeople
charname[10];
floatscore;
}per[]=={{“Tom”,95.5},{
“Mary”;
88.0}}
structpeople*p=per+1;
printf(“%s,%n”,per[0].name,p
score);
Tom,88.0
四、程序填充题(本大题共3小题,每小题6分,共18分)
请将下列程序横线处缺少的部分补上,使其能正确运行。
30.对两个整型变量先进行输入和输出,将它们的值交换后再输出。
#definePRprintf(“a=%d,b=%n”,a,b)
inta,b,__temp____;
/*第一空*/
scanf(“%d%d”,_&
b________);
/*第二空*/
PR;
temp=a,__a=b_____,b=temp;
/*第三空*/
31.为二维数组各元素输入数据
#defineN5
计算并输出全部元素之和。
inti,j,a[N][N],sum=__0_____;
/*
第一空
*/
i++)
for(j=0;
j++)
scanf(“%d”,&
a[i][j]
);
sum+=__a[i][j]____________
/*
第二空
printf(“sum=%
n”,____sum_______);
/
第三空
32.为n输入一个正整数值后
计算并输出
sum=1-
的值。
voidmain()
intn,k=0;
float__sum=0.0_____;
scanf(″%d″,&
n);
k++;
if(__n%2==1______
)sum+=1.0/k;
elsesum-=1.0/k;
}while
(_--n_______);
/*第三空
(″sum=%n″,sum);
五、程序设计题(本大题共2小题,每小题8分,共16分)
33.
(1)根据下列计算公式写出函数,将华氏温度(F)转化为摄氏温度(C)。
公式:
C=
(F-32)
函数头为:
floatchange(floatF)
floatchange(floatF){
floatc;
c=5*(F-32)/9;
return(c);
(2)写出主函数,输入华氏温度,调用函数change,计算并输出对应的摄氏温度。
输出形