全国2008年10月高等教育自学考试
高级语言程序设计(一)试题
课程代码:00342
一、单项选择题(本大题共15小题,每小题2分,共30分)
在每小题列出的四个备选项中只有一个是最符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。
1.在一个C语言程序中()
A.主函数只能有一个B.主函数可以有多个
C.非主函数只能有一个D.主函数和非主函数都可以有多个
2.正确定义无符号整型变量m的语句是()
A.int m;B.unsigned int m;
C.signed int m;D.unsigned signed m;
3.不属于字符型常量的是()
A.″s″B.’8’
C.’A’D.’\n’
4.设int x=2,y=4;,值为非0的表达式是()
A.1/x*y B.1/(x*y)
C.1.0/x/y D.1/x/(double)y
5.设int a=2,b=5;,结果为0的表达式是()
A.a%b B.a&b
C.a=b D.a!=b
6.设int a=0;,错误的语句是()
A.++a;B.a++;
C.a=-a;D.(-a)++;
7.设int a=1,b=2,c=3,d=4,f;,执行语句f=(a!=b)?c++:d++;后f的值是()
A.2 B.3
C.4 D.5
8.设int m=5;,语句while(m==0)printf(″%d″,m-=2);的循环体执行的次数是()
A.0 B.1
C.2 D.无限
9.下列运算符优先级最高的是()
A.+=B.,
C.!D.?:
10.定义二维数组并初始化,正确的是()
A.int a[3][]={{1,2,3},{4,5,6}};B.int a[][3]={{1,2,3},{4,5,6}};
C.int a[3][3]=[{1,2,3},{4,5,6}];D.int a[][]={1,2,3,4,5,6};
11.有关变量的叙述,正确的是()
A.形式参数是全局变量
B.a和A在C语言中是同一个变量
C.函数体内定义的变量为全局变量
D.在所有函数之外定义的变量为全局变量
12.若定义的函数为float*fun(){……},则函数的返回值是()
A.float型数据B.void型数据
C.float型指针D.void型指针
13.设int a[10],*p=a;,数组元素a[4]的正确引用是()
A.*(p+4)B.p+4
C.*p+4 D.a+4
14.合法的用户标识符是()
A.default B.#define
C.a+b D.book
15.使用系统函数sprt()时,应在程序开头写上的编译预处理命令是()
A.#include<stdio.h>B.#include<string.h>
C.#include<math.h>D.#include<stdlib.h>
二、填空题(本大题共10小题,每小题2分,共20分)
请在每小题的空格中填上正确答案。错填、不填均无分。
16.赋值运算符的结合性是。
17.设char ch;,判断ch为数学字符的逻辑表达式是。
18.设typedef float REAL;REAL x=1;,表达式x/2的值是。
19.转义字符’\n’的含义是。
20.设int a=12;,语句printf(″%d\n″,(a/3,a%3,a/10>0));的输出结果是。
21.函数中未指定存储类型的局部变量,其隐含的存储类型是。
22.若全局整型变量未初始化,则默认的初始值是。
23.设int a,*p=&a;,通过指针变量p为a输入值的scanf语句是。
24.设char*s=″abc″;,语句for(;*s!=’\0’;s++)printf(″W″);的输出结果是。
25.设struct student
{
char name[20];
char sex;
}stu;
语句printf(″%d\n″,sizeof(stu));的输出结果是。
三、程序分析题(本大题共4小题,每小题4分,共16分)
阅读下列程序,请将输出结果写到各题右侧的空白处。
26.#include<stdio.h>
void main()
{
int i=11,j;
j=i%3;
switch(j)
{case 1:
case 2:printf(″%d\n″,j);break;
default:printf(″%d\n″,i);
}
}
27.#include<stdio.h>
int fx(int n)
{
int s;
if(n==0)s=0;
else s=n+fx(n-2);
return s;
}
void main()
{
printf(″%d\n″,fx(8));
}
28.#include<stdio.h>
#include<string.h>
void main()
{
char*pa,a[20]=″Beijing2008″;
for(pa=a+7;*pa!=’\0’;pa++)putchar(*pa);
putchar(’\n’);
}
29.#include<stdio.h>
#define N 6
void main()
{
int a[N]={2,5,-6,4,-9,10},i;
for(i=0;i<N;i++)
{
if(a<i><0)continue;
printf(″%3d″,a<i>);
}
printf(″\n″);
}
四、程序填充题(本大题共3小题,每小题6分,共18分)
请将下列程序横线处缺少的部分补上,使其能正确运行。
30.输入100名学生的出生月份,统计并输出每个月份过生日的学生人数。
#include<stdio.h>
#define N 100
void main()
{
int i,month;
int birth[13]={0};/*birth[1]~birth[12]分别保存1~12月过生日的学生数*/
for(i=1;i<=N;i++)
{
scanf(″%d″,);/*第一空*/
if(month>=1&&month<=12)birth[month]++;
}
for(i=1;;i++)/*第二空*/
printf(″%d month\n″,i,birth<i>);/*第三空*/
}
31.输入n(n≥1),计算1+(1+2)+(1+2+3)+…….+(1+2+……+n)的值。
void main()
{
int i,n;
long sum=0;long cal(int);
scanf(″%d″,&n);
for(i=1;i<=n;i++)sum=sum+cal();/*第一空*/
printf(″1+(1+2)+…+(1+2+…+n)=%ld\n″,sum);
}
long cal()/*第二空*/
{
static long s=0;
s=s+m;
;/*第三空*/
}
32.将文件data1.txt的内容复制到文件data2.txt中。
#include<stdio.h>
void main()
{
char ch;
FILE*f1,*f2;
f1=fopen(″data1.txt″,″″);/*第一空*/
f2=fopen(″data2.txt″,″w″);
do
{
=fgetc(f1);/*第二空*/
fputc(ch,);/*第三空*/
}while(!feof(f1));
fclose(f1);fclose(f2);
}
五、程序设计题(本大题共2小题,每小题8分,共16分)
33.输入x的值,按下列公式计算并输出y的值(保留两位小数)。
y=
34.输入10个整数到数组a中并输出,将数组各元素依次向后循环移动一个位置(如下图),输出移动后的数组a。
移动前:a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]
移动后:a[9]a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]