全国2013年10月高等教育自学考试
高级语言程序设计(一)试题
课程代码:00342
一、单项选择题(本大题共15小题,每小题2分,共30分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题纸”的相应代码涂黑。错涂、多涂或未涂均无分。
1.正确的自定义标识符是
A.2xy B.int
C.root%x D.total
2.正确的C语言常数是
A.012 B.'abc"
C.0xfp D.2e1.25
3.下列不是C语言运算符的是
A.< > B.^
C.! D.&=
4.表达式5+6!=0的值是
A.0 B.1
C.6 D.11
5.设float x;-1≤x<3正确的C语言表达式是
A.-1<=x<3 B.-l<=x||x<3
C.x>=-1 & &x<3 D.!(x>=-1)&&(x<3)
6.设int a=3;,值为1的表达式是
A.a%3 B.3-++a
C.(a++)%3 D.a>3?2∶1
7.设int a=0,b=5,c;,执行语句c=(a==b)||++a;后c的值是
A.0 B.1
C.4 D.5
8.设int m=0;,语句while(m!=0)m++;的循环次数是
A.0 B.1
C.2 D.无限
9.定义数组并初始化正确的是
A.int a[]=(2,4,6,8); B.int a[]={2,4,6,8};
C.int a[3]={2,4,6,8}; D.int *a[4]={2,4,6,8};
10.设int a[3][5];,该数组两个下标的取值范围分别是
A.0~3和0~4 B.0~3和3~5
C.0~2和0~4 D.3~5和0~5
11.设typedef float REAL;则REAL是
A.变量名 B.常量名
C.函数名 D.类型名
12.设char s[10];,将字符串输入至数组s的正确语句是
A.s=gets(); B.getchar(s);
C.scanf("%s",s); D.scanf("%s",&s[10]);
13.关于函数叙述正确的是
A.函数必须有形参
B.函数的形参可以是常数
C.函数中只能出现一个return语句
D.函数类型为void时,该函数无返回值
14.设int a[10],*p=a;,与数组元素a[0]等价的是
A.*p B.p
C.&a D.a
15.结构型变量所占内存量应是
A.第一个成员占用的内存量
B.最后一个成员占用的内存量
C.所有成员占用内存量的总和
D.成员中占用内存量最大者所需的容量
二、填空题(本大题共10小题,每小题2分,共20分)
16.设int n;,“n为偶数”的C语言逻辑表达式是______。
17.实现字符串拷贝的系统函数是______。
18.实(浮点)型分为单、双精度两种,其类型保留字分别是______。
19.在C语言中,运算符优先级最低的是______。
20.设int a=3;,执行语句printf("%d",a<<2);后的输出结果是______。
21.设float x=3.1;,执行语句printf("%.lf',3.2+(int)x);后的输出结果是______。
22.设FILE*fp;,若fp指向文件尾部,则feof(fp)的返回值是______。
23.设char*p="abcd";,执行语句printf("%C",*(p+2));后的输出结果是______。
24.设char str[]="book\n";,执行语句printf("%d",sizeof(str));后的输出结果是______。
25.若局部变量的存储类型缺省,其默认类型是______。
三、程序分析题(本大题共4小题,每小题4分,共16分)
阅读下列程序,将输出结果写到“答题纸”上。
26.#include<stdio.h>
int f(inta)
{
static int d=10;/*静态变量*/
d+=a;
return d;
}
void main()
{
printf("fl=%d",f(3));
printf("f2=%d\n",f(5));
}
27.#include<stdio.h>
void main()
{ int i;
for(i=10;i>0;i--)
{
if(i%3!=0)continue;
printf("%2d",i);
}
printf("\n");
}
28.#include<stdio.h>
void main()
{
int i,j,s,a[][3]={{1,2,3},{4,5},{6}};
for(s=0,i=0;i<3;i++)
switch(i)
{
case 0:
case l:
case 2:for(j=0;j<3;j++)s+=a[i][j];break;
}
printf("s=%d\n",s);
}
29.#include<stdio.h>
struct country
{
int no;
char name[20];
}a[]={l,"China",2,"Russia",3,"America"},*p=a;
void main()
{
p++;
printf("%d,%s",(*p).no,(*p).name);
p--;
printf("%d\n,%s",p->no,p->name);
printf("%d,%s\n",a[2].no,a[2].name);
}
四、程序填充题(本大题共3小题,每小题6分,共18分)
请将下列程序横线处缺少的部分补上,使其能正确运行。
30.从键盘输入一系列正(负数作为结束),写入二进制文件data.dat。
#include<stdio.h>
void main()
{
FILE*fp;
float x;
fp=fopen("data.dat",
① );/*第一空*/
while(l)
{
scanf("%f",&x);
if(x<=0.0)
② ;/*第二空*/
fwrite(&x,sizeof(float),l,fp);
}
fclose(
③ );/*第三空*/
}
31.利用选择排序法实现对数组元素的升序排序。
#include<stdio.h>
#define N 10
void main()
{
int i,j,k,temp,a[N];
for(i=0;i<N;i++)scanfi["%d",&a[i]);
for(i=0;i<N-1;i++)
{
for(j=i+l;j<N;j++)
if(
① )/*第一空*/
{ temp=a[i];
② ;/*第二空*/
a[j]=temp;
}
}
for(i=0;i<N;i++)printf("%d",
③ );/*第三空*/
printf("\n");
}
32.利用递归法,按下列公式计算并输出函数fx的值。
#include<stdio.h>
long fx(int n)
{
long s;
if(
① )s=l; /*第一空*/
else s=n*n+fx(n-l);/*递归调用*/
return(
② ); /*第二空*/
}
void main()
{
int m;
scanf("%d",&m);
if(m<l)printf("Input error\n!");
else printf("%d\n",
③ ); /*第三空*/
}
五、程序设计题(本大题共2小题,每小题8分,共16分)
33.从键盘输入x的值,按下列公式计算并输出y的值。
34.(1)写一个函数计算自然数n的阶乘(函数头为long fac(int n));
(2)由键盘输入两个自然数a和b且a≤b,调用上述函数计算并输出的值。
自考试题下载: