全国自考(高级语言程序设计)模拟试卷5
一、1.单项选择题
0. 汇编程序的功能是( )
A.将汇编语言程序转换成目标程序
B.将汇编语言程序转换成高级语言程序
C.将高级语言程序转换为目标程序
D.将汇高级语言程序转换为编语言程序
1. 设int x=1;a=9,b=6,c=9,d=8;执行语句: if(a>b)if(c>b)if(b>d)x=2;else x=6; 后x的值是( )
A.1
B.2
C.6
D.不确定
2. 设int a[10],*p=a; 则对数组的正确引用是( )
A.a[p]
B.p[a]
C.*(p+2)
D.p+2
3. 若内部变量在离开了定义所在的函数或复合语句后,仍在生存期内。则该变量是 ( )
A.auto变量
B.register变量
C.局部变量
D.static变量
4. 下列运算符,优先级最低的是( )
A.&&
B.!
C.->
D.+=
5. 对于文件打开方式"rb+"描述正确的是( )
A.可读写文本文件
B.只读文本文件
C.可读写二进制文件
D.只读二进制文件
6. 设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
7. 若x=100;,则表达式x++>100? x+20:x+10的值是( )
A.110
B.120
C.130
D.101
8. 若定义了int m,n=0,*p1=&m;,则与m=n等价的语句是( )
A.m=*p1
B.*p1=&*n
C.*p1=*&n
D.*&p1=&*n
9. 若有宏定义:#define MOD(x,y)x%y 则执行下面语句后的输出结果是 int a=13,b=96; printf("%d ",MOD(b,a));( )
A.1
B.2
C.5
D.6
10. 设有如下程序段 char str[]="Hello!"; char *ptr; ptr=str; 执行完以上程序段后*(ptr+6)的值为( )
A."o"
B." "
C."o
D."o"
11. 以下程序输出的结果是( ) main() {int I,j,m=0,n=0; for(I=0;I<2;I++) for(j=0;j<2;j++) if(j>=I)m=1;n++; printf("%d ",n); }
A.4
B.2
C.1
D.0
12. 执行下面程序段后,变量k的值是( )
A.10
B.30
C.3
D.不确定
13. 若有以下语句: char *language[]={"fortran","basic","C","java"}; char *q;q=language+3; 则语句printf("%c ",*q;的输出是( )
A.q的值
B.字符串"C"
C.&language[3]的值
D.程序错误,无法得到输出
14. 以下程序的执行结果是( ) #include<stdio.h> main() {printf("%d ",NULL); }
A.-1
B.0
C.1
D.2
二、2.填空题
0. 从计算机的角度来讲,______是计算机程序中解决问题的方法步骤。
1. 函数strcmp()和函数strcat()包含在头文件______中。
2. 函数调用自身的调用是______。
3. 下面程序的输出是______。
#include<stdio.h>
main()
{char x=0.40;
printf("%d
",x=x<<1);}
4. 现在程序的输出是______。
#include<stdio.h>
main()
{int arr[10],j,k=0;
for(j=0;j<10;j++)
arr[j]=j;
for(j=1;j<4;j++)
k+=arr[j]+j;
printf("%d
",k);
}
5. 阅读下列程序:
#include<stdio.h>
#define MAXCOUT 4
void fun()
main()
{int cout;
for(cout=1;tout<=MAXCOUT;cout++)
fun();
}
void fun()
{int j=0;
j+=2;printf("%d",j);
}
6. 设有int x=11;表达式(x++*1/3)的值是______。
7. 设有如下程序段:
int j=0,sum=1;
do{
sum+=j++;}
while(j<6);
printf("%d
",sum);
上述程序段的输出结果是______。
8. 以下循环体的执行次数是______。
#include<stdio.h>
main()
{int j,k;
for(j=0,k=1;j<=k+1;j+=2,k--)
printf("%d
",j);)
9. 下面程序段的输出结果是______。
#include<stdio.h>
int b=1:
int func(int *a)
{*a+=b;return(*a);)
main()
{int a=2,res=1;
res+=func(&a);
printf("%d%d
",a,res);}
三、3.程序分析题
0. #include<stdio.h>
int fun(int*a,int i,int j)
{if(i<j&&j<5)
{i++;j--;
a[i]+=a[j]:
{un(a,i,j);
return a[i];
}
}
main()
{int x[]={2,6,18,10,12},i;
for(i=0;i<5;i++)
if(i==2)
print{("%d
",fun(x,0,3));
}
1. #include<stdio.h>
main()
{char b[]="ABCDEFG";
char *chp=e&b[7];
while(--chp>&b[0])
putchar(*chp);
}
2. #include<stdio.h>
int ast(int x,int y,int *cp,int *dp)
{*cp=x+y;
*dp=x-Y;
}
main()
{int a,b,C,d;
a=4;b=3;
ast(a,b,&c,&d);
printf("%d%d
",c,d);
}
3. #include<stdio.h>
int f1(int x,int y){return x>y? x:y;)
int f2(int x,int y){return x>y? y:x;}
main()
{
int a=4,b=3,c=5,d=2,e,f,g;
e=f2(f1(a,b),f1(C,d));f=f1(f2(a"b),f2(c,d));
g=a+b+c+d-e-f;
printf("%d,%d,%d
",e,f,g);
}
四、4.程序填充题
0. 一个三位整数(100~999),若各位数的立方和等于该数自身,则称其为"水仙花数"(如:153=13+53+33),找出所有的这种数。
#include<stdio.h>
main()
{int n,a,b,c;
for(c=1;c<=9;c++)
for(b=0;b<=9;b++)
for(a=0;______;a++)/*第一空*/
{
n=______;/*第二空*/
if(a*a*a+b*b*b+c*c*c==______)/*第三空*/
printf("%d
",n);
}
}
1. 将一个文本文件ma.dat拷贝到另一个文本文件na.dat中。
#include<stdio.h>
main()
{
FILE*ma,*na;
ma=fopen("ma.dat",______);/*第一空*/
na=fopen("na.dat","w");
while(!feof(ma))fputc(fgete(ma),______)/*第二空*/
felose(na);______;/*第三空*/
}
2. 将10个数输入数组中,求出其中最大数和最小数并输出。
#include<stdio.h>
main()
{
int i,max,min,a[10];
for(i=0;i<10;i++)
seanf("%d",______);/*第一空*/
max=a[0]:
min=a[0];
for(i=1;______;i++)/*第二空*/
if(a[i]>max)
max=a[i];
else if(a[i]<min)
______;/*第三空*/
printf("max=%d,min=%d",max,min);
}
五、5.程序设计题
0. 求出10到500之内能同时被3、7整除的数,并输出;然后求出其和值。
1. 采用递归调用的算法编写一个计算x的n次方的函数(不用写主函数调用)。
