全国2006年10月高等教育自学考试
高级语言程序设计(一)试题
课程代码:00342
一、单项选择题(本大题共20小题,每小题1分,共20分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。
1.以下属于C语言保留字的是( )
A.fopen B.include
C.get D.unsigned
2.C语言中,错误的int类型的常数是( )
A.1E5 B.0
C.037 D.0xaf
3.在C语言中,′a′和″a″存储所占用的字节数分别是( )
A.1,1 B.1,2
C.2,1 D.2,2
4.对于数学表达式,正确的C语言表达式是( )
A.2sqrt(x)+(a+b)/3sin(x) B.2sqrt(x)+(a+b)/(3sin(x))
C.2*sqrt(x)+(a+b)/3/sin(x) D.2*sqrt(x)+(a+b/3*sin(x))
5.设int x=10, a=0, b=25;,条件表达式x<1?a+10︰b的值是( )
A.0 B.1
C.10 D.25
6.C语言中,下列运算符优先级最高的是( )
A.! B.%
C.>> D.= =
7.sizeof(double)是( )
A.函数调用 B.int型表达式
C.double型表达式 D.非法表达式
8.设有以下程序段:
int a=1, b=10, c=1, x;
x=a&&b||++c;
printf(″%d, %d\n″,x,c);
执行后输出的结果是( )
A.0,0 B.0,1
C.1,0 D.1,1
9.设int x;,则以下语句中错误的输入是( )
A.scanf (″%d″,x);
B.scanf (″%d″,&x);
C.scanf (″%o″,&x);
D.scanf (″%x″,&x);
10.设int(*P)();,p的含义是 ( )
A.指向一维数组的指针变量
B.指向二维数组的指针变量
C.指向一个整型变量的指针变量
D.指向整型函数的指针变量
11.在C语言中,运算符″=″和″==″的功能分别是( )
A.关系运算和赋值运算 B.赋值运算和关系运算
C.都是关系运算 D.都是赋值运算
12.设int x[]={1,2,3,4,5},*p=x;,则值为3的表达式是( )
A.p+=2, *p++ B.p+=2, *++p
C.p+=2, p++ D.p+=2, ++*p
13.设for(i=0, j=10; (j>0)&&(i<4); i++, j--);,该语句的循环次数是( )
A.0 B.3
C.4 D.无限
14.设函数定义如下:
float f1 (float a, float b)
{
return (a+b);
}
若有float x=1.1, y=2.2;,则以下语句中正确的函数调用是( )
A.printf (″%f″, f1(x));
B.printf (″%f″,f1(&x, y));
C.printf (″%f″,f1(*x,*y));
D.printf (″%f″,f1(x, y));
15.结构型变量占用内存的字节数是( )
A.各成员占用内存字节数之和
B.第一个成员占用的内存字节数
C.占用内存最大成员所需的字节数
D.最后一个成员占用的内存字节数
16.设enum color {purple, black, red, white} d;, 若将d赋值为枚举常量red,则正确的是
( )
A.d=(enum color)2; B.d=(enum color)3;
C.d=″red″; D.d=color;
17.若main()函数带参数,参数个数最多是( )
A.0 B.1
C.2 D.3
18.设宏定义#define PI 3.1415926,用宏名PI替换的是( )
A.算术表达式 B.字符串
C.单精度实型数 D.双精度实型数
19.调用系统函数fabs时,应选用的文件包含是( )
A.#include ″stdio.h″ B.#include ″string.h″
C.#include ″ctype.h″ D.#include ″math.h″
20.设
struct st
{ int i;
int j;
} *p;
main ( )
{
struct st m[ ]={{10, 1}, {20, 2}, {30, 3}};
p=m;
printf (″%d\n″,(*++p). j);
}
则程序的输出结果是( )
A.1 B.2
C.3 D.10
二、填空题(本大题共10小题,每小题2分,共20分)
请在每小题的空格中填上正确答案。错填、不填均无分。
21.C语言中,标准输入设备的文件指针名是___________________。
22.一个C语言程序的基本组成单位是___________________。
23.C语言中,&作为双目运算符表示的运算是___________________。
24.连接两个字符串的系统函数名是___________________。
25.设float a [4][5];,则数组a中第一维下标的最大值是___________________。
26.设char str [ ]=″book″;,则执行 printf (″%d\n″, sizeof (str));后输出的值是___________________。
27.设
#define F(x) x*x
main ( )
{ int a=3, b=4, c;
c=F(a+b);
printf (″%d\n″, c);
}
则程序执行后输出的值是___________________。
28.设int a; float b; char c; long d; double e; , 则表达式a/c-b+d-e值的类型是______________。
29.设
int x=5;
x+=x-=x+x;
则执行printf (″%d\n″, x);后输出的值是___________________。
30.设
union
{
int i; long j; char k;
} t, *p=&t;
则用指针法给t的成员i赋值为20的语句是___________________。
三、程序分析题(本大题共5小题,每小题5分,共25分)
阅读下列程序,将输出结果写到各题右侧的空白处。
31.main ( )
{int i, s=0;
for (i=1; i<10; i+=2) s+=i+1;
printf (″%d\n″, s);
}
32.main ( )
{ int x=15, y=21, z=0;
switch (x%3)
{case 0: z++; break;
case 1: z++;
switch (y%2)
{default: z++;
case 0: z++; break;
}
}
printf (″%d\n″, z);
}
33.main( )
{ int a=0, b=5, c=3;
while (c>0 && a<5)
{b=b-1;
++a;
c--;
}
printf (″%d, %d, %d\n″, a, b, c);
}
34.int z=5;
f ( )
{ static int x=2; int y=5;
x=x+2; z=z+5;
y=y+z;
printf (″%5d%5d\n″, x, z);
}
main ( )
{ static int x=10; int y;
y=z;
printf (″%5d%5d\n″, x, z);
f ( );
printf (″%5d%5d\n″, x, z);
f ( );
}
35.struct prob
{ char *a;
int b;
} x[ ]={ ″Zhang San″, 19, ″Li Si″, 21, ″Wang Wu″, 20};
main ( )
{ int i, m1, m2;
m1=m2=x[0].b;
for (i=1; i<3; i++)
if (x[i].b>m1)m1=x[i].b;
else if (x[i].b<m2)m2=x[i].b;
for (i=0; i<3; i++)
if (x[i].b!=m1&& x[i].b!=m2)
{printf (″%s:%d\n″, x[i].a, x[i].b);
break;
}
}
四、程序填充题(本大题共3小题,每小题6分,共18分)
给出下列程序,将横线处缺少的部分补上,使其能正确运行。
36.用递归方法写出计算n的阶乘的函数,调用该函数计算并输出n=0, 1, 2, ……, 10时各阶乘的值。
计算公式: n!=
long fac (int n)
{
if (________)return (1); /* 第一空 */
else return ________; /* 第二空 /
}
main ( )
{
int m; long int fa;
for (m=0; m<=10; m++)
{
________; /* 第三空 */
printf (″%d!=%1d\n″, m, fa);
}
}
37.使用二维数组形成并按下列形式输出数据
main ( )
{ int i, j, ________; /* 第一空 */
for (i=0; i<5; i++)
for (j=0; j<5; j++) a [i] [j] =________; /* 第二空 */
for (i=0; i<5; i++)
{
for (j=0; j<5; j++) printf (″%2d″, a [i] [j]);
________; /* 第三空 */
}
}
38.键入一串字符(换行作为结束标志),统计字符的个数,将该串字符及字符个数显示到屏幕上并写入文件str. dat中。
#include <stdio. h>
main ( )
{
char ch; int sumch=0;
FILE *fp;
fp=fopen (″str. dat″, ″w″);
while ((ch=getchar ( ))!= ________) /* 第一空 */
{
sumch ++;
putchar (ch);
fputc (________, fp); /* 第二空 */
}
printf (″sumch=%d\n″, sumch);
fprintf (________, ″sumch=%d\n″, sumch); /* 第三空 */
fclose (fp);
}
五、程序设计题(本大题共3小题,第39小题5分,第40、41小题各6分,共17分)
39.为实型变量x输入一个值后,输出x的值、x的平方根、x的平方、x的立方根和x的立方。
40.输入三个整型数,找出其中数值最大者并输出。
41.根据Fibonacci数列公式:
F
n=
计算并输出sum=前20项之和。
自考试题WORD文档下载地址: