2007年下半年全国自考(高级语言程序设计)真题试卷
一、1.单项选择题
0. 可以作为自定义标识符的是( )
A.2x
B.break
C.m-n
D.m-n
1. 正确的变量定义是( )
A.unsigned long d=1000;
B.float m1=m2=10.0;
C.char c1="A",c2=A;
D.double x=0.618,x=3.14;
2. 表达式的值为0的足( )
A.5/5%5
B.5>2
C.!4
D.0x7&7
3. 设int a=1,b=2;,则执行a=b+2,a++,a+b;后a和b的值分别是( )
A.1和2
B.3和2
C.4和7
D.5和2
4. 设int a=2,b=3,c=4;,则表达式a>b&&b<c
b的值是( )
A.-1
B.0
C.1
D.2
5. 设int a=2,b=3,x,y;,则能正确执行的语句是( )
A.scanf("%d,%d",x-y,x+y);
B.printf("%d
",a%b);
C.printf("%f
",a+b);
D.scanf("%d,%d",x,y);
6. 设chars[10]="abcde",t[]="12345";则s和t在内存中分配的字节数分别是( )
A.6和5
B.6和6
C.10和5
D.10和6
7. 设inta=10,*p=&a;,则执行printf("%d ",*p+a);的结果是( )
A.10
B.20
C.30
D.40
8. 自定义函数中形式参数的作用域是( )
A.本文件
B.本函数
C.main函数
D.整个程序
9. 设int b[][5]={1,2,3,4,5,6,7};,则元素b[1][2]的值是( )
A.0
B.2
C.6
D.7
10. 对函数而言,叙述正确的是( )
A.函数中只能有一个return语句
B.当函数的形参是数组时形实结合为值传递方式
C.程序中只能有一个main函数
D.无参函数的函数体内不能出现return语句
11. 执行下列程序段后输出的结果是( ) int x,y,z=1; for(x=1,y=-1;x<y;x++,y--)z++; printf("%d ",z);
A.1
B.2
C.5
D.6
12. 设static int a[3]={1,2,3};int*p[]={&a[0],&a[1],&a[2]);则与数组元素a[1]等价的是( )
A.*p[1]
B.p[1]
C.*p+1
D.p+1
13. 设struct {char name[10]; int age; }stu[2]={{"Tom",25},{"Mary",26}},*p=stu; 则执行语句printf("%S%d ",P—>name,stu[1].age);后输出结果是( )
A.Tom25
B.Tom26
C.Mary25
D.Mary26
14. 设typedef double DB;,则与DB u[5];的等价形式是( )
A.double db[5];
B.double DB[5];
C.double u;
D.double u[5];
二、2.填空题
0. 一个字符型变量所占内存的字节数是______。
1. 写出公式专
对应的C语言表达式______。
2. 执行语句printf("%s ,""World Wide Web”);后的输出结果是______。
3. 设inta,b=5;,则执行表达式a=b-2==3后a的值是______。
4. 设char s[20]="My";,则执行strcat(s,"Sun!")后s的内容是______。
5. 设float x=23.65;,则执行语句printf("%d ",(int)(x+0.5));后输出结果是______。
6. 若定义函数char*fun(){…},则该函数的返回值类型是______。
7. 设intx=-9,y;,则执行y=x>=0?x:—x;后y的值是______。
8. 若函数调用语句为f(a,b,f(a+b,a-b,b));,则函数f的参数个数是______。
9. 设int a=10;,则执行语句a+=a-=a+a;后a的值是______。
三、3.程序分析题
0. main()
{inta=1,b=2,c=3;
if(a<=c)
if(b==c)printf("a=%d
",a);
else printf("b=%d
",b);
printf("c=%d
",c);
}
1. int f(int n)
{static int m=5:
return++m+n:
}
main()
{int i;
for(i=0;i<3;i++)printf("%5d",f(i));
printf("
");
}
2. #define SIZE 4
main()
{int n[SIZE]={8,3,4,1};
int i,j;
for(i=0;i<SIZE;i++)
{printf("%d",n[i]);
for(j=1;j<=n[i];j++)printf("*"):
printf("
");
}
}
3. int fm(int a,int b)
{if(b==1)return a;
else return a+fm(a,b-1);
}
main()
{
printf("%d
",fm(4,3));
}
四、4.程序填充题
0. 函数fun用于计算数组各元素值的平方,主函数调用fun并输出各元素的值。
void fun(int num,int a[])
{int i;
for(i=0;i<______;i++)a[i]=a[i]*a[i]; /*第一空*/
}
main()
{
int i,b[5]={1,2,3,4,5);
fun(5,______); /*第二空*/
for(i=0;i<5;i+++)printf("%5d",______); /*第三空*/
printf("
");
}
1. 从键盘输入一串字符("#"作为结束标志),将其写入文本文件file.dat中保存。
#include<stdio.h>
#include<stdlih.h>
main()
{char ch;
FILE*fp:
if((fp=fopen("file.det","______"))==NULL)/*第一空*/
{printf("Can not open file
");exit(0);}
ch=getchar();
whil(ch!"#")
{fputc(______,fp);/*第二空*/
ch=getchar();
}
fclose(______); /*第三空*/
}
2. 从键盘输入x的值,根据以下公式计算并输出x和y的值。
#include%<math.h>
#include<stdio.h>
main()
{float x,y;
scanf("%f".______);/*第一空*/
if(x<0)printf("input error!
");
else
{switch((int)(x/2))
{case 0:y—x;______;/*第二空*/
case 1:
case 2:y=x*x+1;break;
case 3:
case 4:y=______;break;/*第三空*/
default:y=1/(x*x+1);
}
printf("x=%7.2f,y=%10.6f
",x,y);
}
}
五、5.程序设计题
0. 从键盘输入100个整数,计算并输出大于等于零的数的平均值(保留小数点后两位)。
1. (1) 编写一个计算梯形面积的函数。函数头是:float area(float t,float b,float h)其中变量t、b和h分别表示梯形的上底、下底和高。
(2) 编写主函数从键盘输入梯形的上底、下底和高的值,调用上述函数输出梯形面积(保留小数点后两位)。
