2012年全国高等教育自学考试高级语言程序设计标准预测试卷(3)
2012年全国高等教育自学考试高级语言程序设计标准预测试卷(3):2012年全国高等教育自学考试高级语言程序设计标准预测试卷。本试卷总分100分;共有5类型题目
一、单项选择题,每小题2分,共30分,在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。
1.下列关于C程序的描述不正确的是( )
A.C程序是由C语句组成的语句序列
B.C程序由若干个函数构成
C.主函数可以调用其他任何函数
D.C程序的执行可以从任何函数开始
2.以下符合C语言语法的实型常量是( )
A.1.2E0.5
B.3.14.159E
C.5E-3
D.E15
3.设整型变量a的值是6,执行下列语句后a的值是( )
switch(a%2)
{
case 0:a-=2;
case 1:a+=1;
default:a=6;
}
A.4
B.5
C.6
D.7
4.设有定义"char a=2,b=5;"求表达式"~a^b<<2"的值(假定现有计算机字长为16) ( )
A.-32
B.32
C.-23
D.23
5.
有以下程序段( )
int n,t=1,s=0;
scanf("%d",&n);
do{s=s+t;t=t-2;}while(t!=n);
为使此程序不陷入死循环,从键盘输入的数据应该是
A.任意正奇数
B.任意负偶数
C.任意正偶数
D.任意负奇数
6.有以下程序段( )
main()
{int x=0,y=5,z=3;
while(z-->0&&++x<5)y=y-1;
printf("%d,%d,%d
",x,y,z);
程序执行后的输出结果是
A.3,2,0
B.3,2,-1
C.4,3,-1
D.5,-2,-5
7.设变量已正确定义,则以下能正确计算f=n!的程序段是( )
A.f=0:
for(j=1;j<=n;j++)f*=j;
B.f=1;
for(j=1;j<n;j++)f*=j;
C.f=1;
for(j=n;j>1;j++)f*=j;
D.f=1
for(j=n;j>-2;j--)f*=j;
8.有以下程序( )
main()
{int i,n=0;
for(i=2;i<5;i++)
{do
{if(i%3)continue;
n++:
}while(!i);
n++:
}
printf("n=%d
",n);
}
程序执行后的输出结果是
A.n=2
B.n=3
C.n=4
D.n=5
9.有以下程序( )
#include<stdio.h>
char fun(char X,char y)
{
if(x)return Y;
}
main()
{int a="9",b="8",c="7";
printf("%c
",fun(fun(a,b),fun(b,c))):
}
程序的执行结果是
A.7
B.8
C.9
D.函数调用出错
10.有以下程序( )
#include<stdio.h>
int a=2;
int f(int *A)
{return(*A)++;}
main()
{int s=0;
{int a=5;
s+=f(&a):
}
s+=f(&a);
printf("%d
",s);
}
执行后输出结果是
A.10
B.9
C.7
D.8
11.若x是整型变量,pb是基本类型为整型的指针变量,则正确的赋值表达式为( )
A.pb=x
B.pb=&x
C.*pb=&x
D.*pb=*x
12.设有数组定义:char array[]="china";,则数组array所占用的空间为( )
A.4个宁节
B.5个字节
C.6个字节
D.7个字节
13.如果打开文件时,选用的文件操作方式是"wb+"则下列说法中正确的是( )
A.要打开的文件必须存在
B.打开文件后只能渎数据
C.文件打开后删除原内容再写
D.打开文件后只能写数据
14.设有int a[]={10,11,12},*p=&a[0];,则执行完*p++;*p+=1;后a[0],a[1],a[2]的值依次是( )
A.10,11,12
B.11,12,12
C.10,12,12
D.11,11,12
15.有以下程序( )
main()
{int i,s=0;
for(i=1;i<10;i+=2)s+=i+1;
printf("%d
",s);
}
程序执行后的输出结果是
A.自然数1~9的累加和
B.自然数1~10的累加和
C.自然数1~9中的奇数之和
D.自然数1~10中的偶数之和
二、填空题,每小题2分,共20分请在每小题的空格中填上正确答案。错填、不填均无分。
16.一个C程序-般应由多个函数组成,但也可以由一个函数组成。这个函数是______。
17.C语言中整型常量的书写形式包括:八进制,十进制和______。
18.C语言标识符的第一个字符只能字母或______
19.文件定位函数包含在头文件______中。
20.与标准错误输出设备相对应的文件型指针是______。
21.将大写字母转换为小写字母的函数是______。
22.外部函数的存储类型符是______。
23.下的findrnax函数返M数组s中最大元素的下标。数组中元素的个数由t传入。
findmax(int s[],int t)
{int k,p;
for(p=0,k=0;p<t;p++)
if(s[p]>s[k])______;
return k:
}
24.语句printf("are"hi"y\bou
");输出的结果是______。
25.设a、b、c为整型数,且a=2、b=3、c=4;则执行完下列语句后a的值是______。
a*=16+(b++)-(++c);
三、程序分析题,每小题5分,共20分阅读下列程序,将输出结果写到各题右侧的空白处。
26.#inclucde<stdio.h>
void prly(int *x)
{prinlf("%d
",++*x);}
main()
{int a=25;
prty(&a):
printf("%d
",a):
}
27.#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);
}
28.#include<stdio.h>
#include%<string.h>
main()
{char p1[10]="abc",p2[10]="ABC",str[50]="xyz":
strcpy(str+2,strcat(p1,p2)):
printf("%s
",str);
}
29.#include<stdio.h>
#include<string.h>
main()
{int y=9;
for(;y>0;y--)
{if(y%03==0)
{printf("%d",--y);continue;}
printf("%d",--y);
}
}
四、程序填充题,每空5分,共15分给出下列程序,将横线处缺少的部分补上,使其能正确运行。
30.下面程序由终端键盘输入一个文件名。然后把从终端键盘输入的字符依次存放到该文件中,用#作为结束输入的标志。
#include<stdio.h>
#include<stdlib.h>
main()
{FILE*fp;
char ch,fname[10];
printf("Please input the file name.
");
gets(fname);
if((fp=______)==NULL)/*第一空*/
{printf("()pen it error
");______;}/*第二空*/
else(printf("Enter the content
");
while((ch=getchar())!="#")
______;/*第三空*/
}
fclose(fp);
}
31.下面rotate函数的功能是:将n行n列的矩阵A转置为A。
#define N 4
void rotate(int a[][N])
{int i,j,t;
for(i=0;i<N;I++)
for(j=0;______;j++)/*第一空*/
{t=a[i][j];
______;/*第二空*/
a[j][i]=______;/*第三空*/
}
}
32.输入2个整数,输出它们的最小公倍数和最大公约数。
#include<stdio.h>
void main()
{int m,n,gbs,gys;
scanf("%d,9/6d",m,n);
gbs=m;
while(______)/*第一空*/
gbs=______;/*第二空*/
gys=______;/*第三空*/
printf("%d %d
",gbs,gys);
}
五、程序设计题,每小题7.5分,共20分。
33.输入一个无符号整数,然后按用户输入的代号,分别以十进制(代号D)、八进制(代号O)输出和十六进制(代号X)。
34.
