2012年全国高等教育自学考试高级语言程序设计标准预测试卷(5)
2012年全国高等教育自学考试高级语言程序设计标准预测试卷(5):2012年全国高等教育自学考试高级语言程序设计标准预测试卷。本试卷总分100分;共有5类型题目
一、单项选择题,每小题2分,共30分,在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。
1.汇编程序的功能是( )
A.将汇编语言程序转换成目标程序
B.将汇编语言程序转换成高级语言程序
C.将高级语言程序转换为目标程序
D.将汇高级语言程序转换为编语言程序
2.设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.不确定
3.设int a[10],*p=a;
则对数组的正确引用是( )
A.a[p]
B.p[a]
C.*(p+2)
D.p+2
4.若内部变量在离开了定义所在的函数或复合语句后,仍在生存期内。则该变量是 ( )
A.auto变量
B.register变量
C.局部变量
D.static变量
5.下列运算符,优先级最低的是( )
A.&&
B.!
C.->
D.+=
6.对于文件打开方式"rb+"描述正确的是( )
A.可读写文本文件
B.只读文本文件
C.可读写二进制文件
D.只读二进制文件
7.设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
C.1,2,3
8.若x=100;,则表达式x++>100? x+20:x+10的值是( )
A.110
B.120
C.130
D.101
9.若定义了int m,n=0,*p1=&m;,则与m=n等价的语句是( )
A.m=*p1
B.*p1=&*n
C.*p1=*&n
D.*&p1=&*n
10.若有宏定义:#define MOD(x,y)x%y
则执行下面语句后的输出结果是
int a=13,b=96;
printf("%d
",MOD(b,a));( )
A.1
B.2
C.5
D.6
11.设有如下程序段
char str[]="Hello!";
char *ptr;
ptr=str;
执行完以上程序段后*(ptr+6)的值为( )
A."o"
B." "
C."o
D."o"
12.以下程序输出的结果是( )
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
13.执行下面程序段后,变量k的值是( )
A.10
B.30
C.3
D.不确定
14.若有以下语句:
char *language[]={"fortran","basic","C","java"};
char *q;q=language+3;
则语句printf("%c
",*q;的输出是( )
A.q的值
B.字符串"C"
C.&language[3]的值
D.程序错误,无法得到输出
15.以下程序的执行结果是( )
#include<stdio.h>
main()
{printf("%d
",NULL);
}
A.-1
B.0
C.1
D.2
二、填空题,每小题2分,共20分请在每小题的空格中填上正确答案。错填、不填均无分。
16.若有定义:double w [6];,则数组元素下标的上限为______。
17.若有定义语句:int a[]={10,2,20,3,30,4,40},p;p=a;,则执行"p2+=;之后p的值是______。
18.若定义了 int a[9],*p;,将数组元素a[8]的地址赋给指针变量p的赋语句是______。
19.C语言的保留字主要用于语句的构成,所有保留字均由______组成。
20.语句";"是无任何操作的语句,被称为______。
21.______是双目运算符,其运算对象是表达式,其值是右边表达式的值。
22.若要使用系统函数getchar(),必须在程序的开头使用预编译命令______。
23.若要以八进制输出整型变量,则要在输出语句中加上格式输出符______。
24.指针变量的使用主要有两种,一是______;二是引用所指向的变量。
25.写出n小于m的奇数的表达式______。
三、程序分析题,每小题5分,共20分阅读下列程序,将输出结果写到各题右侧的空白处。
26.以下程序运行时输入:12<回车>,执行后输出结果
#include<stdio.h>
main()
{char ch1,ch2;int n1,n2;
ch1=getchar();ch2=getchar();
n1=ch1-"0";n2=n1*10+(ch2-"0");
printf("%d
",n2);
}
27.#include<stdio.h>
void f(int y,int*x)
{y=y+*X; *x=*x+y;}
main()
{int x=2,y=4;
f(y,&,x);
printf("%d%d
",x,y);
}
28.#include<stdio.h>
Char *ss(char*s)
{return s+strlen(s)/2;)
main()
{char *P,*str="abcdefgh";
p=ss(str);printf("%s
",p);
}
29.#include<stdio.h>
int f(int a[],int n)
{if(n>1)return a[0]}+f(&a[1],n-1);
else return a[0];
}
main()
{int aa[3]={1,2,3},s;
s=f(&aa[0],3);printf("%d
",s);
}
四、程序填充题,每空5分,共15分给出下列程序,将横线处缺少的部分补上,使其能正确运行。
30.以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。
#include<stdio.h>
main()
{int i,a[20],sum,count;
sum=count=0:
for(i=0;i<20;i++)scanf("%d",______);/*第一空*/
for(i=0;i<20;i++)
{if(______)/*第二空*/
{count++;
______;}/*第三空*/
}
printf("count=%d,sum=%d
",count,sum);
}
31.SumColumMin()的功能是:求出M行N列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。
#include<stdio.h>
#define M 2
#define N 4
void SumColumMin(______)/*第一空*/
{int i,j,k,s=0;
for(i=0;i<N;i++)
{k=0;
for(j=1;j<M;j++)
if(______)k=j;/*第二空*/
s+=a[k][i];
}
______;/*第三空*/
}
main()
{int x[M][N]={3,2,5,1,4,1,8,3},s;
SumColumMin(x,&s);
printf("%d
",s);
}
32.求f(x[0,10])的累加和,其中f(x)=2x+1。
#include<stdio.h>
int F(int x)
{return______;)/*第一空*/
int SumFun(int n)
{
int x,s=0:
for(x=0;x<n;x++)______;/*第二空*/
return s;
}
main()
{
printf("The sum=%d
",______);/*第三空*/
}
五、程序设计题,每小题7.5分,共15分。
33.输入一个整数n(n<10),如果n=3,则输出
1
222
33333
222
1
以此类推。
34.把文本文件x1.dat复制到文本文件x2.dat中,要求仅复制x1.dat中的非空格字符。
