2019年4月高等教育自学考试《高级语言程序设计(一)》试题
课程代码:00342
一、单项选择题
1.下列不属于C语言关键字的是
A.void B.switch C.integer D.sizeof
2.转义字符'\n'的意义是
A.退格 B.回车 巴换页 D.回车换行
3.下列不属于C语言常量的是
A.0x5ag B.5e-2 C.0572 D.3e2
4.设int a=10;,执行语句a*=1+2+3;后a的值是
A.10 B.20 C.30 D.60
5.关于运算符优先级说法正确的是
A.条件运算符高于位运算符 B.赋值运算符高于逗号运算符
C.逻辑运算符高于关系运算符 D.逻辑运算符高于算术运算符
6.设double x;,能正确输出x值的语句是
A. putchar(x); B. printf("%d",x);
C. putchar('x'); D. printf("%f',x);
7. 设int i=3, j=2; char k='a';, 则执行语句printf("%c", k+i/j);后输出结果是
A.a B.b C.c D.d
8.下列说法正确的是
A.for语句的循环体至少执行一次
B.do-while语句的循环体至少执行一次
C.while语句先执行循环体后判断循环结束条件
D.do-while语句先判断循环结束条件后执行循环体
9.设int a[][4]={1,2,3,4,5,6,7};,则数组元素a[1][3]的值是
A.0 B.3 C.4 D.7
10.设char a[]="happy";,则执行语句printf("%d",sizeof(a));后输出结果是
A.4 B.5 C.6 D.7
11.关于函数说法正确的是
A.必须有形参 B.可以嵌套定义
C.可以嵌套调用 D.实参和形参不能重名
12.设int a=4,*p=&a;,均代表地址的一组选项是
A.a,p,*&a B.*&a,&a,*p C.*&p,*p,&a D.&a,p,&*p
13.下列选项中定义一个指针数组的是
A.int(*p)(); B.int*p[4]; C.int p[4]; D.int*p();
14.typedef long CLASS;的作用是
A.定义一个新的数据类型符 B.定义一种新的数据类型
C.定义一个长整型变量 D.以上说法都不对
15.文件关闭操作成功执行后,库函数fclose的返回值是
A.2 B.1 C.0 D.-1
二、填空题
16.C语言源程序中有且仅有一个主函数,其函数名规定为 。
17.表达式1+!2+3/4+5%6+(7==8)+9的值是 。
18.设int a=1,b=2,c=3;,表达式a&b&&c的值是 。
19.字符串的存储结束标志符是 。
20.设float m=3.89;,则执行语句printf("%dn",(int)m);后输出结果是 。
21.设int a[5]={1,3,5,7,9},*p;p=&a[2];,则执行语句printf("%d",(*p)++);后输出结果是 。
22.设int x,y;,运用条件运算符求x和y中最大值的C语言表达式是 。
23.C语言中,实现文件包含的预处理命令是 。
24.设int a[2][4]=(1,3,5,7,9);,该数组元素个数是 。
25.C语言变量的存储类型分为auto型、register型、extern型和 。
三、程序分析题
26. #include<stdio.h>
int main(void)
{
int i=1, s=3;
do
{
s+=i++;
if(s%7= =0) continue;
else ++i;
} while (s<15);
printf("%d\n",i);
return 0;
}
27. #inctude<stdio.h>
#include<string. h>
int main(void)
{
char s[2][6];
strepy(s[0],"Jerry");
strepy(s[1],"Tom");
s[0][5]='&';
printf("%s\n",s);
return 0;
}
28. #include<stdio.h>
int fun(int x)
{
int y;
iifx= =0 [] x= =1) return 3;
y=x*x-fun(x-2);
return y;
int main(void)
{
int z;
z=fun(3);
printf("%d\n",z);
return 0;
}
29. #include<stdio.h>
int main(void)
{
iht i, x[]={1,3,5,7,9,11,13,15}, *p=-x+3;
for(i=3; i; i--)
switch(i)
{
case 1:
case 2' printf('%d ",*p++); break;
case 3:printf('%d ",*(--p));
}
return 0;
}
四、程序填充题
30.利用冒泡法实现数组元素值降序排序并输出。
#include<stdio.h>
int main(void)
{
int a[7]={4,7,2,8,5,9,1}, i, j, tern;
for(i=7; i>1; i--)
for(,j=0; j<i- 1; j++)
if( ) /* 第一空 */
{
tem=a[j];
; /* 第二空 */
; /* 第三空 */
}
for(i=0; i<=6; i++) printf("%5d", a[i]);
printf("\n");
return 0;
}
31.从键盘输入一字符串,调用函数revstr将其反向输出。(例如输入字符串"abcde",输出其反向字符串"edcba")
#include<stdio.h>
#include<string.h>
void revstr (char *s)
{
int j;
for (j=strlen(s)-1;j>=0;j--)
printf("%c", ); /* 第一空 */
}
int main(void)
{
char str[10];
scanf("%s", ); /* 第二空 */
; /* 第三空 */
return 0;
}
32.从键盘输入10个学生的学号、年龄和姓名,计算并输出所有学生的平均年龄。
#include<stdio.h>
#define N 10
stmct student
{
long int num;
int age;
char name[20];
} stu[N];
int main(void)
{
int i, sum=0, aver;
for (i=0; i<N; i++)
{
scanf("%d%d%s",&stu[i].num, );/* 第一空 */
sum=sum+ ; /* 第二空 */
}
aver=sum/ ; /* 第三空 */
printf("%d\n", aver);
return 0;
}
五、程序设计题
33.利用循环输出如下形式的数字三角形。
1
1 2
1 2 3
…………
1 2 3 4 5 6 7 8 9
34.编写函数fun求n!,并调用该函数计算的近似值,直到公式中最后一项的值小于10-6为止。