全国自考(高级语言程序设计)模拟试卷9
一、1.单项选择题
0. 下列关于C语言字符数组描述正确的是( )
A.字符数组可以存放字符串
B.字符数组的下标是从0开始的
C.字符数组不能输出字符串
D.字符数组可以没有" "
1. 设有数组定义:char array[]="Asia";则数组array[]所占用的空间为( )
A.4个字节
B.5个字节
C.6个字节
D.7个字节
2. 以下是对二维数组的正确说明的是( )
A.int[3][]
B.float a(3,4)
C.double a[1][4]
D.float a(3)(4)
3. 在下列函数的参数传递方式中,可以改变实参值的参数传递方式是( )
A.值传递
B.地址传递
C.返回值传递
D.A、B和C
4. 下列关于函数的递归调用描述不正确的是( )
A.函数的递归调用就是函数对自身的调用
B.向下的递归调用过程被称为是"递归过程"
C.向上携带返回表达式的过程被称为是"回溯过程"
D.递归过程必须解决的问题有三个
5. 常用的数学处理类系统函数所在的头文件是( )
A.math.h
B.ctype.h
C.dos.h
D.stdlib.h
6. 设int a=6;,则执行b=a<<1;语句后b的值是( )
A.3
B.6
C.9
D.12
7. 表达式8&2|6||3的值是( )
A.7
B.5
C.3
D.1
8. 以下程序的输出结果是(已知字母a的ASCⅡ值比字母A的ASCⅡ值大32)( ) main() {int i; for(i="A";i<"I";i++,i++) printf("%c",i+36); }
A.DEGIK
B.egik
C.EGIK
D.degik
9. 以下程序的输出结果是( ) main() {char a[10]={"123456789"),*P; int 1; i=8; p=a+i; printf("%s ",p-3); }
A.5678
B.6789
C.7890
D.不确定
10. 当C的值不为0时,在下列选项中能正确将C的值赋给变量a和b的是( )
A.c=a=b
B.(a=c)||(b=c)
C.(a=c)&&(b=c)
D.a=c=b
11. 以下说法中正确的是( )
A.#define和printf都是C语句
B.#define是C语句,而printf不是
C.printf是C语句,但#define不是
D.#define和printf都不是C语句
12. 若已定义:int a[9],*p=a;并在以后的语句中未改变P的值,不能表示a[1]地址的表达式是( )
A.p+1
B.a+1
C.&a[1]
D.*p[1]
13. 若有以下定义和语句: double r=99,*p=&r; *p=r; 则以下正确的叙述是( )
A.以上两处的*p含义相同,都说明给指针变量p赋值
B.在"double r=99,*p=&r;"中,把r的地址赋值给了p所指的存储单元
C.语句"*p=r;"把变量r的值赋给指针变量p
D.语句"*p=r;"取变量r的值放回r中
14. C语言早期规定建立文件缓冲区采用的形式是( )
A.缓冲文件系统
B.非缓冲文件系统
C.分页文件系统
D.A&B
二、2.填空题
0. 有以下程序
#include<stdio.h>
main()
{char s[]="159",*P;
p=s;
printf("%C",*p++);
printf("%C",*p++);
}
程序运行后的输出结果是______。
1. 以下程序运行时若从键盘输入:10 20 30<回车>,输出结果是______。
#include<stdio.h>
main()
{
int i=0,j=0,k=0;
scanf("%d%*d%d",&i,&j,&k);
printf("%d%d%d
",i,j,k);
}
2. 有如下程序
#include<stdio.h>
int rune(int a,int b)
{return(a+b);)
main()
{int x=2,y=5,z=8,r;
r=rune(rune(x,y),z);
printf("%dkn",r);
}
该程序的输出结果是______。
3. 表示整数X的绝对值大于5时值为"真"的C语言表达式是:______。
4. 用来定义寄存器类型变量的C语言保留字是______。
5. 分别用十进制表示整形常量-0xlf为______。
6. 在Turbo C中语言源程序的扩展名为______。
7. 在函数调用过程中,如果形参是指针变量,则实参必须是______。
8. 判断一个字符是否是英文字母的函数是______。
9. 读字符串函数是______。
三、3.程序分析题
0. 请在该程序段右侧写出其输出结果。
int aa[3][3]={{2},{4},{6}};
main()
{int j,*p=&aa[0][0];
for(j=0;j<2;j++)
{if(j==0)
aa[j][j+1]=*p+1;
else++P;
print(("%d",*p);}
}
1. 请在该程序段右侧写出其输出结果。
main()
{int n[3],j,k,l;
for(j=0;j<3;j++)
n[j]=0;
l=3:
for(j=0;j<l;j++)
for(k=0;k<l;k++)
n[k]=n[j]+1:
print(("%d
",n[1]);
}
2. 请在该程序段右侧写出其输出结果。
fun3(int x)
{static int a=3;
a+=x;
return(a);}
main()
{int k=2,m=1,n;
n=fun3(k);
n=fun3(m);
printf("%d
",n);)
3. 请在该程序段右侧写出其输出结果。
main()
{char *s="121";
int k=0,a=0,b=0;
do{
k++:
if(k%2==0)
{a=a+s[k]-"0";continue;)
b=b+s[k]-"0";
a=a+s[k]-"0";}while(s[k+1]);
printf("k=%d a=%d b=%d
",k,a,b);
}
四、4.程序填充题
0. 以下程序的功能是:从键盘输入若干个学生的成绩,统计出最高成绩和最低成绩,当输入负数时结束输入。
#include<stdio.h>
main()
{float x,amax,amin;
scanf("%f",&x);
amax=x:
amin=x;
while( )/*第一空*/
{if(______)amax=x;/*第二空*/
if(x<amin)______;/*第三空*/
scanf("%f",&x);
}
printf("amax=%3.2f,amin=%3.2f
",amax,amin);
}
1. 下面程序通过函数average()计算数组中各元素的平均值。
float average(______,int n)/*第一空*/
{int i;
float avg=0.0;
for(i=0;i<n;i++)
avg=avg+______;/*第二空*/
avg=______;/*第三空*/
return avg;
}
main()
{int i,a[5]={2,4,6,8,10);
float mean;
mean=average(a,5);
printf("%f
",mean);
}
2. 下面程序用来输出两个字符串中较短的长度。
main()
{char p1[20],p2[20];
int i1,i2,num;
gets(p1);
gets(p2);
i1=______;/*第一空*/
i2=______;/*第二空*/
num=(______)?i1:i2;/*第三空*/
printf("%d
",nurn);
}
五、5.程序设计题
0. 输入一个无符号整数,然后按用户输入的代号,分别以十进制(代号D)、八进制(代号O)输出和十六进制(代号X)。
1. 根据Fibonacci数列公式:
