C语言题库及答案(选择题) 下载本文

C.只有当实参和与其对应的形参同名时才共占用存储单元 D.形参是虚拟的,不占用存储单元 300若调用一个函数,且此函数中没有return语句,则正确的说法是:该函数()。 A.没有返回值

B.返回若干个系统默认值 C.能返回一个用户所希望的值 D.返回一个不确定的值

301.以下叙述中正确的是()。

A.全局变量的作用域一定比局部变量的作用域范围大

B.静态(static)类别变量的生存期贯穿于整个程序的运行期间 C.函数的形参都属于全局变量

D.未在定义语句中赋初值的auto变量和static变量的初值都是随机值 302.以下正确的说法是()。

A.用户若需调用标准库函数,调用前必须重新定义

B.用户可以重新定义标准库函数,若如此,该函数将失去原有含义 C.系统根本不允许用户重新定义标准库函数 D.用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调

303.若用数组名作为函数的实参,传递给形参的是()。 A.数组的首地址

B.数组第一个元素的值 C.数组中全部元素的值 D.数组元素的个数

304.以下正确的说法是()。

A.定义函数时,形参的类型说明可以放在函数体内 B.return后边的值不能为表达式

C.如果函数值的类型与返回值类型不一致,以函数值类型为准 D.如果形参与实参类型不一致,以实参类型为准

305.C语言允许函数类型缺省定义,此时函数值隐含的类型是()。 A.float B.int C.long D.double 306.C语言规定,函数返回值的类型是由()。 A.return语句中的表达式类型所决定 B.调用该函数时的主调函数类型所决定 C.调用该函数时系统临时决定

D.在定义该函数时所指定的函数类型所决定 307.以下错误的描述是:函数调用可以()。 A.出现在执行语句中 B.出现在一个表达式中 C.做为一个函数的实参 D.做为一个函数的形参

308.关于建立函数的目的,以下正确的说法是()。 A.提高程序的执行效率 B.提高程序的可读性 C.减少程序的篇幅

- 29 -

D.减少程序文件所占内存

309.以下只有在使用时才为该类型变量分配内存的存储类说明是()。 A.auto和 static B.auto和 register C.register和 static D.extern和 register

310.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是()。 A.函数调用可以作为独立的语句存在 B.函数调用可以作为一个函数的实参 C.函数调用可以出现在表达式中

D.函数调用可以作为一个函数的形参

311.当调用函数时,实参是一个数组名,则向函数传送的是()。 A.数组的长度 B.数组的首地址

C.数组每一个元素的地址 D.数组每个元素中的值

312.在C语言中,形参的缺省存储类别是()。

A.auto B.register C.static D.extern

313.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是 A.地址传递 B.单向值传递

C.由实参传给形参,再由形参传回实参 D.传递方式由用户指定

314.以下运算符中优先级最低的是()。

A.&& B.& C.|| D.|

315.在C语言中,要求运算数必须是整型或字符型的运算符是()。 A.&& B.& C.! D.|| 316.在C语言中,要求运算数必须是整型的运算符是()。 A.^ B.% C.! D.> 317.在位运算中,操作数每左移一位,其结果相当于()。 A.操作数乘以2 B.操作数除以2 C.操作数除以4 D.操作数乘以4

318.表达式,0x13&0x17的值是()。

A.0x17 B.0x13 C.0xf8 D.0xec 319.若a=1,b=2则 a|b的值是()。

A.0 B.1 C.2 D.3 320.以下叙述中不正确的是()。 A.预处理命令行都必须以#号开始

B.在程序中凡是以#号开始的语句行都是预处理命令行 C.C程序在执行过程中对预处理命令行进行处理 D.以下是正确的宏定义 #define IBM_PC

321.设char型变量x中的值为10100111,则表达式(2+x)^(~3)的值是()。

- 30 -

A.10101001 B.10101000 C.11111101 D.01010101 322.若要说明一个类型名STP,使得定义语句STP s等价于char *s,以下选项中正确的是()。

A.typedef STP char *s; B.typedef *char STP; C.typedef stp *char; D.typedef char* STP; 323.以下叙述中正确的是()。

A.在程序的一行上可以出现多个有效的预处理命令行 B.使用带参的宏时,参数的类型应与宏定义时的一致 C.宏替换不占用运行时间,只占编译时间

D.在以下定义中 C R 是称为\宏名\的标识符 #define C R 045 324.以下各选项企图说明一种新的类型名,其中正确的是()。

A.typedef v1 int; B.typedef v2=int; C.typedef int v3; D.typedef v4: int; 325.以下叙述正确的是()。

A.可以把define和if定义为用户标识符

B.可以把define定义为用户标识符,但不能把if定义为用户标识符 C.可以把if定义为用户标识符,但不能把define定义为用户标识符 D.define和if都不能定义为用户标识符 326.以下叙述中不正确的是()。 A.表达式a&=b等价于a=a&b B.表达式a|=b等价于a=a|b C.表达式a!=b等价于a=a!b D.表达式a^=b等价于a=a^b

327.设 int b=2;表达式(b>>2)/(b>>1)的值是()。

A.0 B.2 C.4 D.8 328.若x=2,y=3则x&y的结果是()。

A.0 B.2 C.3 D.5 329.整型变量x和y的值相等、且为非0值,则以下选项中,结果为零的表达式是 A.x || y B.x | y C.x & y D.x ^ y 330.下面说明不正确的是()。 A.char a[10]=\

B.char a[10],*p=a;p=\C.char *a;a=\

D.char a[10],*p;p=a=\

331.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是()。 A.c=*p1+*p2; B.p2=c; C.p1=p2;

D.c=*p1*(*p2);

332.设 char *s=\则指针变量s指向的字符串所占的字节数是()。 A.9 B.5 C.6 D.7

333.对于基本类型相同的两个指针变量之间,不能进行的运算是()。 A.< B.= C.+ D.-

334.若有以下的定义:int t[3][2];能正确表示t数组元素地址的表达式是()。

- 31 -

A.&t[3][2] B.t[3] C.&t[1] D.t[2] 335.变量的指针,其含义是指该变量的()。

A.值 B.地址 C.名 D.一个标志

336.若有语句int *point,a=4;和 point=&a;下面均代表地址的一组选项是()。 A.a,point,*&a B.&*a,&a,*point C.*&point,*point,&a D.&a,&*point,point 337.若有说明:int *p,m=5,n;以下正确的程序段是()。 A.p=&n;scanf(\B.p=&n;scanf(\C.scanf(\D.p=&n;*p=m;

338.若有说明:int *p1,*p2,m=5,n;以下均是正确赋值语句的选项是()。 A.p1=&m;p2=&p1

B.p1=&m;p2=&n;*p1=*p2; C.p1=&m;p2=p1; D.p1=&m;*p2=*p1;

339.下面判断正确的是()。

A.char *a=\等价于 char *a;*a=\

B.char str[10]={\等价于char str[10];str[]={\C.char *s=\等价于 char *s;s=\

D.char c[4]=\等价于 char c[4]=d[4]=\

340.若定义:int a=511,*b=&a;, 则printf(\的输出结果为()。 A.无确定值 B.a的地址 C.512 D.511 341.若有定义:int *p[3];,则以下叙述中正确的是()。

A.定义了一个基类型为int的指针变量p,该变量具有三个指针

B.定义了一个指针数组p,该数组含有三个元素,各元素都是基类型为int的指针 C.定义了一个名为*p的整型数组,该数组含有三个int类型元素

D.定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型 元素

342.下列选项中正确的语句组是()。 A.char s[8]; s={\B.char *s; s={\C.char s[8]; s=\D.char *s; s=\

343.若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是()。 A.p=q; B.*p=*q; C.n=*q; D.p=n; 344.在说明语句:int *f();中,标识符f代表的是()。 A.一个用于指向整型数据的指针变量 B.一个用于指向一维数组的行指针 C.一个用于指向函数的指针变量 D.一个返回值为指针型的函数名

345.若有定义:int aa[ 8];则以下表达式中不能代表数组元aa[1]的地址的是()。 A.&aa[0]+1 B.&aa[1] C.&aa[0]++ D.aa+1 346.若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是()。

A.i=*p; B.*p=*&j; C.i=&j; D.i=**p;

- 32 -