全国2003年10月高等教育自学考试
高级语言程序设计(一)试题
课程代码:00342
第一部分 选择题(共20分)
一、单项选择题(本大题共20小题,每小题1分,共20分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。
1.组成C语言程序的是( )
A.过程 B.函数
C.子程序 D.主程序和子程序
2.编译程序的功能是( )
A.将汇编语言程序转换为目标程序
B.将汇编语言程序转换为高级语言程序
C.将高级语言程序转换为目标程序
D.将高级语言程序转换为汇编语言程序
3.C语言中定义某个内部变量时,如果省略了存储类型符,则系统将默认该变量是( )
A.自动型 B.寄存器型
C.静态型 D.外部参照型
4.不用第三个变量,将变量a和b的值进行互换的操作是( )
A.a+=b;b-=a;a-=b; B.a+=b;b=a-b;a-=b;
C.b-=a;a-=b;a-=b; D.b-=a;a=b-a;a+=b;
5.自动型变量分配在( )
A.内存的数据区中 B.CPU的通用寄存器中
C.内存的程序区中 D.内存的堆栈区中
6.下列程序段运行后,x的值是( )
a=1;b=2;x=0;
if(!(--a))x--;
if(!b)x=7;else ++x;
A.0 B.3
C.6 D.7
7.对do-whie语言错误的说法是( )
A.可构成多重循环结构 B.循环次数不可能为0
C.循环次数可能为0 D.先执行后判断
8.设int x=1,a=9,b=6,c=7,d=8;则执行语句:
if(a>b) if(c>d)x=2;else x=3;
后,x的值是( )
A.1 B.2
C.3 D.不确定
9.设char str1[10]=″ABCDE″,str2[10]=″XYZ″;则执行语句:
printf(″%d″,strlen(strcpy(str1,str2)));
后的输出是( )
A.3 B.5
C.8 D.9
10.初始化一维数组a正确的语句是( )
A.int a[10]=(0,0,0,0,0); B.int a[10]={ };
C.int a[ ]={10} ; D.int a[10]={[10*1]};
11.语句int (*p)( );的含义是( )
A.p是一个指向函数的指针变量,该函数的返回值是一个整型数据
B.p是指针变量,指向一个整型数据
C.p是一个指向一维数据的指针变量
D.p是指针函数
12.设int a[10],*p=a;
则对数组元素的正确引用是( )
A.a[p] B.p[a]
C.*(p+2) D.p+2
13.对于程序段 float f1(int a)
{int b;……}
main( )
{int m,n;
m=f1(n);……}
char f2(int x,int y)
{int a;……}
变量m,n的作用范围是( )
A.整个程序段 B.main函数
C.main函数和f2函数 D.mian函数和f1函数
14.若函数中局部变量的值经函数调用后仍保留,则该局部变量定义为( )
A.自动变量 B.内部变量
C.外部变量 D.静态变量
15.在下列运算符中,优先级最低的是( )
A.! B.·
C.( ) D.[ ]
16.对于如下定义的枚举型
enum list1
{x1,x2,x3,x4=6,x5,x6};
枚举常数x2和x6的值分别是( )
A.1,6 B.1,8
C.2,6 D.2,8
17.对于文件操作方式″rb+″,准确的说法是( )
A.可读写文本文件 B.只读二进制文件
C.只读文本文件 D.可读写二进制文件
18.数据-324在二进制文件和文本文件中所占的字节数分别是( )
A.2,2 B.2,4
C.4,2 D.4,4
19.设int a=1,b=2,c=4;
经过表达式(c=a!=b)&&(a= =b)&&(c=b)运算后,a、b和c的值分别是( )
A.1,2,0 B.1,2,1
C.1,2,2 D.1,2,3
20.下列程序的运行结果是( )
#define EVEN(x)x%2= =0?1:0
main( )
{
if(EVEN(9+1)) printf(″is even″);
else printf(″is odd″);
}
A.is even B.出错
C.无结果 D.is odd
第二部分 非选择题(共80分)
二、填空题(本大题共10小题,每小题2分,共20分)
请在每小题的空格中填上正确答案。错填、不填均无分。
21.设char a,b;则表达式a/b-′c′的值的类型为 。
22.设int k=-1;执行printf(″%u″,k);后输出的值是 。
23.设for(k=0;k<0;k++)++k;则该循环共执行 次。
24.设int a =1,b=2;经表达式a=a∧b,b=a∧b,a=a∧b运算后a,b的值分别是 。
25.表示空类型的保留字是 。
26.已知程序段:
char *p=″abcdefgh″;p+=4;
printf(″%c\n″,*p++);
运行结果为 。
27.设
struct student
{ int no;char name[12];
char sex;float score[4];
}stu1;
在程序执行时,系统为stu1分配 个字节的内存空间。
28.写出“n是小于整数m的偶数”的表达式 。
29.字符串″ABCD\t\\\123″的长度是 。
30.设union
{ int b;char a[9];float x;}un;
则变量un所占的字节数是 。
三、程序分析题(本大题共5小题,每小题5分,共25分)
阅读下列程序,将输出结果写到各题右侧的空白处
31.sum(int n)
{
if(n= =1) return(1);
else return n+sum(n-1);
}
main( )
{
printf(″%d\n″,sum(10));
}
32.设从键盘输入282
sub(int n)
{int s=1;
do
{ s*=n%10;n/=10;}
while(n);
return s;
}
main( )
{ int n;
scanf (″%d″,&n);
n=sub(n);
printf(″%d\n″,n);
}
33.#define N 7
#define PRINT for(i=0;i<N;i++)printf(″%5d″,a[i]);printf(″\n″);
main( )
{int i,j,temp,a[N]={1,2,3,4,5,6,7};
for(i=0,i<N/2,i++)
{j=N-1-i;temp=a[i];a[i]=a[j];a[j]=temp;}
}
34.int x=30;y=50;
sub(x,y)
{ y=x>y?x:y;
return y;
}
main( )
{
{int x=100;
printf(″%d\n″,sub(x,y));
}
printf(″%d,%d\n″,x,y);
}
35.设文件file1.c的内容为COMPUTER
#include ″stdio.h″
main( )
{ FILE *fp;
char ch;
if((fp=fopen(″file1.c″,″r″))= =NULL)
{ printf(″Cannot open file \n″);
exit(0);
}
while(!feof(fp))
{
ch=fgetc(fp);if(ch>=′A′&&ch<=′Z′)fputc(ch+32,stdout);
}
fclose(fp);
}
四、程序填充题(本大题共3小题,每小题6分,共18分)
给出下列程序,将横线处缺少的部分补上,使其能正确运行。
36.将一个十进制整数n转变为二进制数。
main( )
{ int i=0,j,n,num[20];
scanf(″%d″, ); /*第一空*/
while(n!=0)
{ num[i++]= ; /*第二空*/
n= ; /*第三空*/
}
for(j=i-1;j>=0;j--)printf(″%d″,num [j]);
}
37.一个一维数组和一个二维数组同处一个共用型,将数据输入一维数组后,在二维数组中输出。
main( )
{union data
{ int a[10];
int b ;/*第一空*/
};
union data ab;
int i,j;
for(i=0;i<10,i++)
scanf(″%d″, ); /*第二空*/
for(i=0;i<2;i++)
for(j=0;j<5;j++)
printf(″%5d″, );/*第三空*/
}
38.用指针法输出二维数组,每行三个数。
main( )
{int i,j,a[3][3]={1,2,3,4,5,6,7,8,9},(*p)[3];
; /*第一空*/
for(i=0;i<3;i++)
{
for(j=0;j<3;j++) printf(″%5d″, ); /*第二空*/
;/*第三空*/
}
}
五、程序设计题(第39小题5分,第40、41小题各6分,共17分)
39.输出100之内所有个位数字为6且能被3整除的自然数。(如:36,66,96……)
40.键入一串字符(换行符结束),用循环语句将其中的大小写英文字母互换后输出。
41.设int a[3][4];先为数组输满数据,再将该数组周边的元素输出(元素输出次序不限