C语言选择题复习精选_第1页
C语言选择题复习精选_第2页
C语言选择题复习精选_第3页
C语言选择题复习精选_第4页
C语言选择题复习精选_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、选择题复习1 表达式 “ (a=4*5, b=a*2), ba, a+=2 的值是(C)。A . 2B. 20C. 22D. 422以下是一个自定义函数的头部,其中正确的是(C )。A .int fun(int a , b)B.intfun(int a ,int a)C.int fun(in t*a, i nt b)D.intfun (char a , i nt b)3.以下数组声明语句中正确的是(D )。A .int n, a n;B.inta;C.int a23=l,2,3;D.inta 3=l,2,3;4 .已知在某 C语言编译系统中表达式sizeof(int)的值是2,如果希望将常量-

2、70 000正确地保存在一个变量a中,该变量声明语句应当是(B )。A .int a;B .long inta; C.unsigned inta; D.unsigned int a;5. 以下声明语句中,用于声明一个行指针变量的是( C )。A .int *p(i nt);B .int *p;C .in t (*p)3;D .in t (*p)(i nt);6. 在以下程序中,需要在 fun函数中声明一个int型的变量,以下选项中(A )不能用做 该变量的名字。#in elude int y;mai n() int a=1;fun (a); int fun (i nt x)/*int型变量声明

3、语句位置* / *若干执行语句* /b. yC. fabsD. fun7.如有语句int x,y=0, z,*p3; p0=&x; p1=&y; p2=&z;,以下表达式中有语法错误的是(B )。A . y+B. p+C. *+p0D. (*p0)+&设有声明语句 “inta33=1,2,3,4,5,6,7,8,9;,以下语句中除(D )外均能输出a12的值。A . printf( % d ,*(*(a+1)+2)B. printf(%d ,*( & a20-1);C. printf(%d ,*(a1+2);D. printf(%d ,*(a+1)2);9.已知有声明语句int x=8,则下列

4、表达式中,值为 2的是(B )。A . x+=x-=xB . x% = x-2 C. x8?x=0:x+D . x/ = x + x10 .以下关于函数的叙述中正确的是( D )。A .在函数体中可以直接引用另一个函数中声明为static类别的局部变量的值B .在函数体中至少必须有一个return语句C .在函数体中可以定义另一个函数D .在函数体中可以调用函数自身11.若有声明语句“int a10, b33;,则以下对数组元素赋值的操作中,不会出现越界访问 的是(D )。A . a-1=0B. a10=0C. b30=0D . b02=012 .若有声明语句 “ char ch= a , *

5、pc= &Ch下语句中有语法错误的是(A . (*pc)+;B . ch+= - a + A;C . toupper(ch)=ch;D . ch+;a数组13 .已知有声明语句 “int a5=1,2, 3, 4, 5, *p, i;,以下语句中” C )不能正确输岀 全部元素的值。for(p=a, i=0;i5;i+)pri ntf(%d,*(p+i); for(p=a;pa+5;p+)pri ntf(%d, *p);for(p=a, i=0;pa+5;p+, i+)printf(%d, pi); for(p=a;p2!1B . S20C . S1D . S16 .逻辑 异或”运算可描述为“

6、 a xor b,其中a和b为参加运算的两个操作数,运算结果为当且仅当a、b两个操作数中只有一个为真时才为真,其他情况下均为假。以下表达式中(D )可以正确表示逻辑异或”运算。A . a | b17 .若有声明A . a0=018 .若有声明:int k, a, b;un sig ned long y=5; double x=1.23;则以下表达式中正确的是(D )。A . x%(-5) B . x=y6 C .19 . 一个用C语言编写的源程序中, A .取名为ma in的函数定义C.变量声明20 .以下声明中正确的是(_A . int n=2, an=10;C .int n=10, a2=

7、 n;21、若有函数fun的定义为void fun( )static int a=1;B . a & b“int a5,*b=a,(*c)3,*d3;B . b0=0C. (a&b)&!(a | b)D . (a | b)&!(a&b),则在以下表达式中有语法错误的是(C. c0=0D . d0=0k=(a=1,b=2,&a + &b)D . a+=a- = (b=2) * (a = 3)(A )是必不可少的。B . #i ncludeD.注释B . int n=10, *p2=&n;D .int a22=10, (*p)2=a+1;则下列叙述中不正确的是(a的值是上次调用结束时 a的值A .

8、在每次调用fun函数时,变量B 在fun函数之外,可以用变量名a直接引用a的值C .在其他函数中,可以出现声明 double a=2.5;D .fun函数的形式参数不能取名为a22. 以下单目运算符均只需要一个操作数,其中要求操作数的类型只能是指针型的是(D JoA . &B. +C. !D. *23. 已知有声明int good=l;,若要使得表达式“p=good+good无语法错误(包括警告错误), p应当声明为(B )oA . char p;B. char*p;C. int p;D. int *p;24. 以下全局变量声明中正确的是(D ) oA . auto int i=1;B . f

9、loat a=1, b=0.5, c=a+b;C. char for=1;D . static char ch;25. 若已有声明“ double a23=1,2, 3, 4, 5, 6;,则下列表达式中不能正确引用a11 值的 是( C )A . *(a0+4)B. *(a1+1)C. *(*(a+3)+1)D. *(*a+4)26. 已有声明“int a5;,以下表达式中不能正确取得a1指针的是(B )。A . &a1B. +aC. &a0+1D. a+l27. 以下关于语句的说法中正确的是( A ) oA . do-while语句的循环体至少会被执行1次B. while语句的循环体至少会

10、被执行1次C . for语句的循环体至少会被执行1次D.在C语言中只能用do、do-while或for语句实现循环结构28 .已知函数f的定义如下:void f(void)printf(That s great! );则调用f函数的正确形式是(B ) oA . f;B . f();C . f(void);D . f(1);29 .以下程序在编译时在第三行报错“ Redeclarationof a function d ”如果决定修改该行声明中出现的局部变量 a的名字,则下列选项中不能用来替换变量名a的是(A )。int b;void d(int a) int f; double a=1;pri

11、n tf(%d,a);main()int e=1;d(e);A . fB. eC. dD. b30、以下语句中不包含关键字的是(A )qA. x=sqrt(2);B. while(x!=0)x-;C. if(x0)x=-x;D. return x;31 .在main函数体内部和外部均允许出现的实体是( B )。A .预处理命令B .语句C. 另一函数的定义D .函数形式参数声明32、 已知有声明int x=2 :,以下表达式中值不等于8的是(D )。A . x+=2,x*2B . x+=x*=XC . (x+7)/2*(x+1)%2+1)D . x*7.2/x+133、执行以下程序时,#in

12、cludemain () int a; float b;scan f(%3d%f, &a, &b);pri ntf(%dt%f,ab);若要求变量a和b分别从键盘获得输入值45和678.0,则以下四种输入数据中(代表 空格”键,代表 回车”键),不能达到该要求的输入数据是( C )qA .45 678B .45678C .45,678D .04567834 .下列程序段中,能将变量x、y中值较大的数保存到变量a、值较小的数保存到变量b的程序段是(C )。A.if(xy)a=x;b=y;else a=y;b=x;B.if(xy)a=x;b=y;else a=y;b=x;C.if(xy)a=x;b

13、=y;elsea=y;b=x;D.if(xy)a=x;b=y;else(xy)a=y;b=x;35 .已知函数fun的定义如下:void fun (i nt x, int y) int k;for(k=0;ky;k+) xk+=y;若main函数中有声明int a10=10及调用fun函数的语句,则正确的fun函数调用形式是(C )。A. fu n(a ,a0);B . fun (a0,a0);C. fun(&aO,aO);D . fun(a0,&a0);36. 设有下列程序段:static char b=2;void Y () static float d=4;int a=1;void X

14、() in t c=3;关于程序段中各变量的属性,以下叙述中错误的是(D )。X可以访问,函数Y不能访问X和函数Y都可以访问X可访问,函数Y不可访问X和函数Y都可以访问A. a是全局变量,函数 B . b是全局变量,函数C. c是动态变量,函数D. d是静态变量,函数37、若有如下声明和语句:int t33, *pt3, k;for(k=0; k3;k+) ptk=&tkO;则表达式*(*(pt+1)+2)所引用的是(C )。A . t20B . &t20C . t12D . &t1238 .设有声明float a=1.23456; int i;,欲将a中的数值保留小数点后两位,第三位进行四舍

15、五入运算,能实现该功能的表达式是( A )。A . i=a*100+0.5, a=i/100 . 0B . a=(a*100+0.5)/100.0C . a=(i nt)a*100+0.5)/l00.0D . a=(a/100+0.5)/100.039 .若已有声明int x=4, y=3;,则表达式x y ? x+: y+的值是(B )。A . 2B . 3C . 4D . 540 .设有变量声明“ char c; ” 执行 “ for (; c=(getchar() != n ); )printf(%c, c);时,从键盘上输入“ABCDEFG/”之后,输出的结果是(C )。A . ABC

16、DEFGB . AABBCCDDEEFFGGC.非字母数字字符D.语句不能执行41 .以下表示数学式“ abc的逻辑表达式中,错误的是( A )。A . abcB . ab&b=b)&!(b=c)D . !(a=b|b=c)42 .下面关于循环语句for、while、do_while的叙述中,正确的是(D )。A .三种循环语句的循环体都必须放入一对花括号中B. 三种循环语句中都可以缺省循环终止条件表达式C. 三种循环语句的循环体都至少被无条件地执行一次D. 三种循环语句都可能出现无穷循环43、 若有声明“int a=l, 2, 3, 4, *p, i;,则以下程序段中不能输出13的是(B )

17、。A . for(i=0;i4;i+=2)printf( % d, ai);B . for(p=0;p4;p+=2)printf( % d, ap);C . for(p=a;pa+4;p+=2)printf( % d, *p);D . for(p=a, i=0; iprice=10; D. (*y)-price=10;48. 若有声明int a=3, b=4, c=5;,则下列表达式中值为0的是(D )。A. a&b=0 B. a=b C. a|b&cD. !(!c|1)49. 已知有声明Iong x, y;,且x中整数的十进制表示有 n位数字(4n=0)y=1; else y=-1;B. y

18、=x=0?1:01;C. switch() case x=0:y=1; break;defauIt:y=-1;D. switch(x-abs(x) case 0:y=1; break;defauIt:y=-1;51. 已知有声明“int m=5,4,3,2,1,i=0;,下列对m数组元素的引用中,错误的是(_B_。A. m+iB. m5C. m2*2=0D. mm452、若函数调用时的实参为变量,则以下关于函数形参和实参的叙述中正确的是(D )。A .实参和其对应的形参占用同一存储单元B .形参不占用存储单元C.同名的实参和形参占用同一存储单元D .形参和实参占用不同的存储单元53、 C语言规

19、定,在一个源程序中main函数的位置(D )。A .必须在最开始B .必须在最后C.必须在预处理命令的后面D .可以在其他函数之前或之后54、 已知有声明int a=3, b=4, c;,则执行语句“ c=1/2*(a+b);后,c的值是(A )。A . 0B. 3C. 3.5D . 455、已知字母 A的ASCII码是65,字母a的ASCII码是97,变量c中存储了一个大写字母的编码。若要求将c中大写字母编码转换成对应小写字母编码,则以下表达式中不能实现该功能的是(D )。A. c=tolower(c)B. c=c+32C. c=c- A + aD. c= (c + A 3%2656、已知有

20、定义和声明:struct stude nt int no;char n ame20; struct int year, mon th, day;birth;s;若要求将日期“198拜11月12日行呆存到变量s的birth成员中,则能实现这一功能的程序段是(D )。A . year=1989; month=11; day=12;B. s.year=1989;s.month=11; s.day=12;C. birth.year=1989; birth.month=11; birth.day=12;D . s.birth.year=1989; s.birth.month=11; s.birth.da

21、y=12;57、执行以下程序后的结果是( C )。#in clude void mai n() int x=3;Doprintf(%dt, x=x-3);while(!x);A 输出一个数:0B 输出一个数:3C.输出两个数:0和-3D 无限循环,反复输出数58. 设有声明int a=4, b=3, c=5;,以下”个程序段中有3个程序段的执行效果是相同的,另 一个执行效果不同的是(C )。A . if(ab) c=a, a=b, b=c;B. if(ab) c=a, a=b, b=c;C. if(ab) c=a; a=b; b=c;D . if(ab) c=a; a=b; b=c;59. 以

22、下关于if语句和switch语句的叙述中错误的是(D )A . if语句和switch语句都可以实现算法的选择结构B. if语句和switch语句都能实现多路(两路以上)选择C. if语句可以嵌套使用D . switch语句不能嵌套使用60. 若有声明语句“ char s110=0 , s210= books;,则能将字符串books赋给数组s1保 存的表达式是(D )。A . s1= books;B. strcpy(s2, s1);C. s1=s2;D. strcat(sl, s2);61. 已知A盘根目录下的一个文本数据文件data.dat中存储了 100个int型数据,若需要修改该文件中

23、已经存在的若干个数据的值,只能调用一次fopen函数,已有声明语句“FILE*fp;:则fopen函数的正确调用形式是(A )。A . fp=fopen(a:data.dat,r+);B . fp=fopen(a:data.dat ,w+);C. fp=fopen(a:data.dat,a+ );D . fp=fopen(a:data.dat,w );62. 数组和链表都可以用于存储一组彼此有关联的数据,以下说法中不正确的是(B )。A .数组占用一块连续的存储区域,链表可能占用若干块不连续的存储区域B .数组和链表所占用的存储区域均不能在程序运行期间动态地分配C .数组中的数据可以随机存取或

24、顺序存取,链表中的数据只能顺序存取D .数组的长度是固定的,链表的长度是不固定的63. 设有定义和声明语句:typedef struct dtypeint a;struct dtype *b;no de;static node x3=5, &x1, 7, &x2, 9,0 , *prt=&x0;下列选项中,表达式值不为5的是(A )。A . x1.b-a-2B. Ptr-b-a-2C. (ptr+1)-a-2D. ptr-a64. 在以下程序中,需要在main函数之后定义一个函数,以下选项中( D )可以用做该函 数的名字。#defi ne P 3.14int y;mai n() int a

25、= 1;函数名(a);/ *若干执行语句* /int函数名(int x)return x*x;A . mainB . yC. PD . print65. 已知有语句“ FILE *fp;int x=123;fp =fopen(out.dat, w);,如果需要将变量 x的值以文本形式保存到一个磁盘文件out.dat中,则以下函数调用形式中正确的是( B )。A . fprintf(%d, x);B. fprintf(fp, %d, x);C. fprinff(%d, x, fp);D. fprintf(out.dat, %d, x);66. 已知有声明语句“ char s110= 12345,

26、 s210= abcde, s310;,以下语句中能将 s1 中存储的字符串和s2中存储的字符串正确交换的是(D。A . s3=s1,s 1= s2, s2 = s3;B . s30 = s10,s10 = s20,s20=s30;C. strcpy(s30,s10),strcpy(s10,s20),strcpy(s20,s30);D . strcpy(s3,s1), strcpy(sl, s2), strcpy(s2, s3);67. 在定义任何一个函数时,下列选项中( B )是不可缺少的。A .函数名之前的数据类型B .函数名之后的一对圆括号C .形式参数声明D .函数体中的语句68. 已

27、有数据类型定义和变量声明如下:struct pers onint num;char n ame20, sex;struct int class; char prof20; in;a=20,Li ning, M , computer, *p= & a;下列语句中正确的是(B )。A . printf(%s, a-nname);B . printf(%s, p-in . prof);C. printf(%s, *);D . printf(%c, p-in-prof);69. 若有以下程序:int兀int f(i nt y)return 标识符;# in clude int w;mai

28、n()int z=2;f(z);则在函数f中return语句后允许出现的标识符是( B )。A . x 或 wB . x 或 yC. z 或 wD . NULL70 .以下跳转语句中,只有(_C_X可以选择不唯一的跳转目的地。A . continue;B . break;C. goto 标识符;D. return;71. 在缺省情况下,标准C的编译系统中预定义的标准输出流stdout直接连接的设备是(DJ。A .软盘B .硬盘C .键盘D .显示器72. 已有枚举类型定义:“ enum letterA, B, C=7, D, E;,以下表达式中除(D )外,其他表达式的机内值均等于10。A .

29、 xb -1B . B+EC. 010+2D. 0xf-373 .已知数据类型定义和变量声明如下:struct skint a; float b;data2, *p;若有p=data,则以下对data0中成员a的引用中错误的是(A )。A. data0-aB. data-aC . p-aD . (*p).a74 .已知有声明 “ char c= 1 ; int x=300; float t=35000; double d=3.1234567e1 则以下表达式 求值时除(D )外其结果都可能是不准确的。A . x=t/cB . t=d/xC . t=d/1e5fD . t = x + c75 .

30、已有预处理命令和声明如下:#define N 10int a=2, c=1;double b=1.2;下述程序段正确的是(C )。A . switch(a) case c:a-;break;case c+1: a+;break;B . switch(a) case N0: a=1;break;case 1: a=0;break;C . switch(a) case 2:b+;break;case 0b=3;D . switch(b) case 1.0: b+;break;case 1.2: b=1;break;76 .若有以下声明和定义:void fun(int c)pri ntf(%d, c

31、);mai n()void (*a) (int)=fun, *b(int), (*c) ( int );/ *调用fun函数语句位置*/void *b(i nt c) 如果在main函数中需要调用fun函数,以下调用语句中错误的是( C )。A . fun;B . (*a)(1);C . b=fun; (*b)(1);D . c=a; (*c)(1);77.以下叙述正确的是(A )。A 一个用C语言编写的程序在运行时总是从main函数开始逐条执行语句的B. ma in函数是系统库函数C. main函数中每行只能出现一条语句D . main函数必须出现在所有其他函数之前78以下关于函数形式参数的

32、声明中正确的是(A )。A . int aB .int a C. int a =0D .int a279. 关于函数返回值,以下叙述中正确的是(B )。A .函数返回值的类型由函数体内 return语句包含的表达式的类型决定B .函数返回值的类型由函数头部定义的函数类型决定C.若函数体中有多个 return语句,则函数的返回值是排列在最后面的return语句中表达式的值D .若函数体内没有return语句,则函数没有返回值80. 已知字符A的机内编码为65,则执行下列函数调用语句时,不能输出字符B的是 (B丄。A . putchar( B);B. putchar(B);C. putchar(6

33、6);D. putchar( x42 );81. 下列一维数组的声明中正确的是( C )qA .int a;B .int n=10, an;C. int a10+1=0;D .int a3=1, 2, 3, 4;82. 已知有结构类型定义:typedef struct exlong int num;char sex;struct ex*next;stude nt;下列叙述错误的是(B )。A . struct ex是结构类型B. student是结构类型的变量名C. ex可缺省D. student不可缺省83. 下列程序段的输出结果是( C )。int i, x33=9,8, 7, 6, 5,

34、 4, 3, 2, 1, *p=&x11;for(i=0;i4;i+=2)pri ntf(%d,*(p+i);A. 5 2B . 5 1C . 5 3D . 9 784. 已知有声明” chara6, *p=a; ”现需要在程序运行过程中将字符串 Hello,保存到a数 组中,则下列选项中能正确完成此操作的表达式是( D )。A. a6=HelloB. a=HelloC. p=HelloD. strcpy(a, Hello)85. 若要使表达式“p+无语法错误,则变量 p不能声明为(D )。A. int p;B. double p;C. int *p;D. structint x;p;86 .

35、以下函数定义中正确的是( C )qA .int fun (i nt a, b) B .int fun (i nt a)C .int fun (void)D .int fun (static int a, i nt b)87 .已知有函数f的定义如下:int f(int a, int b) if(ab)return(a, b);else return(b, a);在main函数中若调用函数f(2, 3),得到的返回值是(B )。A . 2B . 3C . 2 和 3D . 3 和 288 .下列各选项都是在C语言程字段中增加的注释,其中注释方法错误的是( B )qA . void mai n(/

36、*int argc, char, *argv */) B . void mai n()pri/*remark*/ ntf(n ame);C . void mai n() int x/*=10*/; prin tf(%d, x);D . void mai n() int x=10;/*printf( %d, x);*/89 .若有定义和声明typedef enu mgree n, red, yellow, blue, b1ackcolor; color flower;,则下歹 U语句中正确的是(B)qA . green=red;B . flower=red;C . color=red;D . enum=red;90若已定义一个有返回值的函数,则以下关于调用该函数的叙述中错误的是(D )A 函数调用可以作为独立的语句存在B函数调用可以出现在表达式中C 函数调用可以作为一个函数实参D函数调用可以作为一个函数形参91对应main函数中的fun函数调用语句,以下给出的四个fun函数首部中,错误的是(D )。mai n() int a50, n;fun(n, &a9);A void fun(i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论