A. C程序必须由一个或一个以上的函数组成 B. 函数调用可以作为一个独立的语句存在
C. 若函数有返回值,必须通过return语句返回 D. 函数形参的值也可以传回给对应的实参
77.设函数fun( )的定义形式为void fun(char ch,float x) {?}则以下对函数 fun( )的调用语句中,正确的是( )。 A. fun(“abc”, 3.0); B. t=fun('D', 16.5); C. fun('65', 2.8); D. fun(65, 32.0);
提示:本题B和D都是正确的 78.以下函数正确的是( )。 A. void fun(){return(1);} B. int fun(){return;}
C. char fun(){return(1.0);} D. int fun(){return(1);} 79.已有定义:char a[]=”xyz”,b[]={‘x’, ‘y’, ’z’};以下叙述正确的是( )
A. 数组a和b的长度相同 B. 数组a的长度小于数组b的长度 C. 数组a的长度大于数组b的长度 D. 上述说法都不对
提示:数组b没有字符串结束标志,但测试结果b的长度为7,盖因其无结束标志也。
80.以下程序的运行结果是( ) void main() {
char a[7]=”a0\\0a0\\0”; int i,j;
i=sizeof(a); j=strlen(a);
printf(“%d %d\\n”,i,j); }
A. 2 2 B. 7 6 C. 7 2 D. 6 2
提示:数组声明后系统即按括号中的数据开辟空间
81.以下语句或语句组中,能正确进行字符串赋值的是( )。 A. char *p; *p=”right”; B.char s[10] ; s=”right!”; C. char s[10]; *s=”right!”; D.char *p=”right!”; 82.以下结构体类型说明和变量定义中正确的是()。 A. typeof struct B.typeof REC;
{ {int n;char c;}; Int n;char c; REC t1,t2; }REC;
REC t1,t2;
C.typeof struct REC; D.struct
{int n=0;char=’A’;}t1,t2; {int n; char c;}REC t1,t2;
83.有以下程序段: struct st
{int x;int *y;}*pt;
int a[]={1,2},b[]={3,4}; struct st c[2]={10,a,20,b}; pt=c;
以下选项中表达式的值为11的是()。
A.*pt->y B.pt->x C.++pt->x D.(pt++)->x 84.设有以下定义 union data
{int d1;float d2;}demo; 则下面叙述中错误的是()
A. 变量demo与成员d2据所占的内在字节数相同 B. 变量demo中各成员的地址相同 C. 变量demo和成员的地址相同
D. 若demo.d1给赋99后,demo.d2中的值是99.0 提示:d1和d2类型不同。
86.关于文件的打开方式,下列说法正确的是()。 A. 以“r+”方式打开的文件只能用于读
B. 不能试图以”W”方式打开一个在存在的文件
C. 若以”a”方式打开一个在存在的文件,则会新建一个文件 D. 以“W”或”A”的方式打开文件时,可以对该文件进行定操作
87.要在C盘MyDir目录下新建一个MyFile.txt文件用于写,正确的C语句是()。
A. FILE *fp=fopen(“C:\\MyDir\\MyFile.txt”,”w”); B. FILE *fp;fp=fopen(“C:\\MyDir\\MyFile.txt”,”w”); C. FILE *fp;fp=fopen(“C:\\MyDir\\MyFile.txt”,”r”); D. FILE *fp=fopen(“C:\\MyDir\\MyFile.txt”,”r”); 88.C语言中,下列说法不正确的是()。
A. 顺序读写中,读多少个字节,文件读写位置指针相应地也向后移动多少个字节
B. 要实现随机读写,必须借助文件定位函数,把文件读写位置指针定位到指定的位置,再进行读写
C. fputc()函数可以从指定的文件读入一个字符,fgetc()函数可以 把一个字符写到指定的文件中
D. 格外化写函数fprintf()中格式化的规定与printf()函数相同,所不同的只是fprintf()函数是向文件中输出,而printf()是向屏幕中输出 ④ 下列可以将fp所指文件中的内容全部读出的是()
A. ch=fgetc(fp); B. while(!feof(fp)) while(ch=EOF) ch=fgetc(fp); ch=fgetc(fp);
C.while(ch!=EOF) ch=fgetc(fp); D. while(feof(fp)) ch=fgetc(fp); 89.设有char st[3][20]={“China”,”Korea”,”England”};下列语句中,运行结果与其他3项不同的是()。
A.fprintf(fp,”%s”,st[2]); B. fputs(“England”,fp);
C. p=st[2];
While(*p!=’\\n’)fputc(*p++,fp); D. fwrite(st[2],1,7,fp); 提示:C使用字符’\\n’控制循环,造成文件后面有乱字符,故也
90.若fp是指向某文件的指针,且已读到此文件的末尾,则库函数feof(fp)的返回值是()。
A. EOF B. 0 C. 非零值 D. NULL
三、判断题
1. C语言中规定函数的返回的类型在有调用该函数时系统临时决定。( × ) 2. 数组的大小是可变的,但所有数组元素的类型必须相同。( × )
3. for循环体语句中,可以包含多条语句,但要用花括号括起来。(√ ) 4. C语言中不能使用do-while语句构成的循环。( × )
5. 使用fseek函数可以改变文件的位置指针的当前位置。(√)
6. 一个程序应包括两个方面的内容:数据的描述和操作步骤。(√ ) 7. 凡是C源程序中行首以\标识的控制行都是预处理命令。( √ ) 8. C语言的编译系统对宏命令的处理在程序运行时进行的。( × ) 9. 联合体类型在任何给定时刻所有成员一直驻留在结构中。(× ) 10. 数组的大小是固定的,所有数组元素的类型必须相同。( √ ) 11. for循环只能用次数已经确定的情况。( × )
12. 检测fp文件流的文件位置指针在文件头的条件是ftell(fp)==0。( √ )
13. C语言中规定函数的返回值的类型是由调用该函数时的主调用函数类型所决定。(× )
15. C语言的编译系统对宏命令的处理是在对源程序中其它语句正式编译之前进行的。(√)
16. 在程序的一行中可以出现多个有效的预处理命令行。(× ) 17. 联合体类型在任何给定时刻没有成员驻留在结构中。( × ) 18. C语言的函数定义不能嵌套但调用可以嵌套。(√ )
19. C语言中do-while语句构成的循环,当while语句中的表达式值为零时结束循环。(√ )
20. C语言用true表示逻辑\真\值。(× )
21. for循环是先执行循环体语句,后判定表达式。(×)
22. 数组的大小是可变的,可以有不同的类型的数组元素。(×) 23. 在C语言中,指向指针的指针称为多级指针。(√) 24. 在C语言中,要求对所有用到的变量作强制定义,也就是\先定义,后使用\。(√ )
25. C语言的编译系统对宏命令的处理是在程序连接时进行的。( × ) 26. 宏定义不能出现在函数内部。( √ )
27. 对于C语言的函数它们定义和调用都不能嵌套。( × ) 28. C程序在执行过程中对预处理命令进行处理。( × )
29. 使用fseek函数可以实现改变文件的位置指针的当前位置。( √ )
31. C语言中规定函数的返回值的类型是由于调用该函数的主调用函数类型所决定。(× )
32. 变量的作用域是指该变量有定义的程序部分。( √)
33. 在定义一个函数时,若指定函数返回值的存储类型为static关键字,则称该函数是\静态\函数。( √ )
34. 数组的大小是可变的,可以有不同的类型的数组元素。( × )
35. for循环体语句中,可以包含多条语句,但要用花括号括起来。( √ ) 36. 在说明一个联合体变量时系统分配给它的存储空间是该联合体中所有成员所需存储空间的总和。(× )
37.C语言中,字符串以'\\0'为结束标志。(√) 38.数组名代表该数组的首地址。(√)
39.C语言中,用格式符\输入字符数组时,数组名前不能加&。(√) 40.C语言中,gets()函数的返回值是用于存放输入字符串的字符数组首地址(×) 41.设有int a;char abc[5]=\则a=strlen(\);执行后a的值为5。(×)
42.定义数组时可以同时给数组赋初值,初值的个数可以超过数组的长度,多余的被忽略。(×)
43.已知字符数组str1的初值为\,则语句str2=str1;执行后字符数组str2也存放字符串\。(×)
44.二维及多维数组在定义的同时给数组赋初值时,可以省略数组的各维长度。(×)
45.对于数值型数组来说,可以一次引用整个数组。(×)
46.C语言中,在对全部数组元素赋初值时,必须指定数组的长度。(×) 47.C语言中,数组元素在内存中是顺序存放的,它们的地址是连续 的。(√) 48.C语言中,数组元素的下标是从1开始的,下标不能越界。(×)
49.C语言中,数组名是一个常量,是数组首元素的内存地址,可以重新赋值。(×)
50.一个数组中的所有元素可以具有不相同的数据类型。(×) 51.一个C程序可以由若干各函数组成,这些函数可以书写在不同的文件中。(√) 52.C语言中,函数间数据传递的方式有三种,即用返回值、参数、全局变量。(√)
53.函数的形参只能在函数内部使用。(√) 54.C语言中,实参可以是常量、变量或表达式。(√)
55.C语言中,实参的个数、类型和位置必须与形参的定义一一对应。(√) 56.C语言中,编译预处理后所有的符号常量名和宏名都用相应的字符串替换。(√)
57.宏展开不作语法检查,展开时不替换关键字和常量。实参向形参进行数值传递时,数值传递的方向时单向的,即形参变量值的改变不影响实参变量的值。(√) 58.函数原型说明中,省略形参变量或者将形参变量写成其它名称不影响程序的正确性。(√)
59.一个C程序中只能包含一个main()函数,程序总是从main()函数开始执行。(√)
60.数组名作为函数的参数时,实参数组和形参数组共用相同的内存单元。(√) 61.所有的函数调用前都必须进行函数原型说明。(×) 62.函数可以嵌套定义,也可以嵌套调用。(×)
63.C语言中,结构类型与结构变量的含义一样,都可以用来存放数据。(×)
64.共用体所有成员共用的内存单元的大小为各成员需要占用内存大小之和。(×)
65.将整数值赋给枚举变量时不需要作强制类型转换。(×)
66.共用体所有成员都共用同一内存单元(√) 结构体数组不可以在定义时进行初始化。(×) 67.结构体可以定义在单独的头文件中,使用时需要在对应C文件中包含该头文件。(√)
68.C语言中,关键字enum可用于结构类型的定义。(×) 69.可以把结构体数组元素作为一个整体输出。(×) 70.结构体变量作参数时是地址传递。(×)
71.C语言中,结构的成员可以是一维数组或多维数组。(√) 72.枚举类型时一种基本的数据类型。(×)
73.结构体和共用体成员的应用都只能引用最低一级的成员。(√) 74.int a=5,*p;p=&a;则p的值为5。(×) 75.表达式*p++的运算顺序为先自增后取值。(×) 76.语句*--p;执行之后p指向的内存单元被改变。(×) 77.两个指针相加没有意义。(√) 78.*(a[i]+j)与a[i][j]的含义相同。(√) 79.指针、数组名、函数名都是地址。(√)
80.void 类型的指针不指向某种类型的数据,所以没有意义。(×) 81.一个指针变量的值是一个地址值。(√) 82.指针作函数的参数时是地址传递方式。(√) 83.C语言中,只能用下标来引用数组元素。(×) 84.C语言中,执行表达式(*p)++后p的指向改变了。(×)
85.链表的插入和删除和数组元素一样需要移动插入或删除点后的元素。(×) 86.语句“int *p ”中的*p的含义为取值。(×)
87.命令行参数是指在操作系统状态下执行命令程序时允许带的参数。(√) 为了提高读写效率,我们进行读写操作后不应关闭文件以便下次再进行读写。(×)
88.rewind函数的作用是位置指针返回移动前的位置。(×) 89.当以参数w打开文件时,若指定路径下已有同名文件,则覆盖原有文件。(√) 90.tell获得文件的当前读写位置。(√)
91.C语言中的文件是一种流式文件,读写时均以字符为单位。(√) 92.C语言通过文件指针对它所指向的文件进行操作。(√) 93.由于在C语言中将文件视为无结构的字节流,所以不能对文件进行二进制读写。(×)
94.p指向的文件中读取字符,并判断文件是否结束。(√)
95.使用fwrite向文件中写入数据之前,该文件必须是以wb方式打开。(√) 96.fseek函数中的第二个参数代表的位移量是相对于的文件的开始来说的。(×)
97.在c语言中将文件视为无结构的字节流。(√)
98.C语言中,字符数据用格式说明\来输出,字符串数据用格式说明\来输出。 (√)
99.C语言中,数组元素的下标是从1开始的,下标不能越界。 (×)