国家开放大学C语言程序
void xw1(char* fname) { FILE* fout=fopen(fname,"w"); char a[20]; printf(
答案是:吧键盘上输入的若干个字符串保存到由fname参数所指定的文本文件中
int Count(struct IntNode *f) { //f为指向一个单链表的表头指针 int c=0; while(f) {
答案是:统计出以指针表头为f的链表中的结点个数
在C语言中,系统函数fseek()用来移动数据文件中的文件位置指针。 判断题 (2 分) 2分 A.对 B.错
答案是:A.对
对二进制文件进行读和写操作将使用相同的系统函数。 判断题 (2 分) 2分 A.对 B.错
答案是:B.错
每次只能向文本文件中写入一个字符,不能一次写入一个字符串。 判断题 (2 分) 2分 A.对 B.错
答案是:B.错
C语言系统中提供一个用来描述文件属性的类型标识符为FILE。 判断题 (2 分) 2分 A.对 B.错
答案是:A.对
一个磁盘数据文件的文件名由文件主名和扩展名所组成,其中间用圆点分开。 判断题 (2 分) 2分 A.对 B.错
答案是:A.对
在数据文件打开方式字符串中,字符r、w和a具有确定的含义,分别代表读、写和追加方式。 判断题 (2 分) 2分 A.对 B.错
答案是:A.对
在一个磁盘数据文件的文件名中,文件主名和扩展名都是必须的,不可省略。 判断题 (2 分) 2分 A.对 B.错
答案是:B.错
C语言中的标准输入和输出设备文件都属于字符文件。 判断题 (2 分) 2分 A.对 B.错
答案是:A.对
在C语言中,对二进制文件的所有不同打开方式共有6种。 判断题 (2 分) 2分 A.对 B.错
答案是:A.对
与结构成员访问表达式(*fp).score等价的表达式是fp->score。 判断题 (2 分) 2分 A.对 B.错
答案是:A.对
假定要访问一个结构指针p所指对象中的b指针成员所指的对象,则表示方法为p->b。 判断题 (2 分) 2分 A.对 B.错
答案是:B.错
假定要访问一个结构对象x中的由a指针成员所指向的对象,则表示方法为x.a。 判断题 (2 分) 2分 A.对 B.错
答案是:B.错
执行malloc(sizeof(struct BB))函数调用时,得到的动态存储空间能够保存具有struct BB结构类型的一个对象。 判断题 (2 分) 2分 A.对 B.错
答案是:A.对
执行calloc(n,8)函数调用时,将动态分配得到8*n个字节的存储空间。 判断题 (2 分) 2分 A.对 B.错
答案是:A.对
假定一个结构类型的定义为 “struct B{int a[5]; char* b;};”,则该类型的长度为20。 判断题 (2 分) 2分 A.对 B.错
答案是:B.错
假定一个结构类型的定义为 “struct A{int a,b; A* c;};”,则该类型的长度为12。 判断题 (2 分) 2分 A.对 B.错
答案是:A.对
使用一个结构类型时,必须一起使用关键字struct和类型标识符。 判断题 (2 分) 2分 A.对 B.错
答案是:A.对
定义结构类型的变量时,不能够同时进行初始化。 判断题 (2 分) 2分 A.对 B.错
答案是:B.错
在结构类型的定义中,允许出现结构类型不完整的超前定义。 判断题 (2 分) 2分 A.对 B.错
答案是:A.对
在结构类型的定义中,其中的数据成员可以是本身类型的直接对象。 判断题 (2 分) 2分 A.对 B.错
答案是:B.错
在C语言中,为只写操作打开一个文本文件的方式为( )。 单选题 (2 分) 2分 A. "a" B. "r+" C. "r" D. "w"
答案是:D."w"
向一个二进制文件中写入信息的函数fwrite()带有的参数个数为( )。 单选题 (2 分) 2分 A. 1 B. 2 C. 3 D. 4
答案是:D.4
从一个数据文件中读入以换行符结束的一行字符串的系统函数为( )。 单选题 (2 分) 2分 A. gets() B. fgets() C. getc() D. fgetc()
答案是:B.fgets()
C语言中打开一个数据文件的系统函数为( )。 单选题 (2 分) 2分 A. fgetc() B. fputc() C. fclose() D. fopen()
答案是:D.fopen()
表示文件结束符的符号常量为( )。 单选题 (2 分) 2分 A. eof B. Eof C. EOF D. feof
答案是:C.EOF
标准输入设备键盘的文件流标识符是( )。 单选题 (2 分) 2分 A. stdin B. stdout C. stderr D. stdio
答案是:A.stdin
假定一个链表的表头指针为f,结点中包含有data和next域,则向该链表的表头插入一个地址为p的结点时,应执行的操作为( )。 单选题 (2 分) 2分 A. p->next=f B. p->next=f和f=p
答案是:B.p->next=f和f=p
假定一个链表中结点的结构类型为“struct AA{int data, struct AA *next;};”,则next数据成员的类型为( )。 单选题 (2 分) 2分 A. struct AA B. struc
答案是:B.struct AA*
与结构成员访问表达式x.name等价的表达式为( )。 单选题 (2 分) 2分 A. x->name B. &x->name C. (&x)->name D. (*x)->name
答案是:C.(&x)->name
假定要访问一个结构指针变量x中的数据成员a,则表示方法为( )。 单选题 (2 分) 2分 A. a B. x->a C. x(a) D. x{a}
答案是:B.x->a
假定一个结构类型的定义为 “struct D{int a; D* next;};”,则该类型的长度为( )。 单选题 (2 分) 2分 A. 4 B. 8 C. 12 D. 16
答案是:B.8
假定一个结构类型的定义为 “struct A{int a,b; double c;};”,则该类型的长度为( )。 单选题 (2 分) 2分 A. 8 B. 10 C. 12 D. 16
答案是:D.16
在结构类型的定义中,不同数据成员的定义项之间采用的分隔符是( )。 单选题 (2 分) 2分 A. 句点 B. 冒号 C. 分号 D. 逗号
答案是:C.分号
假定有“struct BOOK{char title[40]; float price;} book;”,则正确的语句为( )。 单选题 (2 分) 2分 A. struct BOOK x= &book; B. st
答案是:B.struct BOOK *x=&book;
假定有“struct BOOK{char title[40]; float price;}; struct BOOK book;”,则不正确的语句为( )。 单选题 (2 分) 2分 A. struct BOOK *x=mal
答案是:A.struct BOOK *x=malloc(book);
int LK(double a[], int n) { double s=0; int i,m=0; for(i=0;i
答案是:求出并返回组数a的n个元素中大于等于平均数值的元素个数
int fun(int m, int n) { int c=0; static int b=2; if(m
答案是:一个递归函数过程,求出两个函数m和n的最小公倍数
int WB(int a[], int n, int x) { for(int i=0;i
答案是:从组数an中顺序查找值为x的元素,若查找成功则返回1,否则返回0
int SG(int x) { //x为大于等于2的整数 int i=2; while(i*i<=x) { if(
答案是:判断x是否为一个质数,是则返回1,否则返回0
double SF(double x, int n) { //n为正整数 double p=1,s=1; int i; for(i=1;i<=
答案是:计算出1+x+x2+...+xn的值并返回。
0 int a[8]={3,5,7#include int LA(int *a, int n, int x) { int i,s=0;
答案是:13 20
#include int Count(int a[], int n, int x) { int i,c=0;
答案是:B=4
#include #include void fun(char ss[]); void main( ) {
答案是:9876543210
#include int WF(int x, int y) { x=x+y; y=x+y; retur
答案是:z=31
NULL是一个符号常量,通常作为空指针值,它代表的值为0。 判断题 (2 分) 2分 A.对 B.错
答案是:A.对
若p指向x,则*p与x的值不同。 判断题 (2 分) 2分 A.对 B.错
答案是:B.错
假定x为一个简单变量,则&x表示x的地址。 判断题 (2 分) 2分 A.对 B.错
答案是:A.对
假定一个数据对象为int*类型,则指向该对象的指针类型仍为int*类型。 判断题 (2 分) 2分 A.对 B.错
答案是:B.错
若要把一个整型指针p转换为字符指针,则采用的强制转换表达式为(char*)p。 判断题 (2 分) 2分 A.对 B.错
答案是:A.对
假定a是一个指针数组,则a+i所指对象的地址比a地址大4*i字节。 判断题 (2 分) 2分 A.对 B.错
答案是:A.对
假定p所指对象的值为25,p+1所指对象的值为46,则执行*(p++)运算后,p所指对象的值为46。 判断题 (2 分) 2分 A.对 B.错
答案是:A.对
假定p所指对象的值为25,p+1所指对象的值为46,则*++p的值为25。 判断题 (2 分) 2分 A.对 B.错
答案是:B.错
假定p所指对象的值为25,p+1所指对象的值为46,则*p++的值为46。 判断题 (2 分) 2分 A.对 B.错
答案是:B.错
函数形参变量不属于局部变量。 判断题 (2 分) 2分 A.对 B.错
答案是:B.错
调用系统函数时,要先使用#include命令包含该系统函数的原型语句所在的系统头文件。 判断题 (2 分) 2分 A.对 B.错
答案是:A.对
如果在一个函数体中又出现对自身函数的调用,此种函数调用被称为递归调用。 判断题 (2 分) 2分 A.对 B.错
答案是:A.对
如果一个函数只允许同一程序文件中的函数调用,则不应在该函数定义的开始前加上保留字static。 判断题 (2 分) 2分 A.对 B.错
答案是:B.错
在函数模块之外定义的变量称为全局变量,若没有被初始化则系统隐含对它赋初值0。 判断题 (2 分) 2分 A.对 B.错
答案是:A.对
在C语言中,一个函数由函数头和函数体组成。 判断题 (2 分) 2分 A.对 B.错
答案是:A.对
假定一个函数的二维数组参数说明为char w[][N],与之等价的指针参数说明为( )。 单选题 (2 分) 2分 A. char (*w)[N] B. char *w[N] C. char (*w)N
答案是:A.char (*w)[N]
假定一个函数的数组参数说明为char a[],与之等价的指针参数说明为( )。1B 单选题 (2 分) 2分 A. char a B. char* a C. char& a D. char**a
答案是:B.char* a
假定一个函数的原型语句为“int ff(int* x);”,一个整型数组为a[10],则下面函数调用表达式不正确的是( )。 单选题 (2 分) 2分 A. ff(a) B. ff(a[0]) C. ff(
答案是:B.ff(a[0])
假定一个函数定义为“static int f1(int x,int y){return x+y;}”,该函数名称为( )。 单选题 (2 分) 2分 A. static B. int C. f1 D
答案是:C.f1
在程序的一个文件中定义的函数,若要在另一个文件中调用,则必须在这另一个文件中给出该函数的( )。 单选题 (2 分) 2分 A. 原型语句 B. 参数表 C. 函数名 D. 返回类型
答案是:A.原型语句
已知“int *p=malloc(100);”,要释放p所指向的动态内存,正确的语句为( )。 单选题 (2 分) 2分 A. free(p); B. free p; C. free(*p); D.
答案是:A.free(p);
假定有语句为“int b[10]; int *pb;”,则下面不正确的赋值语句为( )。 单选题 (2 分) 2分 A. pb=b; B. pb=&b[0]; C. pb=b+2; D. pb=b
答案是:D.pb=b[5];
若有语句为“int a[10], x, *pa=a;”,要把数组a中下标为3的元素值赋给x,则不正确的语句为( )。 单选题 (2 分) 2分 A. x=pa[3]; B. x=*(a+3); C. x=a
答案是:D.x=*pa+3;
假定k是一个double类型的变量,则定义变量p的正确语句为( )。 单选题 (2 分) 2分 A. double p=&k; B. int *p=&k; C. double &p=*k; D.
答案是:D.char *p="Thank you!";
假定变量m定义为“int m=7;”,则下面正确的语句为( )。 单选题 (2 分) 2分 A. int p=&m; B. int *p=&m; C. int &p=*m; D. int *p=m
答案是:B.int *p=&m;
用calloc函数创建具有10个整型元素的一维数组的正确语句是( )。 单选题 (2 分) 2分 A. int *p=calloc(10,2); B. int *p=calloc(10); C. int *
答案是:C.int *p=calloc(10,4);
假定a为一个数组名,在下面的表达式中,存在语法错误的是( )。 单选题 (2 分) 2分 A. a[i] B. *a++ C. *a D. *(a+1)
答案是:B.*a++
假定p是一个指向float型数据的指针,则p+1所指数据的地址比p所指数据的地址增加的字节数为( )。 单选题 (2 分) 2分 A. 1 B. 2 C. 4 D. 8
答案是:C.4
在下面的保留字中,不能作为函数的返回值类型的是( )。 单选题 (2 分) 2分 A. void B. int C. enum D. long
答案是:C.enum
在下面的函数声明语句中,存在着语法错误的是( )。 单选题 (2 分) 2分 A. AA(int a, int b) B. AA(int, int) C. AA(int a; int b) D.
答案是:C.AA(int a; int b)
编写一个函数,函数头格式为“double Mean(double a[M][N],int m,int n)”,要求返回二维数组a[m][n]中所有元素的平均值,假定在计算过程中采用变量v存放平均值。
答案是:double Mean (double a [M] [N],int m,int n) { int i,j; double v=0. 0; for (i=0;i
#include ______ void main() { ______ int a[3][4]={{1,2,7,8},{5,6,10,6},{9,12,3,4}}; ______ int m
答案是:12
#include ______ void main() { ______ char a[]="abcdbfbgacd"; ______ int i1=0, i2=0, i=0; __
答案是:2 3 11
0 ______ void main() ______ { #include ______ void main() ______ { ______ int i,s;
答案是:27
#include ______ void main() { ______ ______int n=6,y=1; ______ while(n) y*=n--; ______ prin
答案是:y=720
#include ______ void main() { ______ ______int i,s=0; ______ ______for(i=1;i<=5;i++) s+=i*i;
答案是:s=55
#include void main() { int x=5; switch(2*x-3) {
答案是:11 14
一个二维字符数组a[10][20]能够存储的每个字符串的长度不超过20。 判断题 (1 分) 1分 A.对 B.错
答案是:B.错
一个二维字符数组a[10][20]能够最多存储9个字符串。 判断题 (1 分) 1分 A.对 B.错
答案是:B.错
strcpy函数用于把一个字符串拷贝到另一个字符数组空间中。 判断题 (1 分) 1分 A.对 B.错
答案是:A.对
strcmp函数用于进行两个字符串之间的比较。 判断题 (1 分) 1分 A.对 B.错
答案是:A.对
为了存储一个长度为n的字符串,所使用的字符数组的长度至少为n+1。 判断题 (1 分) 1分 A.对 B.错
答案是:A.对
字符串"a:\\xxk\\数据"的长度为13。 判断题 (1 分) 1分 A.对 B.错
答案是:B.错
空字符串的长度为1。 判断题 (1 分) 1分 A.对 B.错
答案是:B.错
存储字符.a.需要占用1个字节的存储空间。 判断题 (1 分) 1分 A.对 B.错
答案是:A.对
使用“typedef char BB[10][50];”语句定义标识符BB为含有10行50列的二维字符数组类型。 判断题 (1 分) 1分 A.对 B.错
答案是:A.对
存储一个空字符串需要占用0个字节的存储空间。 判断题 (1 分) 1分 A.对 B.错
答案是:B.错
假定二维数组的定义为“double a[M][N];”,则每个数组元素的列下标取值范围在0~N之间。 判断题 (1 分) 1分 A.对 B.错
答案是:B.错
假定二维数组的定义为“double a[M][N];”,则每个数组元素的行下标取值范围在0~M-1之间。 判断题 (1 分) 1分 A.对 B.错
答案是:A.对
假定二维数组的定义为“char a[M][N];”,则该数组所含元素的个数为M+N。 判断题 (1 分) 1分 A.对 B.错
答案是:B.错
假定二维数组的定义为“int a[3][5];”,则该数组所占存储空间的字节数为60。 判断题 (1 分) 1分 A.对 B.错
答案是:A.对
假定一维数组的定义为“char* a[8];”,则该数组所含元素的个数大于8。 判断题 (1 分) 1分 A.对 B.错
答案是:B.错
在程序执行完成任一个函数调用后,将结束整个程序的执行过程,返回到操作系统或C语言集成开发环境界面窗口。 判断题 (1 分) 1分 A.对 B.错
答案是:B.错
在程序中执行到break语句时,将结束所在函数的执行过程,返回到调用该函数的位置。 判断题 (1 分) 1分 A.对 B.错
答案是:B.错
为了结束本层循环类语句或switch语句的执行过程,在语句体中需要使用break语句。 判断题 (1 分) 1分 A.对 B.错
答案是:A.对
在switch语句中,每个case和冒号之间的表达式只能是常量。 判断题 (1 分) 1分 A.对 B.错
答案是:A.对
在执行“typedef int DataType;”语句后,标识符DataType与保留字int具有完全相同的含义和作用。 判断题 (1 分) 1分 A.对 B.错
答案是:A.对
假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为( )。 单选题 (2 分) 2分 A. 0 B. 4 C. 8 D. 6
答案是:A.0
假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[1][1]的值为( )。 单选题 (2 分) 2分 A. 2 B. 4 C. 6 D. 8
答案是:D.8
在下面的二维数组定义中,语法正确的选项是( )。 单选题 (2 分) 2分 A. int a[5][]; B. int a[][5]; C. int a[][3]={{1,3,5},{2}}; D.
答案是:C.int a[][3]={{1,3,5},{2}};
在下面的一维数组定义中,有语法错误的选项是( )。 单选题 (2 分) 2分 A. int a[]={1,2,3}; B. int a[10]={0}; C. int a[]; D. int a[
答案是:C.int a[];
在下面的do循环语句中,其循环体被执行的次数为( )。 int i=0; do i++; while(i*i<10); 单选题 (2 分) 2分 A. 4 B. 3 C. 5 D. 2
答案是:A.4
在下面循环语句中,内层循环体S语句的执行总次数为( )。 for(int i=0; i
答案是:D.n(n+1)/2