全国2003年1月高等教育自学考试
高级语言程序设计(一)试题
课程代码:00342
第一部分 选择题
一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。
1.属于C语言基本数据类型的是( )
A.指针型 B.无符号整型
C.数组型 D.结构型
2.C语言的长整型数值在计算机中占用的字节个数是( )
A.1 B.2
C.3 D.4
3.C语言中,″\x3d″在内存中占用的字节数是( )
A.1 B.2
C.4 D.5
4.设int x;则执行printf(″%x\n″,~x^x);的结果是( )
A.0 B.1
C.ff D.ffff
5.对于while语句,错误的说法是( )
A.用条件控制循环体的执行次数
B.循环体至少要执行一次
C.循环体有可能一次也不执行
D.循环体中可以包含若干条语句
6.设int a=9,b=20;则printf(″%d,%d\n″,a--,--b);的输出结果是( )
A.9,19 B.9,20
C.10,19 D.10,20
7.执行下列语句
int a=8,b=7,c=6;
if(a<b)if(b>c){a=c;c=b;}
printf(″%d,%d,%d\n″,a,b,c);
后输出的结果是( )
A.6,7,7 B.6,7,8
C.8,7,6 D.8,7,8
8.设static char x[ ]=″12345″,y[ ]={′1′,′2′,′3′,′4′,′5′,′\0′};那么( )
A.x数组的长度等于y数组的长度
B.x数组的长度大于y数组的长度
C.x数组的长度少于y数组的长度
D.x数组与y数组的存储区域相同
9.设int i,x[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句
for(i=0;i<3;i++)
printf(″%d″,x[i][2-i]);
的输出结果是( )
A.147 B.159
C.357 D.369
10.设int b[ ]={1,2,3,4},y,*p=b;
则执行语句y=*p++;之后,变量y的值为( )
A.1 B.2
C.3 D.4
11.设int a,*p;则语句p=&a;中的运算符“&”的含义是( )
A.位与运算 B.逻辑与运算
C.取指针内容 D.取变量地址
12.若函数能被其它编译单位引用,那么函数定义时的存储类型应选用( )
A.auto B.static
C.extern D.register
13.下面函数定义有错误的是( )
A.f1(x1,x2) B.f1(x1,x2)
int x1,x2; int x1;int x2;
{函数体} {函数体}
C.f1(int x1,x2) D.f1(int x1,int x2)
{函数体} {函数体}
14.C语言中计算a
3正确的表达是( )
A.a^3 B.pow(a,3)
C.a**3 D.power(a,3)
15.下列定义正确的是( )
A.anum t={a,b}x; B.enum t{1,2}x;
C.anum {′+′,′-′}x; D.enum t{a,b}x;
16.设有定义:union u{int a[4];float b[3]};
char c[16];}aa;
则printf(″%d\n″,sizeof(aa));的输出是( )
A.32 B.16
C.12 D.8
17.数据-35.78在文本文件中占用的字节个数是( )
A.4 B.5
C.6 D.8
18.在下列有关宏替换的叙述中,正确的说法是( )
A.宏替换占用运行时间
B.宏名有类型
C.带参数的宏替换和函数等价
D.宏替换只是字符替换
19.下列程序的运行结果是( )
# define A 5
# define B A+1
main( )
{int a;
a=B;
printf(″%d\n″a--);
}
A.6 B.5
C.4 D.出错
20.为了向二进制文件尾部增加数据,打开文件的方式应采用( )
A.″ab″ B.″rb+″
C.″wb″ D.″wb+″
第二部分 非选择题
二、填空题(本大题共10小题,每小题2分,共20分)
21.设int y;执行表达式(y=4)||(y=5)||(y=6)后,y的值是______。
22.设char ch=′A′;则printf(″%c″,(ch>=′A′ && ch<=′Z′)?ch+32:ch);的值是_____。
23.结构化程序设计的三种基本结构是:选择结构、循环结构和______。
24.下列程序
int x=3;
do{printf(″%d″,--x);}while(!x);
循环执行的次数是______。
25.在C语言中,一个二维数组可以看成若干个______数组。
26.设int a[3][4]={{1,3,5,7},{2,4,6,8}};则*(*a+1)的值为______。
27.若函数定义为
int data( )
{ float x=9.9;
return(x);
}
则函数返回的值是______。
28.设struct student
{int no;char name[12];
float score[3];
{s1,*p=&s1;.
用指针变量p给s1的成员no赋值1234的方法是______。
29.判断文本文件是否结束时使用的符号常量EOF的值是______。
30.设有一个名为″myfile.c″的C程序,
其主函数为mian(int argc,char *argv[ ])。如果在执行时,输入的命令行为
myfile aa bb ↙
则形式参数argc的值是______。
三、程序分析题(本大题共5小题,每小题5分,共25分)
阅读下列程序,将输出结果写到各题右侧的空白处
31.fun(int x)
{
int y=0;
static int z=3;
z++;++y;
return(x+y+z);
}
main( )
{
int I,x=2;
for(i=0;i<2;i++)
printf(″%5d″,fun(x++));
}
32.main( )
{
int s=0,i;
for(i=1;;i++)
{
if(s>50)break;
if(i%2==0) s+=i;
}
printf(″i=%d,s=%d\n″,i,s);
}
33.gcd(int m,int n)
{ if(m==n)return m;
else if(m>n) return gcd(m-n,n);
else return gcd(m,n-m);
}
main( )
{
printf(″Gcd=%d\n″,gcd(24,36));
}
34.# include<stdio.h>
main( )
{ int i=0;
char c,s[]=″SABC″;
while(c=s[i])
{
switch(c)
{
case ′A′:i++;break;
case ′B′:++i;
default:putchar(c);i++;
}
putchar(′*′);
}
}
35.int a1=300,a2=400;
main( )
{int a3=100,a4=200;
sub1(a3,a4);
sub1(a1,a2);
printf(″%d,%d,%d,%d\n″,a1,a2,a3,a4);
}
sub1(int x,int y)
{ a1=x;
x=y;
y=a1;
}
四、程序填充题(本大题共3小题,每小题6分,共18分)
给出下列程序,将横线处缺少的部分补上,使其能正确运行。
36.将十个整数输入数组,求出其平均值并输出。
main( )
{int i,a[10],sum=0,*p=______; /*第一空*/
for(i=0;i<10;i++)
{ scanf(″%d″,p);sum+=______; /*第二空*/
printf(″%8.2f\n″,______); /*第三空*/
}
37.输入一个无符号整数后求出它的各位数之和并输出。
例如若输入123,则将各位之和6(即1+2+3)输出。
______f(num) /*第一空*/
unsigned int num;
{ unsigned int k=0;
do
{ k+=______; /*第二空*/
num/=10;
} while(num);
______; /*第三空*/
}
main( )
{unsigned int n;
scanf(″%d″,&n);
printf(″%u\n″,f(n));
}
38.为数组输入数据,逆序置换后输出。(逆序置换是指:数组的首元素和末元素置换,第二个元素和倒数第二个元素置换,………)
# define N 8
main( )
{ int i,j,t,a[N];
for(i=0;i<N,i++)scanf(″%d″,a+i);
i=0;j=N-1;
while(i<j)
{ t=*(a+i);________; /*第一空*/
______=t; /*第二空*/
i++;______; /*第三空*/
}
for(i=0;i<N;i++)printf(″%5d″,*(a+i));
}
五、程序设计题(第39小题5分,第40、41小题各6分,共17分)。
本自考试题WORD文档下载: