全国201010月高等教育自学考试
高级语言程序设计(一)试题
课程代码:00342
一、单项选择题(本大题共15小题,每小题2分,共30分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。
1.用户自定义标识符正确的是(      )
A.3ab    B.int
C.fa2_a    D.sin(x)
2.关于C语言程序描述正确的是(      )
A.函数必须要有return语句    B.主函数必须位于程序的开头
C.程序中每行只能写一条语句    D.一个程序中只能有一个主函数
3.int i=8abdouble x=1.42y=5.2;,正确的表达式是(      )
A.a+=(b=4)*(a=3)    B.a=a*3=2
C.x(-3)+y* *3    D.y=float(i)
4.int a[][2]={1234567};,其中缺省的行长度的最小值是(      )
A.2    B.3
C.4    D.5
5.char c='A'int i=1,j;,执行语句j=!c&&i++;后,ij的值分别是(      )
A.01    B.10
C.165    D.266
6.typedef char STRING[255]STRING*s;,则s(      )
A.字符数组    B.字符变量
C.字符指针数组    D.字符指针变量
7.int x=6;,执行语句X+=X-=X*X;后,x的值是(      )
A.-60    B.0
C.6    D.36
8.int i=3j=3;,表达式i+++j的值是(      )
A.6    B.7
C.8    D.9
9.下列为C语言保留字的是(      )
A.real    B.long
C.pointer    D.integer
10.int a=2,b=6,c=8;,表达式(a,b),(c,10)的值是(      )
A.2    B.6
C.8    D.10
11.变量定义并初始化正确的是(      )
A.int a=l*p=a    B.int a=2p=*a
C.int a=3p=a    D.int a=4*p=a
12.使用递归函数计算n!(n=012,,3....)的是(      )
A. fac(int n)    B. fac(int n)
{int i,f=- 1;    {
if(n==0) return 1;        if(n==0n==1) return 1;
else for(i=1 ;i<=n;i++) f*=i;    else return n*fac(n-1);
return f;    }
关于printf函数正确的是
}
C. fac(int n)    D. fac(int n)
{int i=l,f=l;    {int i=1,f=1;
if(n==0) return l;    if(n==0) return 1;
else while(i<=n) f*=i++;    else do { f*=i;}while (i++<n)
return f;    return f;
}    }
13.struct{int age;int num;}stu,*p=stu
对结构型变量stu的成员age引用错误的是(      )
A.stu.age    B.p->age
C.*p.age    D.(*p).age
14.int a[2]={12}*p=a;,则*p(      )
A.元素a[0]的值    B.元素a[0]的地址
C.元素a[1]的值    D.元素a[1]的地址
15.int a[10];,对数组元素引用正确的是(      )
A.a[10]    B.a['0']
C.a(6)    D.a[10-10]
二、填空题(本大题共10小题,每小题2分,共20分)
请在每小题的空格中填上正确答案。错填、不填均无分。
16.执行语句printf"d\n"strlen("a\n\x41"));后,输出结果是       
17.int a,b,c;,表达式a=2b=5b++a+b的值是       
18.int a=1b=2m=2n=2;,执行表达式(m=a<b)||++n后,n的值是     
19.int x=4,y=2;,表达式x<y?yx++的值是         
20.执行下列程序段后,输出结果是                 
int x=3
do{printf("5d"x-=2)}while(!(--x))
21.执行语句for(i=10;i>0;i--);后,变量i的值是         
22.int x,y;,循环语句for(x=0,y=0(y!=10)&&(x<5);x++);执行的次数是       
23.若函数内定义变量的存储类别是static,该变量被称为          静态变量。
24.int x=3;,执行语句printf((x2)?("**dn")("##d\n")x);后,输出结果是       
25.char s[3]="AB"*p=s;,则*(p+2)的值是       
三、程序分析题(本大题共4小题,每小题4分,共16)
阅读下列程序,将输出结果写到各题右侧的空白处。
26.
void main( )
{
int i=0,j =0,k=0;
while (i< 10) i++;
while (j++<l 0);
while (++k<l 0);
printf ("i=%d,j=%d,k=%d\n",i,j,k);
}
27.
int a;
fun(int i)
{
a+=2*i;
return a;
}
void main( )
{
int a=10;
printf("%d,%d\n",fun(a),a);
}
28.
void main( )
{
int a=0, b=0, d=0;
char *s="xcbc3abcd";
for(; *s!= ‘\0’; s++)
switch(*s)
{
case ‘a’: a++; break;
case ‘b’: b++; break;
default: d++;
}
printf("a=%d,b=%d,d=%d\n",a,b,d);
}
29.
#define  M  2<3 ? 5:6
void main( )
{
int i=3, j, k;
j=i+M;
k=i+(M);
printf ("%d, %d\n", j, k);
}
四、程序填充题(本大题共3小题,每小题6分,共18)
请将下列程序横线处缺少的部分补上,使其能正确运行。
30.键入数据至二维数组,求出其中的最大值、最小值及所有元素之和。
void main( )
{
int i,j;
int a[3][4],max, min, sum=0;
for(i=0;i<3 ;i++)
for(j =0 ;j <4 ;j ++) scanf("%d",              ); /*第一空*/
max=min=a[0][0];
for(i=0;i<3 ;i++)
for(j =0 ;j <4 ;j ++)
{
sum =            ;/*第二空*/
if(a[i] [j]>max) max=a[i] [j];
if(a[i] [j]<min) min=a[i][j];
}
printf("max=d,min=d,sum=d\n",              );/*第三空*
}
31.26个小写英文字母中的元音字母(a,e,i,o,u)写入到文件vo.txt中。
#include"stdio.h"
void main( )
{
char      ;/*第一空*
FILE *fp
fp=fopen("vo.txt""w")
for(ch=‘a’ch<=‘z’ch++)
if(              )fputc(ch,fp);/*第二空*