《C语言知识选择填空.doc》由会员分享,可在线阅读,更多相关《C语言知识选择填空.doc(47页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-+一选择1. 表达式,0x13&0x17的值是(A)。A、0x13 B、0xec C、0x17 D、0xf82. 以下标识符中,不能作为合法的C用户定义标识符的是(A)。A、signed B、_if C、to D 、answer3. 以下所列的C语言常量中,错误的是(D)。A、72 B、0xFF C、2L D、1.2e0.54. 以下程序段的输出结果是( A )。(提示:大写字母A的ASCII码值是65。)main() char ch1, ch2; ch1 = A + 5 - 3; ch2 = A + 5 - 3; printf(%d,%cn, ch1,ch2); A、67, C B、B,C
2、 C、不确定的值 D、C,D5. 若有以下定义:char s=092; 则该语句(A)。A、定义不合法,s的值不确定 B、使s的值包含1个字符C、使s的值包含4个字符 D、使s的值包含3个字符6. 以下不正确的if语句形式是(A)。A、if(x!=y) scanf(%d,&x) else scanf(%d,&y); B、if(xy&x!=y); D、if(x=y) x+=y;7. 执行语句 for(i=1;i+num C、stu3.age D、p-numg 12. static struct int a1;float a2;char a3;a10=1,3.5,A; 说明数组a是地址常量,它有1
3、0个结构体型的下标变量,采用静态存储方式,其中被初始化的下标变量是(A)。A、a0 B、a10 C、a-1 D、a113. 有以下枚举类型定义:enum a sum=9,mon=-1,tue;则tue的值是(D)。A、3 B、11 C、2 D、014. static struct int a1;float a2;char a3;a10=1,3.5,A; 说明数组a是地址常量,它有10个结构体型的下标变量,采用静态存储方式,其中被初始化的下标变量是(B)。A、a10 B、a0 C、a1 D、a-115. C语言结构体类型变量在程序执行期间(C)。A、部分成员驻留在内存中 B、没有成员驻留在内存中
4、C、所有成员一直驻留在内存中 D、只有一个成员驻留在内存中16. 当说明一个结构体变量时系统分配给它的内存是(A)。A、各成员所需内存量的总量 B、成员中占内存量最大者所需的容量C、结构中最后一个成员所需内存量 D、结构中第一个成员所需内存量17. 在定义构造数据类型时,不能(C)。A、说明变量 B、说明存储类型 C、末尾不写分号 D、初始化18. 结构体类型的定义允许嵌套是指(D)。A、定义多个结构体型 B、成员可以重名C、结构体型可以派生 D、成员是已经或正在定义的结构体型19. 使用共用体变量,不可以(D)。A、节省存储空间 B、进行动态管理 C、简化程序设计 D、同时访问所有成员20.
5、 C语言中,定义结构体的保留字是(A)。A、struct B、union C、enum D、typedef1.系统的标准输入文件是指(B)。A、显示器 B、键盘 C、硬盘 D、软盘2.应用缓冲文件系统对文件进行读写操作,关闭文件的函数名为(D)。A、fwrite B、close() C、fread() D、fclose()3.以下叙述中不正确的是(D)。A、以下是正确的宏定义:#define IBM_PC 5 B、预处理命令行都必须以#号开始C、在程序中凡是以#号开始的语句行都是预处理命令行D、C程序在执行过程中对预处理命令行进行处理4.C语言中的文件类型只有(A)。A、ASCII文件和二进制
6、文件两种 B、二进制文件一种C、文本文件一种 D、索引文件和文本文件两种5.C语言中,文件由(B)。A、记录组成 B、由字符(字节)序列组成C、由数据块组成 D、由数据行组成6.若以a+方式打开一个已存在的文件,则以下叙述正确的是(A)。A、文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作B、以上各种说法皆不正确C、文件打开时,原有文件内容不被删除,位置指针移到文件开头,可作重写和读操作D、文件打开时,原有文件内容被删除,只可作写操作7.下列关于C语言数据文件的叙述中正确的是(D)。A、文件由ASCII码字符序列组成,C语言只能读写文本文件B、文件由二进制数据序列组成,
7、C语言只能读写二进制文件C、文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件D、文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件8.若执行fopen函数时发生错误,则函数的返回值是(C)。A、地址值 B、EOF C、NULL D、19.当顺利执行了文件关闭操作时,fclose函数的返回值是(D)。A、TRUE B、1 C、-1 D、010.若fp是指向某文件的指针,且已读到文件末尾,则库函数feof(fp)的返回值是(A)A、非零值 B、EOF C、NULL D、-111.以下叙述中错误的是(D)。A、文件打开后只能读,不能写 B、文件打开后,只能用来写,不能读C
8、、文件打开后,只能用来向其中追加内容,不能读 D、以上描述都错误12.若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是(D)。A、fopen(A:userabc.txt,rb) B、fopen(A:userabc.txt,r)C、fopen(A:userabc.txt,w) D、fopen(A:userabc.txt,r+)13.若执行fopen函数时发生错误,则函数的返回值是(D)。A、地址值 B、1 C、EOF D、014.fgetc函数的作用是从指定文件读入一个字符,该文件的打开方式必须是(D)。A、答案B和C都正确 B、只写 C、追加
9、 D、读或读写15.以下叙述中不正确的是(C)。A、C语言中,随机读写方式不适用于文本文件B、C语言中对二进制文件的访问速度比文本文件快C、C语言中,顺序读写方式不适用于二进制文件1.若有int a10=0,1,2,3,4,5,6,7,8,9,*p=a;则输出结果不为5的语句为(A)。A、printf(%d,*p5); B、printf(%d,p5);C、printf(%d,*(p+5); D、printf(%d,*(a+5);2.以下对枚举类型名的定义中正确的是(D)。A、enum a sum,mon,tue; B、enum a=sum,mon,tue;C、enum a=sum,mon,tu
10、e; D、enum a sum=9,mon=-1,tue;3.以下程序的输出结果是(C).main() int a = 2, b =5; printf(“a=%d,b=%dn”,a, b); A、a=%2,b=%5 B、a=%d,b=%d C、a=%d,b=%d D、a=2,b=54.若有定义:int aa 8;则以下表达式中不能代表数组元aa1的地址的是(D)。A、&aa0+1 B、aa+1 C、&aa1 D、&aa0+5.设有说明语句:char a=72;则变量a(B)。A、说明不合法 B、包含1个字符 C、包含2个字符 D、包含3个字符6.从键盘上输入某字符串时,可使用的函数是(A)。A
11、、gets() B、fread() C、fscanf() D、getchar()7.以下程序段的输出结果为(B)。 char c=abc; int i=0; do ;while(ci+!=0);printf(%d,i-1);A、abc B、3 C、ab D、28.下面选择中正确的赋值语句是(设char a5,*p=a;)(D)。A、*a=abcd; B、*p=abcd; C、a=abcd; D、p=abcd;9.若有double *p,x10;int i=5;使指针变量p指向元素x5的语句为(D)。A、p=xi; B、p=x; C、p=&(x+i) D、p=ξ10.以下能对一维数组a进行
12、正确初始化的语句是(B)。A、int a10=10*1; B、int a=0;C、int a10=(0,0,0,0,0) D、int a10=;11.sizeof(float)是(A)。A、一个整型表达式 B、一个浮点表达式C、一种函数调用 D、一个不合法的表达式12.若有说明:int *p,m=5,n;以下正确的程序段是(B)。A、scanf(%d,&n);*p=n; B、p=&n;*p=m;C、p=&n;scanf(%d,*p) D、p=&n;scanf(%d,&p);13.下面说法中错误的是(A)。A、函数可以返回一个共用体变量B、在任一时刻,共用体变量的各成员只有一个有效C、共用体内的
13、成员可以是结构变量,反之亦然D、共用体变量的地址和它各成员的地址都是同一地址1以下选项中合法的用户标识符是(B)。A、A.dat B、_2Test C、long D、3Dmax2设变量定义为int a, b;,执行下列语句时,输入 ( D ) ,则a和b的值都是10. scanf(a=%d, b=%d,&a, &b);A、a=10 b=10 B、10 10 C、10, 10 D、a=10, b=103以下数据中,不正确的数值或字符常量是(C)。A、0xaa B、66 C、c D、504以下程序的输出结果为(D)。main()int i=010,j=10; printf(%d,%dn,i,j);
14、A、9,10 B、10,10 C、010,10 D、8,105以下程序段的输出结果是(D)。float x=3.6; int i; i=(int)x; printf(x=%f,i=%dn,x,i);A、x=3.600000,i=4 B、x=3 i=3.600000 C、x=3,i=3 D、x=3.600000,i=36int a=1,b=2,c=3; if(ac)b=a;a=c;c=b;则c的值为(B)。A.不一定 B、2 C、3 D、17设j和k都是int类型,则for循环语句 for(j=0,k=-1;k=1;j+,k+) printf(*n);(A)。A、是无限循环 B、循环体一次也不执
15、行 C、循环结束的条件不合法 D、循环体只执行一次8以下能正确定义数组并正确赋初值的语句是(D)。A、int c2=1,2,3,4; B、int N=5,bNN;C、int a12=1,3; D、int d32=1,2,34;9.以下程序段的输出结果是(D)。pritnf(“%dn”, strlen(“ATSn0121”);A、8 B、11 C、10 D、910若使用一维数组名作函数实参,则以下正确的说法是(D)。A、实参数组类型与形参数组类型可以不匹配B、在被调用函数中,必须考虑形参数组的大小C、实参数组名与形参数组名必须一致D、必须在主调函数中说明此数组的大小11C语言程序中,若对函数类型
16、未加显式说明,则函数的隐含说明类型为(A)。A、int B、void C、char D、double12两个指针变量不可以(D)。A、比较 B、指向同一地址 C、相减 D、相加13经过下列的语句 int j,a10,*p;定义后,下列语句中合法的是(D)。A、p=a5; B、p=&(j+2); C、p=a2+2; D、p=p+2;14C语言中,定义结构体的保留字是(A)。A、struct B、union C、enum D、typedef15下列关于C语言数据文件的叙述中正确的是(D)。A、文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件B、文件由二进制数据序列组成,C语言只能读写
17、二进制文件C、文件由ASCII码字符序列组成,C语言只能读写文本文件D、文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件1. 与十进制数97不等值的字符常量是(A)。A、101 B、x61 C、141 D、a2. 下列变量说明语句中,正确的是(B)。A、char a;b;c; B、int x,z; C、char:a b c; D、int x;z;3. 设 int x=1, y=1; 表达式(!x|y-)的值是(A)。A、1 B、2 C、-1 D、04. 以下程序的输出结果是(D)。main()float x=3.6; int i; i=(int)x; printf(x=%f,i
18、=%dn,x,i);A、x=3 i=3.600000 B、x=3.600000,i=4 C、x=3,i=3 D、x=3.600000,i=35. putchar函数可以向终端输出一个(D)。A、整型变量表达式值 B、实型变量值 C、字符串 D、字符或字符型变量值6. int a=3,b=2,c=1; if(abc)a=b; else a=c; 则a的值为(C)。A、2 B、3 C、1 D、07. 执行语句 for(i=1;i+4;); 后变量 i 的值是(D)。A、不定 B、3 C、4 D、58. 数组名作为实参数传递给函数时,数组名被处理为(C)。A、该数组的长度 B、该数组的元素个数 C、
19、该数组的首地址 D、该数组中各元素的值9. 在C语言中,一维数组的定义方式为:类型说明符数组名(D)。A、整型表达式 B、整型常量或整型表达式C、常量表达式 D、整型常量10. 以下函数调用语句中实参的个数是(C)。 func(e1,e2),(e3,e4,e5);A、5 B、语法错误 C、2 D、311. 在C语言程序中(C)。A、函数的定义可以嵌套,但函数的调用不可以嵌套B、函数的定义和函数调用均可以嵌套C、函数的定义不可以嵌套,但函数的调用可以嵌套D、函数的定义和函数调用不可以嵌套12. 若有int a10=0,1,2,3,4,5,6,7,8,9,*p=a;则输出结果不为5的语句为(A)。
20、A、printf(%d,*p5); B、printf(%d,p5);C、printf(%d,*(p+5); D、printf(%d,*(a+5);13. 若定义:int a=511,*b=&a;, 则printf(%dn,*b);的输出结果为(B)。A、a的地址 B、511 C、512 D、无确定值14. 以下对枚举类型名的定义中正确的是(D)。A、enum a sum,mon,tue; B、enum a=sum,mon,tue;C、enum a=sum,mon,tue; D、enum a sum=9,mon=-1,tue;15. 打开文件时,方式“w”决定了对文件进行的操作是(D)。A、追加
21、写盘 B、可读可写盘 C、只读盘 D、只写盘1.执行下列语句后的输出为(C)。 int j=-1; if(j=1) printf(*n); else printf(%n);A、%c B、有错,执行不正确 C、* D、%2.有如下程序,该程序的输出结果是(B)。main() int x=1,a=0,b=0;switch(x)case 0: b+;case 1: a+;case 2: a+;b+;printf(a=%d,b=%dn,a,b);A、a=1,b=1 B、a=2,b=1 C、a=1,b=03.设a、b和c都是int变量,且a=3,b=4,c=5;则以下的表达式中,值为0的表达式是(C)。
22、A、a|b+c&b-c B、a=b C、!(abc)a=b; else a=c; 则a的值为(C)。A、2 B、3 C、1 D、06.假定所有变量均已正确定义,下面语句段执行后的x的值是(B)。a = b = c = 0; x = 35; if(!a) x-; else if(b) ; if(c) x = 3; else x = 4;A、34 B、4 C、35 D、37. 运行以下程序后,输出的结果是(B)。main() int k = -3; if(k =y)&(y=z) B、(x=y=z) C、(x=y)AND(y=z) D、(x=y)&(y=z)10.下列程序的输出结果是(A)。 mai
23、n() int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0:a+;break; case 1:b+;break; case 2:a+;b+;break; case 3:a+;b+;break; printf(a=%d,b=%dn,a,b); A、a=2,b=1 B、a=2,b=2 C、a=1,b=0 D、a=1,b=111.有以下程序,执行后输出结果是(A)。main() int i=1,j=1,k=2; if(j+|k+)&i+)printf(%d,%d,%dn,i,j,k);A、2,2,2 B、2,2,3 C、1,1,2 D、2,
24、2,112.C语言的if语句嵌套时,if与else的配对关系是(C)。A、每个else与if的配对是任意的 B、每个else总是与它上面的if配对C、每个else总是与它上面的最近的并且没有配对的if配对 D、每个else总是与最外层的if配对13.为了避免在嵌套的条件语句 if-else 中产生二义性,C语言规定:else子句总是与 (B) 配对。A、其之后最近的if B、其之前最近且没有与其他if配对过的ifC、缩排位置相同的if D、同一行上的if14,执行下列语句后的输出为(B)。 int j=-1; if(j=1) printf(*n); else printf(%n);A、%c B
25、、* C、% D、有错,执行不正确15.在C语言中,if语句后的一对原括号中,用以决定分支的流程的表达式(D)。A、只能用关系表达式 B、只能用逻辑表达式 C、只能用逻辑表达式或关系表达式 D、可用任意表达式16.下列运算符中优先j级别最低的运算符是(C)。A、+ B、!= C、| D、=17.若执行以下程序时从键盘上输入3和4,则输出结果是(B)。main() int a, b, s; scanf(%d%d, &a, &b); s = a; if(a b) s = b; s *= s; printf(%dn, s);A、14 B、16 C、20 D、1818.运行以下程序后,输出的结果是(B
26、)。main() int k = -3; if(k = 0) printf(*n), else printf(&n);A、* B、有语法错误不能通过编译 C、& D、*&1.若有以下的定义:int t32;能正确表示t数组元素地址的表达式是(B)。A、&t1 B、t2 C、t3 D、&t322. 下面选择中正确的赋值语句是(设char a5,*p=a;)(D)。A、*a=abcd; B、*p=abcd; C、a=abcd; D、p=abcd;3. char *s1=hello,*s2;s2=s1;则(B)。A、s2指向不确定的内存单元 B、puts(s1);与puts(s2);结果相同C、s1
27、不能再指向其它单元 D、不能访问hello4. 若有定义:int x, *pb;,则以下正确的赋值语句是(B)。A、*pb = *x B、pb = &x C、*pb = &x D、pb = x5. 对于基本类型相同的两个指针变量之间,不能进行的运算是(A)。A、+ B、 C、= D、-6. 以下能正确进行字符串赋值的语句是(D)。A、char s5 = “good!”;B、char s5 = a, e, i, o, u;C、char s5; s = “good!”;D、char *s; s = “good!”;7. 若有定义:char *p1,*p2,*p3,*p4,ch;则不能正确赋值的程序
28、语句为(D)。A、p4=&ch;*p4=getchar(); B、p2=(char *)malloc(1);scanf(%c,p2);C、p1=&ch; scanf(%c,p1); D、*p3=getchar();8. 若已定义x为int类型变量,下列语句中说明指针变量p的正确语句是(A)。A、int *p=&x; B、int *p=x; C、*p=*x; D、int p=&x;9. 变量p为指针变量,若p=&a,下列说法不正确的是(A)。A、*(p+)=a+ B、&*p=&a C、(*p)+=a+ D、*&a=a10.若有说明:int *p1,*p2,m=5,n;以下均是正确赋值语句的选项是
29、(D)。A、p1=&m;*p2=*p1; B、p1=&m;p2=&p1C、p1=&m;p2=*p1; D、p1=&m;p2=p1;11. 若有double *p,x10;int i=5;使指针变量p指向元素x5的语句为(D)。A、p=xi; B、p=x; C、p=&(x+i) D、p=ξ12. 下列选项中正确的语句组是(B)。A、char s8; s=Beijing; B、char *s; s=Beijing;C、char s8; s=Beijing; D、char *s; s=Beijing;13. 若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是(C)。A、*p=*q; B、n=*q; C、p=n; D、p=q;14. 为了提高程序的运行速度,在函数中对于整型或指针可以使用(D)型的变量。A、static B、auto C、extern D、register15. 若有定义:int aa 8;
限制150内