2011年10月自学考试00342《高级语言程序设计(一)》试题
发布时间:2019-08-122011年高级语言程序设计模拟试卷(九)
一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。
1. 在定义 int a[5][4];之后,对 a 的引用正确的是()
A. a[2][4]
B. a[5][0]
C. a[0][0]
D. a[0,0 ]
答案:C
2. 设函数f()定义如下,则fun(7,8)的值是 ()
int fun(int x1,int x2)
{ int x; x1>x2?(x=3)∶(x=4); return(x+x1); }
A. 9
B. 10
C. 11
D. 12
答案:C
3. 设有定义语句“int x[8]={5,4,3,2,1},*p=x;”,则*p+6的值是 ()
A. 0
B. 1
C. 5
D. 11
答案:D
4. 运行下列程序后,输出结果是()
int f(int x,int y)
{ return(x-y); }
main()
{ int a=40,b=20,c=10;
printf(″%d\n″,f(f(a,b),f(b,c)));
}
A. 0
B. 10
C. 30
D. 50
答案:B
5. 下列符号串中,不属于C语言保留字的是()
A. if
B. then
C. static
D. for
答案:B
6. 当 c 的值不为0时,在下列选项中能正确将 c 的值赋给变量 a、b的是()
A. c=b=a;
B. (a=c)||(b=c);
C. (a=c)&&(b=c);
D. a=c=b;
答案:C
7. 执行下列程序段后的输出结果是 ()
int x=8; while (--x>6) printf(″*″);
A. ****
B. ***
C. **
D. *
答案:D
8. 运行下列程序后,输出结果是()
f(int x,int y,int *z)
{ return(*z=x*x+y*y); }
main()
{int a=3;
f(f(1,2,&a),f(1,2,&a),&a);
printf(″%d″,a);
}
A. 9
B. 10
C. 50
D. 60
答案:C
9. 设有定义语句“int( *ptr)[10];”其中的 ptr 是()
A. 10个指向整型变量的指针
B. 指向10个整型变量的函数指针
C. 一个指向具有10个元素的一维数组指针
D. 具有10个指针元素的一维数组
答案:C
10. 以下()是不正确的转义字符。
A. \\
B. \
C. 081
D. \0
答案:C
11. 以下正确的定义语句是()
A. int A[′a′];
B. int A[3,4];
C. int A[][3];
D. int A[10];
答案:D
12. 以只写方式打开一个文本文件,应选择的文件操作方式是()
A. ″a+″
B. ″w+″
C. ″wb″
D. ″w″
答案:D
13. 在C语言中,不合法的保留字是 ()
A. if
B. Char
C. float
D. default
答案:B解析:Char
14. 设有定义“double a=5.0,b=2.5;”,则表达式(int)b+a/b的值是()
A. 3
B. 4
C. 3.0
D. 4.0
答案:D解析:4.0
15. 语句“printf(″%d\n″,(x=1,x=2));”的输出结果是 ()
A. 1
B. 2
C. 0
D. 语法出错
答案:B
解析:2
16. 下列程序段的输出结果是 ()
int x=2;
do { int x=1; x=!x; printf(″%d,″,x); }
while (--x);
A. 2,1,0,
B. 1,0,
C. 0,0,
D. 2,1,
答案:C
解析:0,0,
17. 以下与int*q[5];等价的定义语句是()
A. int q[5];
B. int *q;
C. int*(q[5]);
D. int(*q)[5];
答案:C解析:int*(q[5]);
18. 若定义了()
struct
{ char a[10];
short b[4][5];
long c[5];
}u;
则执行printf(″%d\n″,sizeof(u));语句的输出结果是()
A. 10
B. 20
C. 40
D. 70
答案:D
解析:70
19. 下列程序段的输出结果是 ()
char b=′b′,e=′e′;
printf(″%d,%c\n″,e-b,e-′a′+′A′);
A. 2,M
B. 2,E
C. 3,M
D. 3,E
答案:解析:ASCⅡ
20. 以下选项中,合法的用户标识符是 ()
A. long
B. 2Test
C. 3Dmax
D. A.dat
答案:B
解析:2Test
二、填空题(本大题共10小题,每小题2分,共20分)请在每小题的空格中填上正确答案。错填,不填均无分。
1. 表达式10<<3+1的值是___。
答案:160
2. 执行下列语句后,变量x的值是___。
switch (x=1) { case 1: x=2;
case 2: x=3; }
答案:3
3. 在执行循环结构时,能够直接退出循环的语句是___。
答案:break;
4. 在C语言中,当定义一个函数的类型为void时,说明执行该函数后___。
答案:无返回值
5. 若有定义 int a[3][4]={1,2,3,4,5,6,7,8,9};则a[1][3]=___,
a[2][3]=___。答案:8 0
6. 在C语言中,输入操作是由库函数___完成的,输出操作是由库函数___完成的。
答案:scanf printf
7. 表达式″islower(65)″的值是___。
答案:0
8. 若有char a[5]={′1′,′2′,′\0′,′3′,′\0′};则执行语句
printf(″%s″,a);的结果为______答案:12
9. 设有定义语句“int k,*p1=&k,*p2;”,能完成表达式“p2=&k”功能的表达式可以写成_________
答案:p2=p1
10. 设有数据定义语句″struct{char a[5];long b[5];}x;″,则为变量x所分配的内存字节数是个______
答案:30
三、程序分析题(本大题共5小题,每小题5分,共25分)阅读下列程序,将输出结果写到各题右侧的空白处。
1. 分析下面程序的运行结果。
main()
{
int i,j,row,col,max;
static int a[3][4]={{1,2,3,4},{9,8,7,6},{-1,-2,0,5}};
max=a[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(a[i][j]>max)
{ max=a[i][j];row=i;col=j;}
printf(″max=%d,row=%d,col=%d\n″,max,row,col);
}
答案:max=9,row=1,col=0
2. main()
{ int a[]={1,2,3,4,5,6};
int *p;
int i;
p=a;
*(p+3)+=2;
printf(″%d,%d\n″,*p,*(p+3));
}
答案:1,6
3. int f(int x,int y,int *px,int *py)
{ *px=x+y;
*py=x-y;
}
main()
{ int a=10,b=20;
f(a,b,&a,&b);
printf(″%d,%d/n″,a,b);
}
输出结果为?
答案:30,-10
4. # include <stdio.h>
main()
{ in i,n;
FILE fp;
if((fp=fopen(″temp″,″w+″))==NULL)
{ printf(″不能建立 temp 文件\n″);exit(0);}
for(i=1;i<=10;i++) printf(fp,″%3d″,i);
for(i=0;i<5;i++)
{fseek(fp,i*6L,SEEK_SET);
fscanf(fp,″%d″,&n);
printf(″%3d″,n);
}
fclose(fp);}
答案:1 3 5 7 9
5. # include
main()
{ int a[]={5,6,7,8},i;
func(a);
for(i=0;i<4;i++) printf(″%d″,a[i]);
}
func(int b[])
{ int j;
for(j=0;j<4;j ++) b[j]=2*j;
}
答案:0246
四、程序填充题(本大题共3小题,每小题6分,共18分)给出下列程序,将横线处缺少的部分补上,使其能正确运行。
1. 图中空白处答案应为:___,___,___。
答案:″r″ fgetc(fp) count++
2. 下列程序是求短整型正整数的各位上的数字之和并输出。
main()
{ short m,;
scanf(″%d″,&m);
while ()
{ s=s+m%10;
______
}
printf(″%d″,s);
}
答案:s=0m!=0m=m/10
3. 要求输入10个数,并将最大数输出。
# include ″stdio.h″
main()
{ int a[10],i,j;
for (i=0;i< =9;i ++)
scanf(″%d″,___);
for(i=0;i<9;i ++)
if(a[i]>a[i+1])
{ j=a[i+1];;a[i]=j; }
printf();
}
答案:&a[i]″%d″,a[i]a[i+1]=a[i]
五、程序设计题(第1小题5分,第2、3小题各6分,共17分)
1. 编一个程序,输入一个整数,输出其符号(若≥0,输出1;若<0,输出-1)。答案:# include
main()
{ int a;
scanf(″%d″,&a);
if(a>=0)printf(″1″);
else printf(″-1″);
}
2. 编程序按下列公式计算e的值(精度为1e-6)。
e=1+11!+12!+13!+…+1n!
答案:# include
# define N 3
main()
{ int i;
float e=1,f=1;
do{ f=f*i;
e=e+1/f;
}
while(1/f>1e-6);
printf(″e=%f″,e);
}
3. 编一个函数,返回一维实型数组前 n 个元素的最大数、最小数和平均值。数组 、n 和最大数、最小数、平均数值均作为函数的形式参数,本函数无返回值。(用指针方法实现)答案:void M(float *z,int *n,float *max,float *min,float *j)
{ int i;
float s=0.0;
*max=*z, *min=*z;
for(i=0;i<*n;i++,z++)
{s=s+*z;
if( *max<*z) *max=*z;
else if( *min>*z) *min=*z;
}
*j=s/(*n);
}