2012年全国高等教育自学考试高级语言程序设计标准预测试卷(9)
2012年全国高等教育自学考试高级语言程序设计标准预测试卷(9):2012年全国高等教育自学考试高级语言程序设计标准预测试卷。试卷总分100分;共有5类型题目
一、单项选择题,每小题2分,共30分,在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。
1.下列关于C语言字符数组描述正确的是( )
A.字符数组可以存放字符串
B.字符数组的下标是从0开始的
C.字符数组不能输出字符串
D.字符数组可以没有" "
2.设有数组定义:char array[]="Asia";则数组array[]所占用的空间为( )
A.4个字节
B.5个字节
C.6个字节
D.7个字节
3.以下是对二维数组的正确说明的是( )
A.int [3][]
B.float a(3,4)
C.double a[1][4]
D.float a(3)(4)
4.在下列函数的参数传递方式中,可以改变实参值的参数传递方式是( )
A.值传递
B.地址传递
C.返回值传递
D.A、B和C
5.下列关于函数的递归调用描述不正确的是( )
A.函数的递归调用就是函数对自身的调用
B.向下的递归调用过程被称为是"递归过程"
C.向上携带返回表达式的过程被称为是"回溯过程"
D.递归过程必须解决的问题有三个
6.常用的数学处理类系统函数所在的头文件是( )
A.math.h
B.ctype.h
C.dos.h
D.stdlib.h
7.
设int a=6;,则执行b=a<<1;语句后b的值是( )
A.3
B.6
C.9
D.12
8.表达式8&2|6||3的值是( )
A.7
B.5
C.3
D.1
9.以下程序的输出结果是(已知字母a的ASCⅡ值比字母A的ASCⅡ值大32)( )
main()
{int i;
for(i="A";i<"I";i++,i++)
print f("%c",i+36);
}
A.DEGIK
B.egik
C.EGIK
D.degik
10.以下程序的输出结果是( )
main()
{char a[10]={"123456789"),*P;
int 1;
i=8;
p=a+i;
print f("%s
",p-3);
}
A.5678
B.6789
C.7890
D.不确定
11.当C的值不为0时,在下列选项中能正确将C的值赋给变量a和b的是( )
A.c=a=b
B.(a=c)||(b=c)
C.(a=c)&&(b=c)
D.a=c=b
12.以下说法中正确的是( )
A.#define和print f都是C语句
B.#define是C语句,而print f不是
C.print f是C语句,但#define不是
D.#define和print f都不是C语句
13.若已定义:int a[9],*p=a;并在以后的语句中未改变P的值,不能表示a[1]地址的表达式是( )
A.p+1
B.a+1
C.&a[1]
D.*p[1]
14.若有以下定义和语句:
doubler=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中
15.C语言早期规定建立文件缓冲区采用的形式是( )
A.缓冲文件系统
B.非缓冲文件系统
C.分页文件系统
D.A&B
二、填空题,每小题2分,共20分请在每小题的空格中填上正确答案。错填、不填均无分。
16.可以将被调函数中获得的值返回主调函数的语句是______。
17.设int x=2,y=1;则表达式x---y的值是______。
18.外部静态变量的作用域是______。
19.函数调用时,若实参为一个确定的值,则函数参数的传递方式是______。
20.设int a[2][3]={2,4,6,8,10,12);,则数组元素a[1][0]的值是______。
21.设int a,b,c;,则执行a=(b=3,c=4,a=5,b=8);之后变量a的值是______。
22.以下程序的输出结果是______。
#include<stdio.h>
main()
{int a,b,d=241;
a=d/100%9;/*"/"和"%"的优先级相同,先进行"/运算"*/
b=(-1)&&(-1;/*b所获得的是逻辑值。*/
print f("%d,%d
",a,b);
}
23.以下程序的输出结果是______。
#include<stdio.h>
main()
{int i;
for(i=1;i<=5;i++)(if(i%2)print f("*");
else continue;
print f("#");
}
print f("$
");
}
24.以下由for语句构成的循环执行了______次。
#itielude<stdio.h>
#define N 2
#deftne M N+1
#define NUM(M+1)*N/2
main()
{int i,n=0;
for(i=1;i<=NUM;i++)
{n++;print f("%d",n);}
print f("
");}
25.表达式"sizeof(double)"的值的类型是______。
三、程序分析题,每小题5分,共20分阅读下列程序,将输出结果写到各题右侧的空白处。
26.#include
long fun(int n)
{long s;
if(n<=2)s=2;
else s=n+fun(n-1);
print f("%0d ",s);
return s;
}
main()
{
fun(5);
print f("
");
}
27.#include<stdio.h>
main()
{
int a[3][2]={{1,2},{3,4},{5,6}),i,j,s=0;
for(i=1;i<3;i++)
for(j=0;j<2;j++)
s+=a[i][j];
print f("%d
",s);
}
28.#include<stdio.h>
main()
{
int i;
for(i=0;i<3;i++)
switch(i)
{
case 0:print f("%d",i);
case 2:print f("%d",i);
default:print f("%d",i);
}
print f("
");
}
29.#include<stdio.h>
main()
{int a,b;
for(a=1,b=1;a<=100;a++)
{if(b>=20)break;
if(b%3==1)(b+=3;
continue;
}
b-=5;
}
print f("%d
",a);
}
四、程序填充题,每空5分,共15分给出下列程序,将横线处缺少的部分补上,使其能正确运行。
30.下面程序段的功能是将形参x的值转换成二进制数,所得二进制数的每一位数放在一维数组中返回,二进制数的最低位放在下标为0的元素中,其他以此类推。
#include
main(int x,int b[])
{int k=0,r,i;
scanf("%d",x);
do .
{r=x%2;
b[______]=r;/*第一空*/
x/=2;
}while(______);/*第二空*/
for(______);i>=0;i--)/*第三空*/
print f("%d",b[i]);
}
31.下面程序是将字符串P中的所有字符复制到字符串b中,要求每复制三个字符后插入一个空格。
#include<stdio.h>
void cp(char *P,char *b)
{int i,k=0;
while(*p)
{i=0;
while(______)/*第一空*/
{b[k]=*p;
k++;p++;i++;
}
if(*p)
{______;/*第二空*/
}
}
______;/*第三空*/
}
main()
{char a[20],b[20];
gets(a);
cp(a,b);
puts(b);
print f("
");
}
32.下列给定程序中,函数fun()的功能是:读人一个字符串(长度<20),将该字符串中的所有字符按ASCⅡ码降序排序后输出。
#include<stdio.h>
void fun(char t[])
{
char c;
int i,j;
for(i=0;______;i++)/*第一空*/
for(j=i+1;j<=strlen(t);j++)
if(______)/*第二空*/
{
c=t[j];
t[j]=t[i];
t[i]=c;
}
}
main()
{
char s[81];
print f("Please enter a char acter string:
");
gets(s);
print f("
Before sorting:
%s",s);
______;/*第三空*/
print f("
After sorting decreasingly:
%s
",s);
}
五、程序设计题,每小题7.5分,共15分。
33.求出10到500之内能同时被3、7整除的数,并输出;然后求出其和值。
34.采用递归调用的算法编写一个计算x的n次方的函数(不用写主函数调用)。
