国家开放大学2023年秋季学期期末统一考试 C语言程序设计试题及答案
试卷代号:11253
2024年1月
注意事项:
1. 将你的学号、姓名及考点名称填写在试题和答题纸的规定栏内。考试结束后,把试题和答题纸放在桌上。试题和答题纸均不得带出考场。待监考人员收完试题和答题纸后方可离开考场。
2. 仔细阅读题目的说明,并按题目要求答题。所有答案必须写在答题纸的指定位置上,写在试题上的答案无效。
3. 用蓝、黑圆珠笔或钢笔(含签字笔)答题,使用铅笔答题无效。
附件下载:
20240111253.pdf
一、单项选择题(本题共14小题,每小题3分,共42分)
1. C语言中使用的字符常量,其起止标记符是()。
A. 单引号
B. 双引号
C. 中括号
D. 尖括号
答案:A
2. 在C语言程序中,单行或行尾注释语句使用的标记符为()。
A. */
B. /*
C. //
D. **
答案:C
3. 程序运行中需要从键盘上输入多于一个数据时,若不特别规定分隔符,则输入的各数据之间所使用的分隔符为()。
A. 空格或逗号
B. 逗号或回车
C. 逗号或分号
D. 空格或回车
答案:D
4. int类型的长度为()字节。
A. 1
B. 2
C. 4
D. 8
答案:C
5. 运算符优先级最高的是()。
A. ()
B. =
C. +
D. <
答案:A
6. x<=10 的相反表达式为()。
A. x>-10
B. x>10
C. x !=10
D. x>0
答案:B
7. 在循环语句 "for (i=n-1;i>=1;i--)S;"中,循环体S被执行的次数为()。
A. 1
B. n-1
C. n
D. n+1
答案:B
8. 假定一维数组的定义为"char*a[8];",则该数组所占用的存储空间的字节数为()。
A. 8
B. 16
C. 64
D. 32
答案:D
9. 对于一个长度为 n 的字符串,保存它至少需要占用的存储字节数为()。
A. n
B. n-1
C. n+1
D. n+2
答案:C
10. 假定变量 m 定义为 "int m=7 ;",则下面定义语句格式正确的是()。
A. int p=&m;
B. int * p=&m;
C. int & p=*m;
D. int * p=m;
答案:B
11. 已知"int a[10], x, * pa=a ;",若要把数组a[3]元素的值赋给x,则不正确的语句为()。
A. x=pa[3];
B. x=*(a+3);
C. x=a[3];
D. x=* pa+3;
答案:D
12. 若用数组名作为函数调用的实参,传递给形参的是()。
A. 数组的首地址
B. 数组中第一个元素的值
C. 数组中全部元素的值
D. 数组元素的个数
答案:A
13. 假定要访问一个结构指针变量x中的数据成员a,则表示方法为()。
A. x.a
B. x->a
C. x(a)
D. x a
答案:B
14. 在C语言中,打开一个数据文件的系统函数为()。
A. fopen()
B. fclose()
C. fread()
D. fwrite()
答案:A
二、判断题(本题共15小题,每小题2分,共30分)
15. 在C语言字符集中,包含有全部26个英文大写字母和对应的小写字母。()
答案:√
16. 一个C语言程序只能够包含一个用户头文件。()
答案:×
17. 定点数既有双精度表示,又有单精度表示。()
答案:√
18. 表达式(float)25/4的值为6。()
答案:×
19. 关系表达式 (x !=0) 的等价表达式为(!x)。()
答案:×
20. while循环是先执行循环体,然后进行循环条件判断。()
答案:×
21. continue只能使用在任一种循环语句的循环体中。()
答案:√
22. 在二维数组的定义语句中,可以给数组中每个元素赋初值。()
答案:√
23. 在C语言中,在定义一个字符数组时,不能利用一个字符串进行初始化。()
答案:×
24. 在定义指针变量的语句"int*p,pp;"中,p和pp具有不同的数据类型。()
答案:√
25. 在一维数组的定义语句中,数组名前为元素类型关键字。()
答案:√
26. 在一个函数定义中,函数体是一条简单语句。()
答案:×
27. 在结构类型的定义中,结构类型名在关键字struct和定义体之间。()
答案:√
28. 访问结构成员访问运算符只有一种方式,即使用点运算符。()
答案:×
29. 在一个磁盘数据文件的文件名中,文件主名是必须的,扩展名可任选使用。()
答案:√
三、程序填空题(本题共4小题,每小题5分,共20分)
30. 执行下面程序的输出结果为()。
#include<stdio. h>
void main(){
int x=5,y=8;
if(x>=y)printf("%d %d\n",x,y);
else printf("%d %d\n",y,x);
}
答案:8 5
31. 执行下面程序的输出结果为()。
#include<stdio.h>
void main(){
int i,s1=0,s2=0;
for(i=1;i<10;i++)
if(i%2)s1+=i;
else s2+=i;
printf("%d %d\n",s1,s2);
}
答案:25 20
32. 执行下面程序的输出结果为()。
#include<stdio.h>
void main(){
int a[8]={10,8,16,15,9,21,7,16};
int i,x=a[0];
for(i=1;i<8;i++)
if(a[i]<x)x=a[i];
printf("x=%d\n",x);
}
答案:x=7
33. 执行下面程序的输出结果为()。
#include<stdio. h>
void main(){
int a[8]={3,8,6,5,9,2,8,5};
int i,s=0;
for(i=0;i<8;i++)
if(a[i]>5)s+=a[i];
printf("s=%d\n",s);
}
答案:s=31
四、编程题(本题共2小题,每小题4分,共8分)
34. 补充完整下面的函数定义,该函数要求返回满足不等式 $$1+2^2+3^2+\cdots+n^2<=x$$ 的最大n的值。
int FF(int x)
{
int n=1,s=1;//使用n作为计数变量,使用s作为累加求和的变量
//在下面一行写出合适的while循环语句
return n-1;
}
答案:while(s<=x) {n++; s+=n*n;}
35. 按照"int FF(int a[],int n)"的函数声明,编写出递归函数的定义,求出数组a中所有n个元素之积并返回。
答案:
int FF( int a[],int n)
{
if(n==1)
return a[0];
else
return a[n-1]*FF(a,n-1);
}
2026-06-11
浏览量: 6