全国2006年1月高等教育自学考试
高级语言程序设计(一)试题
课程代码:00342
一、单项选择题(本大题共20小题,每小题1分,共20分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。
1.可以用作C程序标识符的一组是( )
A.print B.i\am
oodb one-half
aBc 3pai
C.Pxq D.Cpp
line# pow
His.age while
2.以下叙述正确的是( )
A.宏名必须用大写的英文字母表示
B.宏定义不仅是符号替换,也可以赋值
C.宏替换是在程序编译时完成的,不占用程序运行时间
D.引用带参数的宏时,实际参数与宏定义中的形式参数类型应一致
3.设char a='\70';则变量a中( )
A.包含1个字符 B.包含2个字符
C.包含3个字符 D.是非法表示
4.设long i=65539;,执行语句printf("%d",i);后的输出结果是( )
A.-3 B.3
C.65539 D.数据不确定
5.设float c,f;,将数学表达式C=
(F-32)能正确表示成C语言赋值表达式的是( )
A.c=5*(f-32)/9 B.c=5/9(f-32)
C.c=5/9*(f-32) D.c=5/(9*(f-32))
6.设int i=10;,表达式30-i<=i<=9的值是( )
A.0 B.1
C.9 D.20
7.以下不能看作一条C语句的是( )
A.{;} B.a=5,b=5,c=5;
C.if(x>=0&&y=0); D.if(x= =0)a=5;b=10;
8.在函数调用时,以下说法正确的是( )
A.函数调用后必须带回返回值
B.实际参数和形式参数可以同名
C.函数间的数据传递不可以使用全局变量
D.主调函数和被调函数总是在同一个文件里
9.设int x=7;,执行语句x=x <<2;后,变量x的值是( )
A.1 B.3
C.14 D.28
10.执行语句printf("|%9.4f|\n",12345.67);后的输出结果是( )
A.|2345.6700| B.|12345.6700|
C.|12345.670| D.|12345.67|
11.以下说法中正确的是( )
A.字符型变量可以存放字符串
B.递归调用是指函数调用自己
C.所有的外部函数只能在本文件中被调用
D.在循环体中break语句和continue语句的作用都是结束循环
12.设char s[6],*ps=s;,则正确的赋值语句是( )
A.s="12345"; B.*s="12345";
C.ps="12345"; D.*ps="12345";
13.设int a[ ]={1,2,3,4,5},*p=a;
则数组元素的正确表示是( )
A.a[2] B.&(a+1)
C.a[5] D.&p
14.对二维数组的正确定义是( )
A.int a[ ] [ ]={1,2,3,4,5,6}; B.int a[2] [ ]={1,2,3,4,5,6};
C.int a[ ] [3]={1,2,3,4,5,6}; D.int a[2,3]={1,2,3,4,5,6};
15.字符数组s不能作为字符串使用的是( )
A.char s[ ]="happy";
B.char s[ ]={"happy"};
C.char s[6]={'h','a','p','p','y'};
D.char s[4]={'h','a','p','p','y'};
16.若定义函数:
fun(int a,float b)
{return a+b;
}
则该函数的数据类型是( )
A.int B.void
C.float D.不确定
17.设
struct st
{ int a;
float b;
}s, *p=&s;
则正确的引用是( )
A.(*).s.a B.(*p).a
C.p->s.a D.p.s.a
18.设enum color {red,yellow=2,blue,white,black}r=white;,执行printf("%d",r);后的输出结果是( )
A.0 B.1
C.3 D.4
19.以下说法中错误的是( )
A.共用型数据中所有成员的首地址都是同一个
B.可以用已定义的共用型来定义数组或指针变量的类型
C.共用型数据中的成员可以是结构型,但不可以是共用型
D.用typedef定义新类型取代原有类型后,原类型仍可有效使用
20.设#define L(x) 2*3.14*x
则L(x)是( )
A.函数名 B.函数调用
C.无参的宏名 D.带参的宏名
二、填空题(本大题共10小题,每小题2分,共20分)
请在每小题的空格中填上正确答案。错填、不填均无分。
21.设int a[10];则数组a的首元素是__________________。
22.设int a=0,b=0,c;,则执行c=(a-=b-5),(a=b,b=3);后变量c的值是__________________。
23.设int a=0,b=0,c=2,d=4;,则执行(c=a= =b)||(d=b= =a);后变量d的值是__________________。
24.设int a[ ]={1,2,3,4,5,6,7,8},*s=a;
则*(s+1)的值是__________________。
25.设char s[ ]="apple";,则数组s的长度是__________________。
26.被调用函数执行结束时,此函数中定义的__________________类型的变量不被释放。
27.表达式的运算对象可以是常量、函数调用和__________________。
28.设int x;,则将x强制转换为双精度类型应写成__________________。
29.语句if(!k)a=3;中!k与__________________等价。
30.函数调用时,若形参是一个指针变量,而对应的实参是一个数组名,则函数参数的传递方式是__________________传递。
三、程序分析题(本大题共5小题,每小题5分,共25分)
阅读下列程序,将输出结果写到各题右侧的空白处。
31.main( )
{
int a[3][3]={{1},{2},{3}};
int b[3][3]={1,2,3};
printf("%5d",a[1][0]+b[0][1]);
printf("%5d\n",a[0][1]+b[1][0]);
}
32.int a=10;
struct data {int a, b;} s;
main ( )
{ int c;
s.a=20;s.b=30;
c=f (s.a+s.b);
printf("%d,%d,%d\n", s.a, s.b, c);
}
f (int b)
{
printf ("%d,%d\n",a, b);
return (a+b);
}
33.#include <stdio. h>
fun ( )
{ int y=1;
static int z=4;
z ++; ++ y;
return (y*z);
}
main ( )
{ int i;
for (i=1; i<3; i++)
printf ("%5d\n",fun ( ));
}
34.main ( )
{ char *p,s[ ]="6543210";
for (p=s; *p!='\0';)
{ printf ("%s\n",p);
p ++;
if (*p!='\0') p ++;
else break;
}
}
35.main( )
{
long f( );
printf("%5ld\n",f(5));
}
long f(int b)
{
if(b= =1| |b==2)return 1;
else return f(b-1)+f(b-2);
}
四、程序填充题(本大题共3小题,每小题6分,共18分)
给出下列程序,将横线处缺少的部分补上,使其能正确运行。
36.键入10个整数,统计其中正数(neg)、负数(pos)和零(zero)的个数并将三者输出。
int neg=0,pos=0,zero=0;
void sele(int num)
{
if(num>0)neg ++;
else if(num<0)pos ++;
else ______________ ;/ * 第一空 */
}
main ( )
{
int i,a[10];
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
printf("%5d",a[i]);
self(_________________); / * 第二空 */
}
printf("\nneg=%d,pos=%d,zero=%d\n",_______________); / * 第三空 */
}
37.输入一个学生的成绩(在0~100分之间,超出此范围显示错),进行五级评分并显示。
main ( )
{
int score;
scanf ("%d",&score); printf ("%d->",score);
if(__________________) / * 第一空 * /
switch (___________________) / * 第二空 */
{
case 9:
case 10: printf (" Excellent \ n");break;
case 8: printf ("Good \ n");break;
case 7: printf ("Middle \ n"); break;
case 6: printf ("Pass \ n");_______________;/* 第三空 */
default: printf ("No pass \ n");
}
else printf ("Input error! \ n");
}
38.键入一个字符串(换行作为结束标志),将该字符串分别写到文本文件(te.dat)和二进制文件(bi.dat)中。
#include<stdio.h>
main ( )
{
_______________;/* 第一空 */
char str [80];
gets (str); puts (str);
te=fopen ("te.dat"_______________); / * 第二空 */
bi=fopen ("bi.dat",_______________); / * 第三空 */
fputs (str, te); fwrite (str, sizeof (str), 1, bi);
fclose (te); fclose (bi);
}
五、程序设计题(第39小题5分,第40、41小题各6分,共17分)。
39.输入一个圆半径(r),计算并输出圆的面积(s)和周长(l).
40.计算当sum=1+时,输出N的值。
41.用循环语句输出下列字母编排的三角形。
a
ab
abc
abcd
………
abcde………xyz
本自考试题WORD文档下载: