试卷代号:1253
国家开放大学2 0 2 0年春季学期期末统一考试
C语言程序设计 试题
2020年7月
一、单项选择题(把合适的选项编号填写在括号内。每小题3分,共42分)
1.在C语言中,一条简单语句的结束符是( )。
A.逗号 B.冒号
C.分号 D.空格
2.一个程序文件开始使用的每条预处理命令,其首字符必须是( )。
A.@ B.#
C.$ D.%
3.用于从键盘上为变量输入值的标准输入函数是( )。
A.printf( ) B.print( )
C.scanf( ) D.output( )
4.float类型的长度为( )。
B.2 A.1
D.8 C.4
5.运算符优先级最高的是( )。
A.&& B.口
C.++ D./
6.设x和y均为逻辑值,则x&&y为真的条件是( )。
A.它们均为真 B.其中一个为真
C.它们均为假 D.其中一个为假
7.在循环语句“for(i一1;i<10;i+一2)s;”中,循环体s被执行的次数为( )。
B.6
A.10
D.5
C.4
8.假定有一个定义语句为“int a[10]一{3,4,2,8,6);”,则元素a[3]的值为( )。
B.2
A.4
D.6
C.8
9.对于一维字符数组a[N],用来存储一个字符串的长度至多为( )。
A.N一2 B.N
C,N+1 D.N-1
10. -个指针类型的简单变量占用内存中的字节数为( )。
B.4
A.2
D.16
C.8
11.已知“int b[lo];int *pb;”,则下面不正确的赋值语句为( )。
A.pb=b; B.pb一&b[o]5
C.pb=b+2; D.pb=b[5];
12.假定一个函数原型语句为“int fl(int a[],int n);”,与数组参数等价的表示为(
A.int**a B.my a
C.int&a D.int*a
13.与结构成员访问表达式p->name等价的表达式为( )。
B.(*p).name A.p.name
D.*(p->name) C.*p.name
14.在C语言中,关闭一个数据文件的系统函数为( )。
A.fclose() B.fopen()
C.fread() D.fwrite()
二、是非判断题(根据叙述正确与否在其后面的括号内打对号“√”或叉号“×”。每小题2分,共30分)
15.在C语言程序中,有两种使用注释语句的方法。( )
16.常数3.26是双精度浮点数。( )
17.表达式(int)14.6%5的值为4。( )
18.关系表达式(x!一O)的等价表达式为(x)。( )
19. while循环是先执行循环体,然后进行循环条件判断。( )
20.在一维数组的定义语句中,数组名后带有一对中括号。( )
21.字符串不允许为空,至少需要包含一个字符。( )
22.有一条语句为“char s2[4]=”abcd“;”,s2数组长度的定义是合适的。( )
23.已知“int a[10],*p-a;”,则进行p++运算是允许的。( )
24.函数定义格式中的参数表被称为实参表。( )
25.在C语言程序中,对于递归函数和非递归函数,其函数头部无区别标志。( )
26.在结构类型的定义中,其中的数据成员可以是本身类型的直接对象。( )
27.在一个链表的结点结构中,必然包含有一个指向自身结点类型的指针域。( )
28.在一个磁盘数据文件的文件名中,文件主名和扩展名都是必须的,不可省略。( )
29.对二进制文件进行读和写操作将使用同一个系统函数。( )
三、程序填空题(分析程序后把合适的内容填写在括号内。每小题5分,共20分)
30.执行下面程序的输出结果为( )。
#include<stdio. h>
void main(){
int x=5,y=0;
switch(2* x+3){
case 4:y+=x; break;
case 7:y+=2* x+l; break;
case 10:y+=3*x;break;
default: y+=x-l;
)
printf("y= %dn" ,y);
、
31.执行下面程序的输出结果为( )。
#include<stdio. h>
void main(){
int x=12,s=0;
do{s+一x;x一一3;)while(x>0);
printf("s= ~6dn" ,s);
)
32.执行下面程序的输出结果为( )。
#include<stdio. h>
# define N 8
void main()(
int a[N]= {3,5,8,10,15 ,20,32,66};
int i,x;
for(i=0; i<N/9, i++){
x= a[i];a[i] =a[N-1-i];a[N-I-i]=x;
)
printf(“%d\n”,a[1]+a[3]);
)
33.执行下面程序的输出结果为( )。
#include<stdio. h>
void main(){
int a[3][3]一{13,18,16),{15,19,12}, {8,15 ,22});
int i,j,x=a[0l[0];
for(i=0;i<3;i++)
for(j—O;j<3;j++)
if(a[i][j]<x)x—a[i][j];
printf(“x=o/dn",x);
)
四、编程题(按题目要求编写程序或函数。每小题4分,共8分)
34.补充完整下面的函数定义,要求返回二维数组a[m][n]中所有元素的平均值。假定在计算过程中采用变量s存放累加值,采用i和j作为扫描数组的循环变量。
double Mean(double a[][N],int m,int n)
{
int i,j;
double s=0.O;
//在下面添上合适的for双重循环语句
35.补充完整下面的函数定义,利用for循环计算1+21+22+…+2“的值,最后返回计算结果。假定计数变量用i表示,每次累乘2的变量用p表示,每次累加一个数据项值的变量用sum表示。
int FF(int n)
(
int i,p=l,sum一1;
//在下面一行的后面补上for循环语句的语句体
for(i=l; i<-n; i++)________________________________________
return sum;
}