50615、 若有定义:int a=1,b=2,c=3,d=4,t=2,k=2; sql语句大全(t=a<

福建省计算机等级考试二级 C 语言选择题(2010 年 1 月)50100 在C语言中,合法的字符常量是(D) 。 A. '字' C.&ABC& B. &A& D.'\x41' 1150101 下面叙述正确的是(B ) 。 A. 程序中必须包含有输入
语句 存放数据 C.main 函数必须位于文件的开头 50102 错误的叙述是(D ) 。 1B. 变量按所定义的类型D.每行只能写一条语句A. 一个 C 语言源程序可由一个或多个函数组成 条语句较长,也可分写在下一行上 C.C 程序必须包含一个 main()函数 基本单元是算术表达式 50103(A )是关于 C 语言数据类型的正确叙述。 A. 变量必须先定义后使用 C.枚举类型不是基本类型 1B. 若一D.构成 C 语言源程序的B. 不允许使用空类型 D.数组并不是构造类型 1 B. 可以在自定义函数后面 D.必须在自定义函数后面 150104main( )函数的位置(B ) 。 A. 必须在自定义函数前面 C.必须位于程序的最前面50105C 语言函数体由(C )括起来。 A. & & B. ( )1 C.{ }D.[] 1 B. C 源程序的基本50106(A )是不正确的叙述。A. 注释说明只能位于一条语句的后面 组成单元是函数 C.C 源程序可由一个或多个函数组成 须有一个分号 50107 一个 C 语言源程序是由(B ) 。 A. 一个主程序和若干子程序组成 C.若干过程组成 1D.每条语句最后必B. 函数组成D.若干子程序组成 150108 结构化程序设计的三种基本结构是(C ) 。 A. 函数结构、判断结构、选择结构 构、函数结构 C.顺序结构、 选择结构、 循环结构 循环结构 50109C 源程序的调试是指对源程序进行(C ) 。 A. 录入与编辑 C.查错与排错 B. 查错与编译 D.连接与运行B. 平行结构、嵌套结D.判断结构、 嵌套结构、150110C 语言中,可将一系列语句置于(C )从而构成复合语句。 1 A. 一对尖括号&& &&之间 C.一对花括号&{}&之间 B. 一对圆括号&( )&之间 D.一对方框号&[ ]&之间 1250111 构成 C 源程序的基本单位是(D ) 。 A. 语句 C.运算符B. 变量 D.函数 150112 以下叙述中正确的是(A ) 。A. C 源程序中注释部分可以出现在程序中任意合适的地方 B. 一对花括号&{}&只能作为函数体的定界符 C.C 源程序编译时注释部分的错误将被发现 D.构成 C 源程序的基本单位是函数,所有函数名都可以由用户命名 50113 下面叙述正确的是(D ) 。 A. 每行最多只能写两条语句 函数 C.main()函数必须位于源程序文件的开头 须以分号&;&结束 50114 下面叙述错误的是(B ) 。 1 B. 构成 C D.所有语句都必 1 B. 程序中必需含有自定义A. 若一条语句较长,可分写在下一行或多行上 语言源程序的基本单位是语句 C.C 源程序中大、 小写字母是有区别的 由一个或多个函数组成 50115(C )是关于 C 语言数据类型的正确叙述。 A. 枚举类型不是基本类型D.一个 C 源程序可1B. 数组不是构造类型 D.不允许使用空类C.变量使用前应定义相应的数据类型 型 50116C 源程序中 main()函数的位置(C ) 。13 A. 必须位于程序的最前面 C.可以在自定义函数后面B. 必须在系统库函数后面 D.必须在自定义函数前面 150117C 语言的函数体由(B )括起来。 A. ( ) C.& & B. { } D.[ ] 150118 下面叙述错误的是(D ) 。A. C 源程序可由一个或多个函数组成 含一个 main()函数B. C 源程序必须包C.一个 C 源程序的执行是从 main()函数开始, 直到 main()函数 结束 D.注释说明部分只能位于 C 源程序的最前面50200C 语言的下列运算符中, 优先级最高的运算符是 (A ) 1 。 A. ++ C.|| B. += D.!= 150201(D)为正确的用户标识符。 A. struct C._f 0.6 B. 5f D._for50202C 语言基本数据类型包括(B ) 。 A. 整型、实型、逻辑型 C.整型、字符型、逻辑型 50203(A )为合法的常量。 A. 52686L C.1.2E-2.1 B. E-7 D.'E12'1B. 整型、实型、字符型 D.整型、实型、字符串型 14 50204(C )为正确的变量名。 A. -k15 C.k_5 B. int D.k.jeep150205(D )为正确的字符常量。 1 A. ''\\'' C.&c& B. &\24m& D.'M'50206(C )为非法的字符串常量。 1 A. & & C.'efg' B. &s& D.&26'62&50207C 语言整型数据在内存中的代码是用(C )表示的。 1 A. 原码 C.补码 B. 反码 D.BCD 码 150208 以下选项中,合法的实型常数是(B ) 。 A. E-3 C.1E.5 B. .2E1 D.1.5E50209 下列 C 语言合法的数据类型关键字是(B ) 。 A. Double C.integer B. unsigned D.Char150210Turbo C 中,int 型数据占用的字节数(B ) 。 1 A. 由用户自己定义 C.是任意的 B. 为 2 个字节D.等于所用计算机的字长50211Turbo C 中,基本数据类型存储空间长度的排列顺序是5 (A ) 。1 int&float&double B. char=int&longA. char&int&long int&float&double C.char&int&long int&float&doubleint=float=doubleD.char=int=long50212 以下叙述中正确的是(A ) 。1 B. 字A. 字符常量用一对单撇号' '作为单个字符的定界符 符常量和字符串常量一样,都是用双引号括起来C.字符常量存储时,自动在字符后加一个字符结束符号'\0' D.字符常量和字符串常量所分配的内存空间大小是一样的 50213(B)为正确的用户标识符。 A. 3_row C.union B. max_at D.min-5 1 150214C 语言的基本数据类型包括(A ) 。 A. 整型、实型、字符型 C.整型、字符型、指针型 50215(D )为合法的常量。 A. 5,326 C.'b_k' B. 3.21E-6.5 D.1.23E+8 1B. 整型、实型、空类型 D.整型、实型、逻辑型 150216(D )为正确的变量名。 A. 5_pro C.else B. case D.pro_56 50217(C )为正确的字符常量。 A. 'bcd' C.'@' B. '\084' D.'165'150218(A )为非法的字符串常量。 1 A. '123' C.&056& B. &case& D.& &50300 已知'A'的 ASCII 码的十进制值为 65, '0'的 ASCII 码的十 进制值为 48,则以下程序运行结果是(A ) 。 main() { char ch1,ch2; ch1='A'+'5'-'3'; ch2='A'+'6'-'3'; printf(&%d,%c\n&,ch1,ch2); } 1 A. 67,D C.C,68 B. C,D D.67,68 150301 若有定义 int m=6; 则正确的赋值表达式是( C) 。 A. m*7 C.m-=m*6 B. m*5=8 D.double(-m)50302 语句 k=(m=5,n=++m); 运行之后,变量 k、m、n 的值依 次为(D ) 。 A. 5,5,6 1B. 5,6,57 C.6,6,5D.6,6,650303 语句 x=5%4+(4/5); 运行之后,整型变量 x 的值为(A ) 。 1 A. 1 C.3 B. 2 D.0 150304(B )语句符合 C 语言语法。 A. float z=28,int x,y=18; C.int x=25:y=25:z=25;B. int x=25,y=25,z=25; D.int x+y=z;50305 若有定义 int a,x; 则语句 a=(x=8,x+8); 运行后,变量 a、 x 的值依次为(A ) 。 1 A. 16, 8 C.16, 16 B. 8, 8 D.8, 1650306 若变量 m, n, t 已定义且赋予初值,则正确的表达式是 (B ) 。 1 B. m=6+n+t,m++A. m=m+1=t-n C.m=m\2D.m=int(5.6%4)50307 若有定义:int a,b; float x,则以下不符合 C 语言语法的表 达式是(A ) 。 A. x%7 C.a=b=2 1B. x/=a-b D.x=(float)a/b50308 若有定义:int m=4,n=5;,则以下符合 C 语言语法 的表达式是(B ) 。 18 A. (m+n)*=k C.k=float(n)/mB. m=(n==5) D.n%2.550309 若有定义:int a=6; 则语句 a*=a-=a/=3; 运行后,a 的值 是(B ) 。 A. 10 C.34 1 B. 0 D.24 150310 下面关于 C 语言变量的叙述中,错误的是(A ) 。 A. 可以用 define 关键字定义变量 是有区别的 C.C 语言允许不同基本类型的变量之间进行混合运算B. 变量名用大小写字母D.C语言中要求对变量作强制定义的主要理由是: 便于确定类型和分 配空间 50311 若有定义: a=5,b=2; int 1 A. 5 C.3 B. 0 D.2 1 则表达式 b= (a!=5)的值为 (B ) 。50312 逗号表达式 (a=15,a*4),a+15 的值为(B ) 。 A. 15 C.75 B. 30 D.6050313 若有定义:int b=-15; 则(A )为正确的赋值表达式。 1 A. b+=b*3 C.*b=6 B. b=*5 D.b+10=-59 50314 若有定义:int x,a,b; 语句 x=(a=2,b=3,a+b); 运行后,x、 a、b 的值依次为(C ) 。 A. 2 C.5 3 2 5 3 B. 3 D.5 1 2 3 5 250315 若有定义:int a,b=5; 语句 a=(b/2)+b%2; 运行后,a 的值 为(B ) 。 A. 0 C.4 1 B. 3 D.2 150316(C )语句符合 C 语言语法。 A. int a=2,b+=a; C.float x=2.3,b,c; B. int a=b=2,c=5;D.float x=3.2,int i,j=6;50317 若有定义:int a=3; 语句 a+=a-=a*a; 运行后,a 的值为 (C ) 。 A. 0 C.-12 1 B. -3 D.-650318 若有定义 int x=1,y=2,n=3; 则 (A ) 为正确的表达式。 1 A. x=y*3,y=(x+n)/y C.float(y/n) B. x=nyD.(x+y)(y+n) 150400 下列语句中,符合 C 语言语法的赋值语句是(C ) 。 A. a=7+b+c=a+7; C.a=7+b,b++,a+7; B. a=7+b++=a+7; D.a=7=b,c=a+7; 150401(A )是正确的叙述。10 A. (int)5.0/6 与 5/6 等价 C.5/6 与 5.0/6.0 等价B. 'G' 与&G& 等价 D.++3 与 4 等价 150402 下面叙述中,错误的是(D ) 。A. C 语言中的表达式求值, 是按其运算符的优先级先高后低的 次序进行 B. 自增与自减运算符的结合方向为“自右至左” D.C 语言算术运C.关系运算符的优先级低于算术运算符 算符不包含模运算符“%” 50403(C )是正确的叙述。 1A. 表达式 &m&+&M& 是合法的 (a+b)++是合法的B. 若变量 x, y 为整型,则C.强制类型转换运算的优先级高于算术运算 * 'n' 是不合法的 50404 若 有 定 义 int i=1,j=9; (B ) 。 A. 0 C.9 1 B. 10 D.8D.表达式 'm'则 表 达 式 (++j)*(i--) 的 值 为50405 设整型变量 x 为 7, 使整型变量 y 不为 2 的表达式是 (A ) 。 1 A. y=x%3 C.y =(++x)/3 B. y = x/3 D.y=8-(--x)50406 若已定义 int a=3,b=2,c=1; 则语句 ++a||++b&&++c; 运 行后 b 的值为(D ) 。 111 A. 0 C.1B. 3 D.250407 若有定义:int i=5,j=4;则语句 i/=++j; 运行后 i 的值为 (B ) 。 A. 10 C.1.25 1 B. 1 D.050408 若已定义:int a=2,b=2; 则表达式 (a+(b++), b) 的值是 (B ) 。 A. 2 C.4 1 B. 3 D.650409 若有定义:int r,x=245; 则语句 r=x/100%9; 运行后 r 的 值为(A ) 。 A. 2 C.0 B. 5 D.27 则语句 t=3+(--i); 运行后 t 的值为 150410 若已定义:int i=6,t; (C ) 。 A. 9 C.8 1 B. 7 D.550411C 语言的 % 运算符按运算对象的个数属(C ) 。 A. 单目运算符 C.双目运算符 B. 四目运算符 D.三目运算符150412 若已定义: a=5,b=9,c=6; int则语句 b++; ++c; a=b-c; 运12 行后 a 的值为(B ) 。 A. 5 C.2 B. 3 D.4150413 下面叙述正确的是(B ) 。 A. 2/3 与 2%3 等价 C.++2 与 3 等价1B. 5/(int)4.0 与 5/4 等价 D.++2 与--3 等价 1 B.50414 下面叙述错误的是(A ) 。A. 算术运算符中只有&*&、&/&优先级高于关系运算符 模运算符&%&是 C 语言基本的算术运算符C.自加和自减运算符只能用于变量, 而不能用于常量或表达式 D.算术运算符中不包含&=&运算符 50415 下面叙述正确的是(A ) 。 1A. C 语言中整型与字符型变量的混合运算表达式的结果是整 型 B. (3+9)++ 是正确表达式C. 模 运 算 符 &%& 两 边 运 算 数 的 数 据 类 型 是 任 意 的 D.&abc&+&xxx&是正确表达式 50416 若有定义:int i=3,j=6; 则表达式(--i)*(j++)的值为(C ) 。 1 A. 18 C.12 B. 15 D.1050417 若有定义:int a,b=6; 语句 a=--b; 运行后,a、b 的值分别 是(C ) 。 113 A. 5 C.56 5B. 6 D.65 650418 若有定义:int x,y,z; 语句 x=(y=z=3,++y,z+=y); 运行后, x 的值为(C ) 。 A. 6 C.7 B. 8 D.3 150500 以下程序运行时,若从键盘输入 5,则输出结果是(D) 。 main(){ scanf(&%d&,&a); else printf(&%d\n&,a--); } 1 if(a++&5)printf(&%d\n&,a); A. 7 C.5 B. 4 D.650501 若已定义 要从键盘输入数据 36.582 给变量 x, 则应选用(B )语句。 A. scanf(&%2.3f&,&x) ; C.scanf(&%6.3f&,&x) ; 1 B. scanf(&%6f&,&x) ; D.scanf(&%5.3f&,&x) ;50502 若已定义 拟从键盘输入一个值赋给变量 y,则 正确的函数调用是(C ) 。 A. scanf(&%d&,&y) ; C.scanf(&%lf&,&y) ; 1B. scanf(&%7.2f&,&y) ; D.scanf(&%ld&,&y) ;50503 已有定义 使用 scanf( )函数输入一个字符给变量 s,不正确的函数调用是(D ) 。 A. scanf(&%c&,&s) ; 1B. scanf(&%d&,&s) ;14 C.scanf(&%u&,&s) ;D.scanf(&%lf&,&s) ; 150504 函数 putchar( ) 的功能是向终端输出(A ) 。 A. 一个字符 B. 多个字符 D.一个实型变量值C.一个关系表达式50505 若已定义 int a=11; 执行以下语句后的输出结果是 (B ) 。 printf(&a=%d,a=%o,a=%x\n&,a,a,a) ; 1 A. a=11, a=11, a=b C.a=11, a=13, a=c 50506 若 有 定 义 B. a=11, a=13, a=b D.a=11, a=12, a=13 int m=4321,n=123,k=21; 语 句printf(&%4d+%3d+%2d&,m,n,k); 执行后的输出结果是(C ) 。 1 A. 1 C. D.432+123+021 char c1,c2; B. 50507 已 有 如 下 定 义 和 输 入 语 句 , scanf(&%c%d%c&,&c1,&x,&c2);若要求 x、c1、c2 的值分别 1为 9、'K'和'H',正确的数据输入是(A ) 。 A. K9H C.K9 H B. K 9 HD.9KH int a=1;50508 以 下 程 序 段 的 运 行 结 果 是 ( A ) 。 printf(&%d, %d, %d\n&, a, ++a, a++); A. 3,3,1 C.1, 2, 3 B. 1, 2, 2 D.3, 2, 1 115 50509 以下程序的运行结果是(D ) void main() { int a=65; 。 char c='A'; A. A+A=AA C.65+65=130 printf(&%d+%c=%d\n&,a,c,a+c); B. 65+A=65A D.65+A=130 } 150510 若已定义: x=7;float y=7.0; 以下语句中能输出正确值 int 的是(B ) 。 1 B. printf(&%d %.3f&,x,y); D.printf(&%.3f %d&,x,y); 1A. printf(&%d %d&,x,y); C.printf(&%.3f %.3f&,x,y);50511putchar 函数可以向终端输出一个(A ) 。 A. 字符或字符型变量值 C.实型变量值 D.字符串B. 整型变量表达式值50512 若已定义:int a=6;float b=1.5; 要求输出形式为: 6 * 1.50=9.00 ,应选用的正确输出语句是(B ) 。 A. printf(&%d * %f=%f&,a,b,a*b); 1 B. printf(&%d* %.2f=%.2f&,a,b,a*b); C.printf(&%d * %d=%.2f&,a,b,a*b); D.printf(&%.2f* %.2f=%.2f&,a,b,a*b); 50513 若有定义 选用(D )语句。 1 B. scanf(&%1.2f&,&x); D.scanf(&%f&,&x); 116要从键盘输入数据 6.02 赋给 x,则应A. scanf(&%8.2f&,&x); C.scanf(&%4.2f&,&x);50514 只能向终端输出一个字符的是(D ) 。 A. printf()函数 C.getchar()函数B. scanf()函数 D.putchar()函数50515 若有语句 scanf(&%3d%c&,&a,&c); 为将整 数 135 赋给 a, 字符'6'赋给 c, 正确的数据输入方式是 (B ) 。 (说 明:&CR&代表换行,__代表空格) 1 A. 135__6&CR& C.135&CR&6&CR& B. 1356&CR& D.135__6__ 150516getchar()函数的功能是获取终端输入的(B ) 。 A. 多个字符 B. 一个字符 D.一个整型变量表达式C.一个实型变量值50517 若有定义 int a=8,b=5; 要实现输出形式为: 8*5=40 , 正 确的 printf()函数调用语句是(D ) 。 A. printf(&a*b=%d\n&,a*b); C.printf(&%d*%d=a*b\n&,a,b); D.printf(&%d*%d=%d\n&,a,b,a*b); 50518 若 有 定 义 :char c1='A',c2='B'; 语 句 1B. printf(&a*b=a*b\n&);printf(&%d+%d=%d&,c1,c2,c1+c2);运行后的结果为(D )(说 。 明:'A'的 ASCII 码的十进制值为 65) A. A+B=131 C.A+B=AB B. 65+66=AB D.65+66=131 main() { while((c=getchar())!= case 1 :17150600 有以下程序: '\n'){ switch(c-'2'){ case 0 : putchar(c+4); case 3 : putchar(c+3); } }case 2 : putchar(c+4); default: putchar(c+2); 当输入:247&回车&,printf(&\n&); } 1程序的输出结果是(B ) 。 A. 689 C.66778 B. 6689 D.6688750601 若已定义 int x=5,y=9,z; 语句 z=x&=y; 运行后 z 的值为 (C ) 。 A. 1 C.0 1 B. .t. D..f. 150602 判定逻辑值为“真”的最准确叙述是(D ) 。 A. 1 B. 大于 0 的数 D.非 0 的数C.非 0 的整数50603 若已定义 int x=-16,y=-12,z; 语句 z=x&=y; 运行后 z 的值 为(D ) 。 A. .t. C..f. 1 B. 1 D.050604 能正确表示数学关系式 100≤s<300 的表达式为(C ) 。 1 A. (s&=100) & (s&300) C.(s&=100) && (s&300) B. 100&= s&300 D.(s&=100) and (s&300) 11850605 若定义 int a=2,b=3; 则表达式 !a||b 的值为(B ) 。 A. 0 C.2B. 1 D.350606 若定义 int a=-5,b=-8,c=-12; 则表达式 a&=b||b&c 的值为 (D ) 。 1 B. 变量 j 的值A. 变量 i 的值 C.0 D.150607 下列表达式(C )不能用来判断整型变量 x 中的值是否为 奇数。 1 B. !(x%2==0) D.x%2A. x%2==1 C.!(x%2)50608 若有定义:int a=3,b=2,c=3; 则值为 0 的表达式是(D ) 。 1 A. (a-b)==(c/b) B. a&=c D.(b*c-a-c)&&(b*c-a-b)C.c-b||a+b&&(b*c-a-c)50609 若已定义:int x=4,y=2,z=0; 则表达式 (x-y&=y)|| (y=z)的 值是(A ) 。 A. 1 C.2 B. 0 D.4 150610 若有定义:int a=3,b=2,c=1,k; 则表达式 k=a&b&c 的值是 (B ) 。 A. 0 C.2 1 B. 1 D.319 50611 以下运算符中优先级最高的是(D ) 。 A. &= C.|| B. && D.!150612 执 行 以 下 语 句 后 , b 的 值 是 ( A a=5,b=6,c=1,x=2,y=3,z=4; A. 0 C.-1 B. 1 D.6 (a=c&x) || (b=y&z); 1) 。int50613x 的值在-20 至-5 之间为“真” ,否则为“假”的正确逻辑 表达式为(B ) 。 A. -20&x&-5 1 B. x&-20 && x&-5 D.-5&x&-20C.!(x&-20) && !(x&-5)50614 若有定义: 则表达式(B )不能用来判断 a 值为奇 数是“真” ,偶数是“假” 。 A. a%2==1 C.a%2 50615 B. !(a%2) D.!(a%2==0) a=1,b=2,c=3,d=4,t=2,k=2; 1 语 句 1若 有 定 义 : int(t=a&b)||(k=c&d); 运行后,k 的值为(A ) 。 A. 2 C.0 B. 1 D.-150616 若有定义: x=1,y=2,z=3; 则表达式 int (A ) 的值为 0。 1 A. !((x&y) && z) C.x&=y B. x&y || x&zD.x|| (y+z && y-z)20 50617 若有定义: int a=3,b=5,c=8; 则表达式 !(a-b) || (c-b) 的值 为(A ) 。 A. 1 C.2 1B. 0 D.350618 若有定义: 且表达式 !a 的值为 0,则表达式(A ) 的值为 1。 A. a!=0 C.a=0 1 B. a==0 D.!(a&0 || a&0) main() { int a,b;50700 以下程序运行后,a 的值是(C ) 。 for(a=1,b=1;a&=100;a++) if(b%3==1) { b+=3; } A. 101 C.8 B. 100 D.7 { b-=5;if(b&=20) } } 150701 已定义 double k=3.6; 1 A. k=double(-3.6) C.k=k*(-1.0)=-3.6 B. k%3则正确的赋值表达式是(D ) 。D.k+=k-=(k=1.2)*(k=3) 150702 已定义 char c = 'A' ; 则正确的赋值表达式是(B ) 。 A. c=\028 C.c+1=66 B. c=(c++)%4 D.c+=127--50703 已定义 int m ='A'; 则正确的表达式是(C ) 。 1 A. 2*m=m++ B. m=int(-3.2)21 C.m%3D.m=m-m=m-550704 设已定义 float a=2.0,b=3.0; 使 a 值为 5.0 的表达式是 (A ) 。 A. a+= b C.a/=b+2.0 1 B. a*=b+2.0 D.a-=b+2.050705 若已定义 int m=7;float k=5.5; 则表达式 k+ m%2/4 的 值为(D ) 。 A. 6.375 C.5.75 50706 1 B. 6.75 D.5.5 若 已 定 义 int a=3,b=3,x=1,y=2; 表 达 式(a=y&x)&&(x=b&a) 的值是(D ) 。 1 A. 6 C.9 B. 1 D.050707 若有定义:int a=2,b=3; float x=5; 则表达式 x*b/a 的值是 (A ) 。 A. 7.5 C.6 1 B. 7 D.550708 若有定义:int x=8; float y=130;char z='A'; 则表达式 x+z%(int)y 的值是(C ) [已知'A'的 ASCII 码的十进制值为 。 65] 1 A. 运行时产生错误信息 C.73 D.8.522B. 8 50709 若已定义:int m=7,n=4; float x=3.0,y=8.0,k; 则执行语句 k=m/2+n*x/y;后,变量 k 的值是(C ) 。 A. 3 C.4.5 B. 4 D.5 150710 若有定义: float x=2,y=4,h=3; 下列表达式中与(x+y)*h/2.0 计算结果不相符的是(C ) 。 A. (x+y)*h/2 C.(1/2)*(x+y)*h 1B. (x+y)*h*1/2 D.h/2*(x+y) 150711 表达式 2+sqrt(16.0)/4 结果的数据类型是(A ) 。 A. double C.char B. int D.void50712 若有定义:int a=4,b=5,c=6; 则表达式 (1.0*a+b)/c 的值是 (A ) 。 A. 1.5 C.4 1 B. 1 D.4.5 150713 下列运算符中优先级最低的是(A ) 。 A. = C.& B. ! D.*50714 若有定义:float x=3.5,y=3.6; 则表达式(A )的值为 6。 1 A. (int)x+(int)y C.(int)(x+y) B. x+y D.int(x+y)23 50715 若有定义: char c='A'; 则正确的赋值表达式是 (A )(说明:'A'的 ASCII 码的十进制值为 65,'a'的 ASCII 。 码的十进制值为 97) A. x=c+32 C.x=c+'CBA' 1B. x=c+'ABC' D.x='ABC' 语句 y=1*(x+a)/3; 运行50716 若有定义:float x=2,y; int a=3; 后,y 的值为(D ) 。 A. 2.0 C.1.0 B. 0 D.1.50717 若有定义: float x=3.5,y=5.5; 则表达式 (B ) 的值为 2。 1 A. (x+y)%7 C.int(x+y)%7 B. (int)(x+y)%7 D.(int)x+y%7 语 句 (k=a&b) && 150718 若 有 定 义 : int a=6,b=7,k=0,t=1;(t=a==b); 运行后,k、t 的值分别是(D ) 。 A. 0 C.0 0 1 B. 1 D.1 0 150800 以 下 程 序 段 的 运 行 结 果 是 ( D ) 。 do{ A. 1 printf(&%3d, &, x-=2 ); }while(!(--x)); 1 B. 30 D.1, -2int x=3;C.死循环50801 以下程序运行时,若从键盘输入 6,则输出结果是(A ) 。 void main() { scanf(&%d&,&x); if (x--&6)24 printf(&%d\n&,x); A. 4 C.6 B. 5 D.3elseprintf(&%d\n&,--x); }150802 以下程序的运行结果是(C m,n=1,t=1; if(t== 0) } 1 t=-t;) 。 elsevoid main(){intm=n&=0?7:3;printf(&%d\n&,m); A. 3 C.7 B. -1 D.150803 对于整型变量 a,赋值语句 a=(a%3==0?1:0); 与(D ) 语句不等价。 1 B. if (a%3!=0) a=0; else a=1;A. if (a%3= =0) a=1; else a=0; C.if (a%3) a=0; else a=1;D.if (a%3) a=1; else a=0;50804 以下程序运行的结果是 (B ) void main() {int x,y,z,a; 。 x=y=z=1;a=15; a=3; A. 15 C.19 else B. 3 D.14 if(!x) a+=4; a--; else if(y) 1 ; if(z)printf(&%d\n&,a); }50805 若已定义 int a=1,b=2,t=3; 则执行以下程序段后变量 a, b,t 的值分别为(A ) 。 a=t; } 1 B. a=2,b=1,t=1 D.a=3,b=1,t=225if(a&b){ t=b; b=a;. a=2,b=1,t=2 C.a=2,b=1,t=3 50806 以下程序段运行后变量 k 的值为 (C ) int a=3,b=2; int 。 k=(--a==b++)?a:b+1; A. 0 C.2 B. 1 D.3 void main() { int &,n++); case 6: &,n); } } 150807 以下程序的运行结果是(C ) 。 n=9; case 8: printf(&%d 1 A. 8 C.8 9 B. 7 D.8 7 switch(n--){ default: printf(&%d &,n);case 7: printf(&%d &,n++);case 5: printf(&%d50808 以下程序的运行结果是(C ) 。 switch(n--) { default: printf(&%d &,n);void main() { int n=8; &,n++); case 8:case 6: printf(&%d &,n++); A. 8 C.7case 4: printf(&%d &,n); } } 1case 2: printf(&%d B. 8 D.8 6 750809 以下程序的运行结果是(D ) 。 void main( ) if(a=6) printf(&%d\n&,a+2); printf(&%d\n&,a); else B. 9 else{ if(a&6) 1printf(&%d\n&,a+3); }A. 运行时产生错误信息 C.8 D.626 50810 若有定义:int x=10,y=8,a; 则执行语句 a=((--x==y)? x: y); 后,变量 a 的值是(A ) 。 .8 C.10 B. 9 D.0 则以下程序段的运行结果是 printf(&%d printf(&%d &,c); &,a); 1 150811 若有定义: int a=2,b=3,c=1; (D.) 。 else A. 3 C.3 1 D.1 if(a&b) printf(&%d B. 2 1 if(a&c) &,b);50812 以下条件语句中(其中 s1 和 s2 分别表示 C 语言的语句), (D )与其他三条语句不等价。 A. if(a) s1; else s2; C.if(a != 0) s1; else s2; 1B. if(a == 0) s2; else s1; D.if(a == 0) s1; else s2;50813 以下程序段运行时, 若从键盘输入 5, 则运行结果是 (D ) 。 int a,y=10; scanf(&%d&,&a); if (a&10) y=a+6;printf(&%d\n&,y+a); 1 A. 10 C.16 B. 11 D.15 void main() {int50814 以 下 程 序 的 运 行 结 果 是 ( B ) 。 a,b=2,c=6; b=a+c; A. 5 else B. 8 a=3; if(a&6) a=b+c;a=a+b;else if(a==6) 1printf(&%d\n&,a); }27 C.6D.950815 若有定义:int x,a; 赋值语句 a=(x%3==0)?0:1; 与(B ) 语句不等价。 1 B. if (x%3) a=0; else a=1; D.if (!(x%3==0)) a=1; else a=0; int s=15; switch(s/4)A. if (x%3!=0) a=1; else a=0; C.if (x%3==0) a=0; else a=1;50816 以下程序段的运行结果是 (C ) 。 {case 1: case 3: &); } 1 B. Two Over D.One Over printf(&One &); printf(&Three &);case 2: default:printf(&Two &); printf(&OverA. Three C.Three Over50817 以下程序段的运行结果是 (C ) 。 {default: A. Two C.Over One printf(&Over &); case 2:int s=15;switch(s/4)case 1: 1printf(&One &);printf(&Two &); }B. Over Two D.One int a=3,b=6,x;50818 以下程序段运行后 x 的值为(D ) 。 x=(a==b)?a++:--b; 1 A. 4 C.6 B. 3 .550900 下列程序段中,非死循环的是(A B ) 。 A. int i=100; while(1) { i=i%100+1;1 if(i&=100)28 }B. int k=0;do{++k;}while(k&=0);C.int s=10;while(++s%2+s%2) s++;D.for(;;) 150901 若已定义 不会产生死循环的语句是(C ) 。 A. for( ; ;a+= 2); B. for(a=10; ;a--); D.while(-1) {a++;}C.for( ;(a=getchar())!= '\n'; );50902 在循环语句的循环体中,break 语句的作用是(B ) 1 。 A. 继续执行 break 语句之后的循环体各语句 循环,接着执行该循环后续的语句 C.结束本次循环 D.暂停程序的运行 B. 提前结束50903 以下程序段运行后,循环体中的 n+=3; 语句运行的次数 为 (A ) int i,j,n=0; for(i=1;i&=3;i++) 。 {n+=3; A. 6 次 C.12 次 printf(&%d\n&,n); B. 9 次 D.1 次 1 } {for(j=1;j&=i;j++) } 150904do?while 循环与 while 循环的主要区别是(D ) 。A. while 循环体至少无条件执行一次,而 do?while 循环体可 能都不执行 B. do?while 循环体中可使用 continue 语句,while 循环体中不允许出现 continue 语句 C.do?while 循环体中可使用 break 语句,while 循环体中不允 许出现 break 语句 D.do?while 循环体至少无条件执行一次,而 while 循环体可能都不执行 50905 以下程序段运行后, 循环体运行的次数为 (A ) 。 int29 i=8,a=0; A. 0 次 C.8 次for ( ;i&8;i++) B. 1 次 D.无限a+=150906 以下程序段运行后变量 a 的值为 (C ) 。 for( ;i&3;i++) A. 6 C.0 B. 3 D.5 void main() switch(i) { a+=i;int i=1,a=0; } 150907 有 以 下 程 序 : for(i=1; i&=3; i++) 1: printf(&%d&, i); printf(&%d&, i); i); A. 1223 C.111223 } B. 1 D.123 }{ { casecase 2: default : printf(&%d&, 执行后输出结果是(A ) 。 150908 以 下 程 序 的 运 行 结 果 是 ( C ) 。 {int s = 0, i = 0; if(i%2==0) printf(&%d\n&,s); A. 36 C.16 B. 7 D.12 } while(i& 8) 1void main() {i++; s+=i; }50909 以下程序的运行结果是 (A ) 。 s = 0, i = 0; while(i& 10)void main() {i++;{int if(i %30 2==0) printf(&%d\n&,s); A. 20 C.25 B. 30 D.45 } 1s +=}50910 以下程序的运行结果是 (C ) 。 x = 5; while(!x); A. 5 4 3 2 1 C.5 D.4 do } 1 B. 4 3 2 1 0 {void main(){int }printf(&%2d&, x--);50911 以下程序的运行结果是(D ) 。 i,j, k=0; k += i * A. 19 C.6 B. 29 D.25 for(i= 3;i&=1;i--) }void main() {for(j=i;j&=3;j ++) } 1{intprintf(&%d\n&, k);50912 以下程序运行时,循环体的执行次数是(C ) 。 main() {int i,j; } 1voidfor(i=0,j=1;i&=j+1;i=i+2,j--)printf(&%3d&, i); A. 3 C.1 B. 2 D.050913 若有定义: int i,x; (A )不是死循环。 A. for(x=5;x&0;x--) ; C.for(i=10; ;i--) ; B. while(x=1) ; D.for( ; ;i+=2) ;131 50914 下面叙述正确的是(D ) 。1 B. for 循环A. for 循环只能用于循环次数已经确定的情况 是先执行循环体语句,后判断表达式 C.在 for 循环中,不能用 break 语句跳出循环体D.for 循环的循环体可包含多条语句,但必须用花括号{ }括起来 50915 以 下 程 序 段 运 行 后 x 的 值 为 ( B ) 。 for(i=3;i&=1;i--) A. 14 C.8 B. 12 D.10 int i=0,x=2; for(j=1;j&=i;j++) x=x+2; int i,j,x=0; 150916 以 下 程 序 段 运 行 后 x 的 值 为 ( C ) 。 while(i++&=5) A. 10 C.12 B. 14 D.8 {x+=2; } 150917 若有定义: int i,x=0; 语句 for(i=1;i&=3;i++) x+=2;与下列 (B )程序段不等价。 A. i=1; B. i=1; for( ; ;i++) x+=2; C.for(i=1;i&=3; ) for( ;i&=3; ) {x+=2; i++; } ) 。 int i=0,x=0; {x+=2; i++;} D.i=1; 1 for( ;i&=3;i++) x+=2;50918 以下程序段运行后 x 的值为(D for(;i&=5;i++,i++) A. 15 B. 6 {x+=3;} 132 C.12D.951000 设已定义 char s[ ]=&\&Name\\Address\023\n&;,则字符串 所占的字节数是(B ) 。 A. 19 C.18 B. 16 D.14 1 B. 字符串常量 151001 数组元素下标的数据类型为(A ) 。 A. 整型常量、字符型常量或整型表达式 C.实型常量或实型表达式D.任何类型的表达式 151002(B )是正确的数组定义。 A. int n=10,x[n]; C.int N=10;int x[N]; B. int x[10];D. scanf(&%d&,&n);int x[n];51003 若已定义 int arr[10]; 则不能正确引用 arr 数组元素的是 (D ) 。 A. arr[0] C.arr[10-1] 1 B. arr[1] D.arr[7+3]51004 若已定义 int x[4]={2,1,3}; 则元素 x[1]的值为(C ) 1 。 A. 0 C.1 B. 2 D.351005 以下程序段运行后, x[1]的值为 (B ) int x[5]={5,4,3,2,1}; 。 x[1]=x[3]+x[2+2]-x[3-1]; 1 A. 6 C.1 B. 0 D.533 51006(A )是合法的数组定义。 A. char str[ ]={48,49,50,51,52,53}; C.int a[ ]=&string&; 51007 若有以下程序: &ajskdl&,r[10]; (D ) 。 1 r=s;1 B. int a[5]={0,1,2,3,4,5};D.char str[ ]=‘string’; void main( ) {char s[10]= } 则printf(&%s\n&,r);A. 执行时输出:ajskdl C.执行时输出:ajB. 执行时输出:aD.编译不通过 int51008 下 面 程 序 段 的 运 行 结 果 是 ( C ) 。 m[]={5,8,7,6,9,2},i=1; do{ for(i=0;i&6;i++) A. 7 10 9 C.5 10 9 m[i]+=2; printf(&%d 8 11 4 8 11 2 &,m[i]); 9 8 9 8}while(m[++i]&5); 1 11 2 11 4 intB. 7 10 D.5 1051009 下 面 程 序 段 的 运 行 结 果 是 ( A ) 。 m[]={5,8,7,6,9,2},i=1; m[i]+=10; &,m[i]); 1 16 6 9 19 12 2 B. 15 D.5 18 17 16 19 12 8 7 6 1 9 2 } for(i=0;i&6;i++) for(i=0;i&6;i++){if(i % 2 !=0) printf(&%dA. 5 18 7 C.15 8 1751010 下面关于数组的叙述中,正确的是(A ) 。A. 定义数组后,数组的大小是固定的,且数组元素的数据类34 型都相同B. 定义数组时,可不加类型说明符C.定义数组后,可通过赋值运算符&=&对该数组名直接赋值 D.在数据类型中,数组属基本类型 51011 以下程序段的运行结果是 (C) 。 j=1; j=j*3; &,a[i]); 1 A. 3 6 9 12 C.27 18 9 4 B. 18 12 9 4 D.54 18 9 4 1 B. 不 for(i=3;i&=0;i--) } for(i=0;i&4;i++) int a[]={1,2,3,4},i,j; {a[i]=a[i]*j; printf(&%d51012 下面关于字符数组的叙述中,错误的是(A) 。 A. 可以通过赋值运算符“=”对字符数组整体赋值 可以用关系运算符对字符数组中的字符串进行比较 C.字符数组中的字符串可以整体输入、 输出 以存放字符串D.字符数组可51013 若有定义: a[10],i=2; 能正确引用 a 数组元素的是 int (B) 。 1 A. a[9+i] C.a[10] B. a[10-i] D.a(7) 151014(A)是正确的数组定义。 A. int arr[10]; C.int N=5, arr[N];B. int n=5; int arr[n]; D. n=5; int arr[n]; 无法正确引用 arr 数组元素3551015 若有定义:int arr[15],n=5; 的是(C ) 。 A. arr[0] C.arr[10+n]1 B. arr[n] D.arr[15-n] int x=x+a[i];51016 以 下 程 序 段 运 行 后 x 的 值 为 ( B )。 a[8]={1,2,3,4,5,6,7,8},i,x=0; 1 A. 36 C.20 B. 16 D.18 for(i=0;i&8;i++,i++)51017 以 下 程 序 段 运 行 后 x 的 值 为 ( A )。 a[8]={1,2,3,4,5,6,7,8},i,x=0; 1 A. 20 C.18 B. 16 D.36 1 for(i=1;i&8;i++,i++)int x=x+a[i];51018 下面叙述错误的是(C) 。A. 数组中每一个元素都属于同一个数据类型 组名称是数组在内存中的首地址 C.C 语言数组长度在定义数组时可不作确定 可逐个引用数组元素但不能一次引用整个数组 51100 以下程序段的运行结果是(D) 。 j=i; pic(i+2*j-2,'*'); putchar('\n'); main()B. C 语言数D.C 语言规定{ int i=4,j;for(j-=2;j&=0;j--) } }{ pic(3-j, ' '); pic(int len,char c)pic(i+2*j, '*'); {putchar('\n');for(k=1;k&=k++)36 putchar(c); } A. * ********** C.**** D.**********1 *** ***** ******* B. ******************** ****** ****************** ******** ****** **** int **********51101 以 下 程 序 段 执 行 后 输 出 的 结 果 是 ( D ) 。a[][4]={1,2,3,4,5,6,7,8,9,10,11,12}; printf(&%d\n&,a[1][2]); 1 A. 2 C.6 B. 3 D.7 int51102 以 下 程 序 段 执 行 后 p 的 值 是 ( ? ? ) 。 a[3][3]={3,2,1,3,2,1,3,2,1}; for(k=j;k&4;k++) p*=a[j][k]; A. 108 C.12 B. 18 D.2 1 int j,k,p=1; 1for(j=0;i&2;i++)51103 不能对二维数组 a 进行正确初始化的语句是(A) 。 A. int a[3][2]={{1,2,3},{4,5,6}}; B.inta[3][2]={{1},{2,3},{4,5}}; C.int a[][2]={{1,2},{3,4},{5,6}}; D.int a[3][2]={1,2,3,4,5};51104 若有定义:int s[3][4]={{1,2},{0},{3,4,5}};则 s[2][1]的值为 (B) 。 A. 3 C.0 1 B. 4 D.137 51105 若有定义:int a[3][4];则表达式&a[2][1]-a 的值为 (C) 1 。 A. 7 C.9 B. 8 D.10 int51106 以下程序段运行后 sum 的值为 (D) int k=0,sum=0; 。 a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; sum+=a[k][k+1]; A. 9 C.19 B. 18 D.21 1for(;k&3;k++)51107 若有定义 int a[2][3];则合法引用数组元素的是(A) 。 A. a[0][1/2] C.a[2][3] B. a[2][1] D.a[1][3] 1151108 在以下数组定义中,错误的是(A) 。 A. int a[2][]={1,2,3,4,5}; C.int a[2][2]={{1,2},{3}};B. int a[][2]={{0},{1}}; D.int a[][2]={1,2,3,4};51109 若定义 int a[][4]={1,2,3,4,5,6,7,8};则表达式 sizeof(a[0][1]) 的值为(B) 。 A. 1 C.3 B. 2 D.4 int 151110 以 下 程 序 段 运 行 后 s 的 值 是 ( C ) 。 a[3][3]={1,2,3,4,5,1,2,3,4}; for(j=i+1;j&3;j++) A. 6 B. 120 int i,j,s=1; s+=a[i][j]; 1for(i=0;i&3;i++)38 C.7D.24051111 设已定义: int a[][4]={0,0,0}; 则下列描述正确的是(C) 。 1 A. 数组 a 包含 3 个元素 C.数组 a 的行数为 1 B. 数组 a 的第一维大小为 3 D.元素 a[0][3]的初值不为 051112 在 C 语言中,若定义二维数组 a[2][3],设 a[0][0]在数组中 位置为 1,则 a[1][1]在数组中位置是(C) 。 A. 3 C.5 B. 4 D.6 int 151113 以 下 程 序 段 的 运 行 结 果 是 ( A )。 t[][3]={1,2,3,4,5,6,7,8,9,10,11,12}; printf(&%d\n&,t[1][1]); 1 A. 5 C.4 B. 3 D.151114 以 下 程 序 段 运 行 后 s 的 值 是 ( B )。 a[3][3]={1,2,3,1,2,3,1,2,3}; for(j=i;j&3;j++) A. 13 C.15 B. 14 D.12 int i,j,s=0; 1intfor(i=0;i&3;i++)s+=a[i][j];51115 以下(C)对二维数组 arr 的初始化是错误的。 1 A. int arr[2][3]={{1,2},{3,4}}; C.int B. int arr[][3]={1,2,3,4,5}; D.intarr[2][3]={{1,2},{3,4},{5,6}};arr[2][3]={{1},{3,4,5}};39 51116 若有定义:int a[3][4]={{1,2},{3,4},{5,6,7}}; ,则 a[1][1]的 值为(A) 。 A. 4 C.1 1B. 2 D.351117 若有定义:int a[3][2]; ,则表达式&a[2][1]-a 的值为(A) 。 1 A. 5 C.3 B. 4 D.2 int i=0,x=0; x+=a[i][i]; 1 int51118 以下程序段运行后 x 的值为(C) 。 a[3][3]={1,2,3,4,5,6,7,8,9}; for (;i&3;i++) A. 0 C.15 B. 12 D.1851200 设有下列语句,则(D)是对 a 数组元素的不正确引用, 其中 0≤i&10。 A. a[p-a] C.p[i] int a[10]={0,1,2,3,4,5,6,7,8,9}, *p=a; B. *(&a[i]) D.*(*(a+i)) 151201 设 已 定 义 : char s1[8],s2[8]=&Science&; 能 将 字 符 串 &Science&赋给数组 s1 的语句是(C) 。 A. s1=s2; B. strcpy(s2,s1); D.s1=&Science&; char str[3][2]={ 'a', printf(&%s&,str[0]);401C.strcpy(s1,s2);51202 以下程序段的运行结果是(A) 。 'b', 'c', 'd', 'e', 'f'}; str[2][0]= '\0'; 1 A. abcd C.abcd0 B. ab D.abcd0f char str[10]={ &National&}; 1 则分配给51203 有如下定义:数组 str 的存储空间是(B)个字节。 A. 11 C.9 B. 10 D.851204 以下程序段运行后输出结果是 (C) char a[]=&country&; 。 char b[]=&game&; A. n C.e B. u D.m char strcpy(a,b); printf(&%c&,a[3]); 151205 以 下 程 序 段 运 行 后 输 出 结 果 是 ( A ) 。 s[]=&info\0mis&; A. 4 C.8 B. 5 D.9 int a=2; printf(&%d&,strlen(s)); 151206 以下程序段运行后 a 的值为(D) 。 s1[]=&passion&,*s2=s1; a=strcmp(s1,s2); A. -1 C.1 B. 2 D.0 1char51207 以下对 C 语言字符数组描述中,错误的是(B ) 1 。 A. 可以用 strlen 函数计算字符数组中字符串的长度 以在赋值语句中通过赋值运算符&=&对字符数组整体赋值41B. 可 C.存放在字符数组中的字符串,以'\0'作为该字符串结束标志 D.字符数组可以存放字符串或字符 51208 以 下程序段 运行后 ,屏幕的输 出结果是 ( B) 。 str[80];strcpy(str,&computer&);printf(&%d&,strlen(str)); A. 7 C.9 B. 8 D.80 1 char51209 若有定义: char str1[6]=&ABCDE&,*ps,*str2=&FEDCBA&; (C)是错误的。 1 A. strcpy(str2,str1); C.str1=str2; 51210 已有定义 B. 表达式 strcmp(str1,str2)的值小于 0D.表达式 strlen(str1)的值为 5 char str1[15]={&computer&},str2[15]; 1 则语句用法正确的是(C) 。 A. str2=str1;B. str2=&science&; D.printf(&%s&,&str1); 若C.scanf(&%s&,str2);51211 设已定义: char str1[20]=&Hello &,str2[20]=&world!&; 要形成字符串&Hello world!&,正确语句是(B) 。 A. strcpy(str1,str2); C.strcpy(str2,str1); B. strcat(str1,str2); D.strcat(str2,str1); 151212 若有字符数组 a[80]和 b[80], 则以下输入语句正确的是 (C) 1 A. gets(a,b) B. scanf(&%c%c&,&a,&b); D.gets(&a&),gets(&b&);42C.scanf(&%s%s&,a,b) 51213 若有定义:char str1[10],str2[10]=&Fujian&; ,能将字符 串&Fujian&赋给数组 str1 的正确语句是(B) 。 A. str1=&Fujian&; C.strcpy(str2,str1); B. strcpy(str1,str2); D.strcopy(str1,str2); char 1 151214 以 下 程 序 段 的 运 行 结 果 是 ( D )。 str[3][2]={ 'a','b','c','\0','e','f'}; printf(&%s&,str[0]); A. a B. abcef D.abcC.abc\0ef51215 以下程序段的运行结果是(C) char str[]={ &FuJian&}; 。 printf(&%d&,strlen(str)); A. 9 C.6 B. 7 D.8 char a[]=&abcdef&; 1 151216 以下程序段的运行结果是(B) 。char b[]=&xyz&; strcpy(a,b); printf(&%c&,a[2]); A. c C.b B. z D.y51217 以下程序段的运行结果是(B) char a[]=&abc &; 。 b[]=&xyz&; printf(&%s&,c); A. abc C.xyz char 1 c[10]; strcpy(c,a);charstrcat(c,b);B. abc xyz D.xyzabc int a=2;4351218 以 下 程 序 段 运 行 后 a 的 值 为 ( B ) 。 a=strcmp(&miss&,&miss&); A. 1 C.-1 51300 B. 0 D.true 设 有 下 列1语句:char 则(A)是对库函 1str1[]=&string&,str2[8],*str3,*str4=&string&;数 strcpy 的不正确调用。此函数用来复制字符串。 A. strcpy(str3,&HELLO3&); C.strcpy(str1,&HELLO1&);B. strcpy(str2,&HELLO2&); D.strcpy(str4,&HELLO4&); 151301 用数组名作为函数的实参时,错误的说法是(A ) 。 A. 定义形参数组时, 元素的个数必须与实参相同 使用数组名作为形参 C.实参传递给形参的值是数组的首地址 变量作为形参B. 可以D.可以使用指针51302 以下程序的运行结果是 (D) int fun(int a[4][4]) { 。 for(i=0;i&4;i++) printf(&\n&); } printf(&%2d&,a[i][2]); main() fun(a); } { 1 inta[4][4]={1,1,2,2,1,9,0,0,2,4,0,0,0,5,9,8}; A. 1 9 0 5 C.2 0 0 8 B. 2 0 0 0 D.2 0 0 951303 自定义函数中若缺省函数值类型,则隐含的类型是(A) 。 1 A. int B. long44 C.floatD.double #include &stdio.h& } main() {51304 以下程序运行后输出结果是(C) 。 int fun(int a, int b) int x=5,y=3,k; { return(a-b);k=fun(x,y); } 1printf(&%d-%d=%d\n&,x,y,k); A. 0 C.5-3=2 B. x-y=2 D.251305 以下程序运行后输出结果是(D) 。 int a=2,b=3,c=5; c=a&b?a:b; int fun(int a, int b) } main()#include &stdio.h& { { int int a=6;return(c);printf(&%d&,fun(fun(a,b),c)); A. 5 C.6,5 B. 3,5 D.6} 151306 以下程序运行后输出结果是(C) void fun(int i) { int 。 m=2; m=7,n=5; A. 5 5 C.5 7 m=i++; fun(n); B. 6 D.6 6 7 int func() {static int m=0; printf(&%d &,m); } } 1 main() { intprintf(&%d&,m);51307 若有函数定义: return m++; }以下程序段运行后屏幕输出为( C) 。 func();for(i=1;i&=4;i++) 1printf(&%d&,func());45 A. 0 C.4B. 1 D.5 #include &stdio.h& return void } 1 main()51308 下面程序的输出结果是(B) 。 int num=10; ++ { printf(&%d\n&,func()); A. 4 C.10 B. 5 D.11 func() }{int num=4;51309 下列关于 C 语言函数的描述中,错误的是(A ) 。 A. 函数的定义可以嵌套, 但函数的调用不可以嵌套 不加类型说明的函数,其返回值默认为整型 C.函数的返回值可以通过函数中的 return 语句获得 定义有参函数,也可以定义无参函数 51310 以下程序的运行结果是 (B) 。 c=(a&b)?(a-b):(a+b); func(int a,int b) } } 11 B. 凡D.可以{int main()return(c);{int x=7,y=3; A. 3 C.7 B. 4 D.10printf(&%d\n&,func(x,y));51311 以下程序运行结果是(A) 。 max(float a,float b); y=-3.7; z=max(x,y); float x,y;void main( ){int x=-4.6; } if(a&b)46printf(&%d\n&,z); {int max(float a,float b) c=a; A. -3.7 C.-4.6else B. -3 D.-4c=b;return (c);}151312 下 面 函 数 调 用 语 句 含 有 实 参 的 个 数 为 ( A ) 。 temp((a,b,c),(x,y)) A. 2 C.4 B. 3 D.5 151313C 语言中,数组名作为函数调用的实参时,下面叙述正确 的是(D) 。 1 B. 传递给形参的是A. 传递给形参的是数组元素的个数 数组第一个元素的值 C.传递给形参的是数组中全部元素的值D.形参数组中各元素值的改变会使实参数组相应元素的值同时发生变化 51314 以下程序的运行结果是(A) 。 { main() int fun(int array[3][3]) printf(&\n&); }for(j=0;j&3;j++) array[1][j]++; { int j,a[3][3]={0,1,2,1,0,4,2,4,5};fun(a); 1for(j=0;j&3;j++) printf(&%2d&,a[1][j]); A. 2 1 5 C.0 1 2 B. 1 0 4 D.1 2 3printf(&\n&); }51315C 语言中,若缺省定义函数返回值类型,则该函数默认返 回值类型是(C) 1 。 A. void B. long47 C.intD.double int f(int c) { c+=2; a=f(a);51316 以下程序的运行结果是(B) 。 printf(&%d A. 4 4 C.2 4 } main() { } 1int a=2,c=5;%d \n&,a ,c); B. 4 D.2 5 551317 以下程序的运行结果是(C) int a=2,b=3; int min(int 。 a,int b) { { int a=4; A. 2,3 C.3 B. 2 D.4 fun() } 1 { static int a=0; { c=a&b?a:b; return(c); } 1 main()printf(&%d&,min(a,b)); }51318 以下程序的运行结果是(B) 。 a++; printf(&%d &,a);main()for(i=1;i&=2;i++) A. 1 1 C.0 0 B. 1 D.0 2 1fun(); }51400 以下程序的运行结果是 (C) fun3(int x) { static int a=3; 。 a+=x; n=fun3(k); A. 3 C.6 B. 4 D.9 #define F(m,n) m*n48 n=fun3(m);}main(){ int k=2,m=1,n; 1printf(&%d\n&,n); }51401 以下程序运行后输出结果是(D) 。 main(){intx=5,y=3,a1,a2;a1=F(x+y,x-y); } 1a2=F(x-y,x+y); A. 16,16 C.-7,17printf(&%d,%d\n&,a1,a2); B. 16,-16D.17,-7 1 B. 程序中使用带51402 以下叙述正确的是(C) 。A. 编译预处理命令行必须以分号结束 参数的宏时,参数类型要与宏定义时一致 C.宏展开不占用运行时间, 只占用编译时间 含大写字母和数字字符 51403 以下叙述正确的是(B) 。 1D.宏名只能包A. 一个源程序只能有一个编译预处理命令行 处理命令行都必须以&#&开头B. 编译预C.&#define PRICE=30&定义了与 30 等价的符号常量 PRICE D.使用带参数的宏定义时,应该说明每个参数的数据类型 51404 以下叙述错误的是(C) 。 1 B. 宏名可以用小A. 编译预处理命令行都必须以#号开始 写字母表示C.使用预处理命令&#include &文件名&&时,编译系统只在指定 的系统目录下查找该文件 前 51405 若有定义:#define N 3+2,则表达式 N*2 的值为(B) 。 A. 5 B. 749D.宏定义只能放在 main()函数之1 C.10D.0 #define MIN(m,n) c=2*MIN(a,b);51406 以下程序运行后输出结果是(B) 。 m&n?m:n main() } 1 { int a=3,b=5,c;printf(&%d&,c); A. 3 C.6 B. 5 D.1051407 下列#include 命令中,正确的是(A) 。 A. #include &math.h& C.#include (math.h) B. #include [math.h] D.#include {math.h}151408 下面程序的输出结果是(C) 。 #define MON 1 3*TUE 1 A. 2 C.4 B. 3 D.5 1 #define TUE 2*MON#include &stdio.h& #define WED }void main(){printf(&%d\n&,WED-TUE);51409 下面错误的叙述是(A) 。A. 预处理命令行必须位于 C 源程序的起始位置 语言中,预处理命令行都以&#&开头B. 在 CC.C 程序在开头可以不包含预处理命令行:#include &stdio.h& D.C 语言的预处理可以实现宏定义和条件编译的功能 51410 以下程序的运行结果是(B) 。 main() {int a=2,b=3,c; #define MUL(r) r*r c=MUL(a+b)*2;50 printf(&%d&,c); A. 10 C.36 B. 14 D.50}151411 下 面 程 序 的 运 行 结 果 是 ( C ) 。 #define K(x) x*x a,b; #define T(x) (x*x) a=9%K(N); } 1#define N 10 main( ) {intb=9%T(N);printf(&%d,%d\n&,a,b); A. 9,9 C.90,9 B. 9,90 D.90,9051412 以下在任何情况下计算平方数时都不会引起二义性的宏 定义是(D) 。 1 B. #define XPF(x) (x)*(x) D.#define XPF(x) ((x)*(x)) #define X a+b main( ) } 1A. #define XPF(x) x*x C.#define XPF(x) (x*x)51413 以下程序的运行结果是(C) 。 { int a=3,b=4,s1; A. 14 C.10 B. 6 D.8 1 s1=2*X;printf(&%d\n&,s1);51414 下面叙述错误的是(C) 。A. “#define PRICE 30”命令的作用是定义一个与 30 等价的 符号常量 PRICE B. 预处理命令行都必须以“#”开头 D.C 源程序中加入一些C.预处理命令行必须以分号结束预处理命令是为了改进程序设计环境,提高编程效率51 51415 下面叙述正确的是(A) 。1 B. 预处理命A. 宏展开不占用运行时间, 只占用编译时间 令也是 C 语句,必须以分号结束 C.一个源程序只能有一个预编译处理命令行 用大写字母表示 51416 下面叙述错误的是(D) 。 1D.宏名必须A. “#inclue &stdio.h&”命令的作用是在预处理时将 stdio.h 文 件中的实际内容代替该命令 B. “#define PRICE 30”命令的作用是定义一个与 30 等价的符号常量 PRICE C.C 源程序中加入一些预处理命令是为了改进程序设计环境, 提高编程效率 D.宏定义也是 C 语句,必须在行末加分号51417 若有定义: #define PI 3, 则表达式 PI*2*2 的值为 (A) 1 。 A. 12 C.322 B. 4 D.不确定51418 若有定义:#define F 2+3,则表达式 F*F 的值为(C) 1 。 A. 25 C.11 B. 13 D.1751500 下程序的运行结果是 (A) void ast (int x,int y,int *cp,int 。 *dp) { *cp=x+y; *dp=x-y; } main() { int a=4,b=3,c,d; 1ast(a,b,&c,&d); A. 7,1 C.7,-1 B. 1,7printf(&%d,%d\n&,c,d); }D.c、d 未赋值,编译出错52 51501 有以下语句:int a[5]={0,1,2,3,4,5},i; 1int *p=a;设 0≤i<5,对 a 数组元素不正确的引用是(C) 。 A. *(&a[i]) C.*(*(a+i)) B. a[p-a] D.p[i]51502 若有定义 int *p1,*p2; 则错误的表达式是(A) 。 A. p1+p2 C.p1&p2 B. p1-p2 D.p1=p2 1151503 以下叙述错误的是(D) 。A. 存放地址的变量称为指针变量 何类型的指针变量B. NULL 可以赋值给任C.一个指针变量只能指向类型相同的变量 型的指针变量可以作加减运算D.两个相同类51504 以下程序段运行后,表达式*(p+4)的值为(B) 。 a[]=&china&; A. 'n' char *p; p=a; 1charB. 'a' D.存放'a'的地址 charC.存放'n'的地址51505 以下程序段运行后,表达式*(p++)的值为(A) 。 a[5]=&work&; A. 'w' C.'o' char *p=a; 1B. 存放'w'的地址 D.存放'o'的地址 int *p,k=4; p=&k; 以下均代表地址的是51506 若有定义: (B) 。 153 A. k, p C.&k, pB. &k, &p D.k, *p51507 若有定义: double *q,p;则能给输入项读入数据的正确程序 段是(B) 。 1 B. q=&p;scanf(&%lf&,q); D.*q=&p;scanf(&%lf&,*q); 对① int *p=&q;和② p=&q; 这两 1A. q=&p;scanf(&%lf&,*q); C.*q=&p;scanf(&%lf&,q); 51508 若已定义: int q=5; 条语句理解错误的是(C) 。A. ①是对 p 定义时初始化,使 p 指向而②是将 q 的地址赋给 p B. ①和②中的&q 含义相同,都表示给指针变量赋值 C.①是对 p 定义时初始化,使 p 指向而②是将 q 的值赋给 p 所指向的变量 D.①和②的执行结果都是把 q 的地址赋给 p 151509 下面语句错误的是(A) 。 A. int *p; *p=20;B. char *s=&abcdef&; printf(&%s\n&,s); D.char *str=&abcdef&;C.char *str=&abcdef&; str++;51510 若有定义 int a[2][3],*p=a;, 则能表示数组元素 a[1][2]地址 的是(D) 。 A. *(a[1]+2) C.p[5] 1 B. a[1][2]D.p+551511 若已定义: int a=5,*p; 且 p=&a; 则以下表示中不正确的 是(B) 。 1 B. *(&p)==a54A. &a==&(*p) C.&(*p)==pD.*(&a)==a char51512 若 有 以 下 程 序 段 , 则 叙 述 正 确 的 是 ( C ) 。 s[]=&computer&; char *p; p=s; 1A. s 和 p 完全相同 度相等 C.*p 与 s[0]相等 相等B. 数组 s 的长度和 p 所指向的字符串长D.数组 s 中的内容和指针变量 p 中的内容51513C 语言中,二维数组元素在内存中的存放顺序是(A) 1 。 A. 按行存放 B. 按列存放 D.随机存放C.由用户自己定义51514 若有定义:int *p1,*p2; ,则不能用于指针变量 p1、p2 之 间的运算符是(C) 。 A. = C.+ B. = = D.1 B. 一个变量 151515 下面叙述错误的是(C) 。A. 一个指针变量只能指向同一类型的变量 的地址称为该变量的指针 C.可以将一个整数值赋给指针变量 以与空指针 NULL 进行比较D.任何指针变量都可51516 以下程序段运行后*(p+1)的值为 (A) char a[]=&good&; 。 char *p; p=a; A. 'o' B. 'g'551 C.a[1]的地址D.不确定51517 以下程序段运行后*(p++)的值为 (A) char a[5]=&work&; 。 char *p; p=a; A. 'w' C.'o' 1B. a[0]的地址 D.a[1]的地址51518 若有定义: a=4,*p=&a; , int 则以下 (B) 均表示地址。 1 A. a,p C.&a,*p B. &a,p D.a,*p enum51600 以 下 程 序 段 的 运 行 结 果 是 ( B )。 weekday{ aa,bb=2,cc,dd,ee }week= 1 A. ee C.2 B. 5 D.4printf(&%d\n&,week);51601 若有以下程序段,则不能正确访问数组元素 a[1][2]的是 (A) 。 int (*p)[3]; int a[][3]={1,2,3,4,5,6,7,8,9}; p = B. p[1][2] D.*(*(a+1)+2) int n,sum=0; 1 1A. p[1]+2 C.(*(p+1))[2]51602 以 下 程 序 段 的 运 行 结 果 是 ( A ) 。 a[]={1,2,3,4,5,6,7},*p=a; for(n=1;n&6;n++) sum+=p[n++]; A. 12 C.16 B. 15 D.27 intprintf(&%d&,sum);56 51603 下面程序的运行结果是(A) main( ) 。 *p1=&a,*p2=&b,*t; printf(&%d,%d\n&,a,b); A. 10,20 C.10,10 B. 20,10 D.20,20 a=10; b=20; } 1{ int a,b;intt=p1; p1=p2; p2=t;51604 以下程序段运行后变量 s 的值为(C) 。 a[]={1,2,3,4,5,6,7}; for(i=0;i&3;i++) A. 6 C.120 B. 60 D.210 int i,s=1,*p; s*=*(p+i); 1 p=&a[3];int51605 以下程序段运行后变量 ans 的值为(B) 。 a[]={1,2,3},b[]={3,2,1}; for(k=0;k&3;k++) ans=ans+*(p+k)*2; A. 2 C.6 B. 4 D.12 1 int *p=a,*q=b; intint k,ans=0;if(*(p+k)==*(q+k))51606 以下程序运行结果是 (A) main( ) { char a[]=&abc&,*p; 。 for(p=a;p&a+3;p++) A. abcbcc C.cbabaa B. abc D.cba #include&stdio.h& char *s=&ABCD&;57printf(&%s&,p);}151607 以下程序的输出结果是(B) 。 void main() { for(i=0;i&3;i++) A. CD C.AB BCD ABCprintf(&%s\n&,s+i); ABCD ABCD B. ABCD D.ABCD BCD ABC}1 CD AB51608 以下程序的输出结果是(B) 。 void main() } 1 {char#include &stdio.h& *p=&ABCDE&,*q=p+3;printf(&%c\n&,q[-2]); A. A C.C B. B D.D51609 下面程序执行时,若输入 5 4 3 (B) : {int a[N]; #include &stdio.h& int *p=a; while(p&a)21&回车&,则输出 void main() while(p&a+N) printf(&%d#define N 5scanf(&%d&,p++); &,*(--p)); A. 5 4 3 2 1 C.3 4 5 1 2 } 1B. 1 2 3 4 5 D.3 2 1 5 4 int51610 下 面 程 序 段 的 运 行 结 果 是 ( C ) 。 a[]={1,2,3,4,5,6},*p=a; sum+=*(p++); A. 10 C.15 B. 12 D.20 main( ) p=a; int i,sum=0; 1for(i=1;i&6;i++)printf(&%d&,sum);51611 下面程序运行结果是(D) 。 a[]={1,2,3,4,5},*p,*q,i;{ int q=p+4;58 for(i=1;i&5;i++) 1 A.
C.printf(&%d%d&,*(q-i),*(p+i));}B.
D. main( ) { static51612 下面程序运行结果是(B) 。 char a[]=&abcdefg&,b[]=&adcbehg&; for(i=0;i&=6;i++) } 1char *p=a,*q=b; if(*(p+i)==*(q+i))printf(&%c&,*(q+i)); A. geca C.bdf B. aceg D.fdb51613 以下程序段的运行结果是 (D) int x[3]={1,2,3}; int *p; 。 p=x; for(p++;p&&x[2];p++) A. 3 C.1 2 B. 2 D.2 3 printf(&%d &,*p); 151614 以下程序段的运行结果是 (B) int x[]={2,3,4,5,6,7},*p=x; 。 int i,s=0; for(i=1;i&5;i++) s+=p[i++]; A. 14 C.6 B. 8 D.20 { int x,y; t=p; int p=q; printf(&%d&,s); 151615 以下程序的运行结果是(C) main( ) 。 *p,*q,*t; q=t; x=23; y=45; p=&x; q=&y; } 1printf(&%d,%d\n&,x,y); B. 45,45A. 23,2359 C.23,45D.45,2351616 以下程序段运行后 x 的值为 (C) int a[]={1,2,3,4,5,6,7,8}; 。 int i,x,*p; x=1; p=&a[1]; for(i=0;i&3;i++) A. 1 C.24 B. 6 D.120 int x*=*(p+i); 151617 以 下 程 序 段 运 行 后 x 的 值 为 ( C )。 a[]={1,2,3},b[]={4,3,3}; for(i=0;i&3;i++) A. 2 C.6 B. 4 D.不确定 main( ) int *p,*q; int i,x;p=a; q=b; 1if(*(p+i)==*(q+i))x=*(p+i)*2;51618 以 下 程 序 的 运 行 结 果 是 ( C ) 。 a[]=&137&,*p; printf(&%s&,p); A. 137 C.137377 } 1{ charfor(p=a;p&a+3;p++)B. 13737 D.751700 若定义如下结构,则能打印出字母 M 的语句是(B ) 。 struct person{ char name[9]; }; struct personclass[10]={&Wujun&,20, &Liudan&,23, &zhangming&,22}; 1 A. printf(&%c\n&,class[3].name); B. &Maling&,21,printf(&%c\n&,class[2].name[0]);60 C.printf(&%c\n&,class[2].name[1]); D.printf(&%c\n&,class[3].name[1]); 51701 以下程序段的运行结果是(D) 。 char str[2]; }t; 1 t.n=80; union { t.str[1]=0;t.str[0]='a';printf(&%d\n&, t.n); A. 80 C.0 B. a D.9751702 一个结构体变量占用的内存大小是(B ) 。 A. 占内存容量最大的成员所需容量 容量之和 C.第一个成员所需内存容量 量 51703 以下程序段的运行结果是( D) 。 }m,n; m.x=5; union1B. 各成员所需内存D.最后一个成员所需内存容{ m.c='A';m.y=7.5;n.x=8; printf(&%d\n&, m.x); 1 A. 5 C.65 B. 7.5 D.8 struct student }stu1; { char name[8];51704 若有定义: 1则变量 stu1 所占用的内存字节数是(A ) 。 A. 15 C.8B. 16 D.1961 51705 定义结构体类型变量 teach1,不正确的是(D) 1 。 A. struct teacher teacher teach1; }teach1; C.struct { 51706 若有定义: }stu1; { } }teach1; D.struct { B. st { };struct teacher teach1; 1 intstruct stuent{下列叙述不正确的是(B.) 。A. student 是结构体类型名 名B. struct student 是结构体类型C.stu1 是用户定义的结构体类型变量名 是结构体变量 stu1 的成员 51707 下面程序的运行结果是(A) 。 { }a[2]; } 1D.num,sex,age 都#include &stdio.h& void double main(){printf(&%d\n&,sizeof(a)); A. 16 C.4 B. 8 D.251708 下面程序的运行结果是(B) 。 union data {char a[2]; void main() {#include &stdio.h& }; struct }p; } 1{printf(&%d\n&,sizeof(p));62 A. 5 C.7B. 6 D.851709 以下 C 语言共用体类型数据的描述中,正确的是(?? ) 。 1 A. 共用体变量占的内存大小等于所有成员所占的内存大小之 和 B. 共用体类型不可以出现在结构体类型定义中C.在定义共用体变量的同时允许对第一个成员的值进行初始 化 D.同一共用体中各成员的首地址不相同 struct stu }; { struct struct stu *p=s; 1 stu 则下51710 设 有 如 下 语 句 :s[3]={{101,18},{102,21},{103,19}}; 面表达式的值为 102 的是( A. (p++)-&num C.(*p++).num ) 。B. (*++p).num D.*(++p)-&num ) 。 };51711 若 有 下 面 定 义 , 能 打 印 出 字 母 'L' 的 语 句 是 ( struct class {char name[8];struct class s[12]={&Zheng&,16,&Lin&,18,&Yang&,19,&Guo&,20}; 1 A. printf(&%c\n&,s[1].name[0]); B.printf(&%c\n&,s[2].name[0]); C.printf(&%c\n&,s[1].name); D.printf(&%c\n&,s[2].name);51712 若有下面定义,对结构体变量成员不正确引用的语句是63 () 。struct pup }p[3],*q;{char name[20]; q=p; 1A. scanf(&%s&,p[0].name); C.scanf(&%d&,&(q-&sex));B. scanf(&%d&,q-&age); D.scanf(&%d&,&p[0].age); ) 。 union { int num1; s.num2=30;51713 以下程序段的运行结果是 ( int num2; }s; 1s.num1=20;printf(&%d&,s.num1); A. 20 C.50 B. 30 D.203051714 若有定义: }d1; A. 15 C.4struct data{ ) 。 1float b[3];则变量 d1 的长度是(B. 12 D.17 union u_type { 1 float y[3];51715 若 有 定 义 : A. 1 C.12 }a; B. 4 D.15则变量 a 的长度是( ) 。51716 若有定义: struct teacher {char name[10]; 则下列}t1={2001,&Li Ming&,'M',35}; 1( )对结构变量引用是正确的。 A. t1.name C.t1.name[0] B. t1-&name D.t1-&name[0]64 51717 下列()对结构类型变量定义是错误的。 {1 B.A. struct teacher struct C.struct { {}teach1;}teach1,teach2; } {teacher teach1; };D.struct teacherstruct teacher teach1; int51718 若有定义: struct teacher { }teacher1; 则下面叙述错误的是() 。 1A. struct 是结构类型的关键字 的结构类型B. struct teacher 是用户定义C.num、sex、age 都是结构变量 teacher1 的成员 是结构类型名 51800 以下程序的输出结果是 ( fac(5) ); } fac(int n) { return n*fac(n-1); } A. 120 C.6 B. 60 D.1 struct node { 1 ) main() 。D.teacher1{ printf( &%d\n&, elseif(n==1) return 1;51801 若有以下定义: * };struct nodestruct node *p;已建立如下图所示的链表: ┌──┬──┐┌──┬──┐ p │┌──┬──┐→│data│next┼→│data│next┼→...─→│data│NULL └──┴──┘ └──┴──┘ └─65 ─┴──┘指针 p 指向第一个结点,能输出链表所有结点的数 ) 。 1 p++; } D.for( ; }据成员 data 的循环语句是( A. while(p!=NULL) B. while(p){ printf(&%d,&,p-&data); p=p-&{ printf(&%d,&, p.data);C.for( ; p!=NULL; p++) p=p-&next)printf(&%d,&, p-&data);printf(&%d,&, (*p).data); struct node { struct node51802 若有以下定义: * } 链表: k ┬──┐struct node m,n,k, *head, *p; m ┌──┬──┐已建立如下图所示的 n ┌── p┌──┬──┐head →│data│next┼→│data│NULL│ └──┴──┘→ │data│next│ ┘ └──┴──┘└──┴──指针 head 指向变量 m, m.next 指向变量 n,p 指向变量 k,不能把结点 k 插到 m 和 n 之间形成新 链表的程序段是( ) 。 1 B. (*head).next =A. m.next = p-&next = head-& (*p).next = &n; C.head-&next = &k; p-&next = head-& k.next = &n; 51803 若有以下定义: * p }D.m.next = &k;struct node {struct nodestruct node *head,*p;已建立如下图所示的链表: ↓ ┌──┬──66 ┐┌──┬──┐┌──┬──┐head →│data │ next ┼ → │ data │ next ┼ → ... ─ → │ data │ NULL │ └──┴──┘ └──┴──┘ ) 。 └──┴──┘ 1 B. free(p); p =能删除指针 p 所指向结点的程序段是(A. p = p-& head-&next=p-& free(p); p-& head-&next=p-& C.head-&next = p-& free(p); p-& 51804 若有以下定义: * } *p,*q; ─┬──┐ struct node {D.free(p); head-&next =struct node ┌─已建立如下图所示的链表:┌──┬──┐... p →│data│next┼→│ └──┴──data│NULL│ ┘ │└──┴──┘ ┌──┬──┐q →│data│next 不能将指针 q 所指结点连到└──┴──┘上图所示链表末尾的语句是() 。1 B. p=p-&A. q-&next=NULL; p=p-& p-&next=q; p-&next=q; q-&next=NULL; C.p=p-& q-&next=p-&p-&next=q;D.q-&next=p-& p=p-& p-&next=q; 51805 若有定义: * }; ┌─┬─┐ struct node { struct node ┌─┬─┐ ┼→│367已建立如下图所示的链表: ┌─┬─┐head →│1 │ │┼→ ? →│25│┼→NULL└─┴─┘└─┴─┘└─┴─┘ ) 。指针 head 指向链表首结 void fun(struct node * head) { printf(&%d } } 1点,以下函数的功能是( { struct node * p = &,(*p).data );while(p)p = (*p).A. 显示并删除单向链表 点的数据B. 显示单向链表中的第一个结C.显示单向链表中的所有数据 个结点外的所有数据 51806 若有定义: * }; ┌─┬─┐ │ struct nodeD.显示单向链表中除第一{struct node ┌─┬─┐ ┼→│4已建立如下图所示的链表: ┌─┬─┐head →│2 │┼→ ? →│28│┼→NULL└─┴─┘└─┴─┘└─┴─┘ ) 。指针 head 指向链表首结 void fun(struct node * head) while(1) if(p) { p = p-& } } 1点,以下函数的功能是({ struct node * p = printf(&%d &, p-&data );A. 显示单向链表中第一个结点的数据 中最后一个结点的数据 C.显示单向链表中的所有数据 个结点外的所有数据 51807 若按如下定义,则函数 link 的功能是(B. 显示单向链表D.显示单向链表中除第一) 。其中 head 指68 向链表首结点,整个链表结构如下图: ┌──┬─┐ ┼→│data│ ┴─┘ node ┌──┬──┐ ┼ → ?→│data│NULL│┌──┬─┐ head →│data│ └── struct }; int└──┴─┘ {└──┴──┘ struct node * {int k=1;link(struct node* head) *p= k++; }struct node {p=p-&while(p!=NULL) return k-1; } 1A. 删除链表 head 中的一个结点 表 head 中 C.统计链表 head 中结点的个数B. 插入一个新元素到链D.创建新链表 head ) 。其中 head 指向 ┌──┬─┐ head →│data│ ┌ ┼→51808 若按如下定义,函数 link 的功能是( 链表首结点, 整个链表结构如下图: ──┬─┐ │data│ ┘ ┌──┬──┐┼→? → │data│NULL│ └──┴──┘ };└──┴─ struct node void link(struct while(p!=NULL)└──┴─┘{ node* head)struct node * {struct node *p={if(p-&data%2==1) p=p-& } } 1printf(&%d &,p-&data);A. 计算链表 head 中结点的个数 中值为奇数的元素B. 遍历链表 head,输出表69 C.删除链表 head 中的所有结点 head 中 51809 以下程序的输出结果是( #include &stdlib.h& struct node *D.插入一个新元素到链表) 。#include &stdio.h& { Node void *p= &,p-&data); void main()typedef struct node }Nlist[4]={{4,&list[1]},{3,&list[2]},{2,&list[3]},{1,0}}; output(Node while(p!=NULL) p=p-& {output(list); A. 1 2 3 4 C.3 2 1 4 } 1 } *head) {Node {printf(&%d }B. 4 3 2 1 D.2 1 3 4 struct node *head, *p; {51810 若 按 以 下 定 义 : struct node * }并已建立如下图所示的 p ↓链表结构,指针 p 和 q 分别指向图中所示结点: q ↓ ┌──┬──┐ ┌──┬──┐ │data│ └──┴──┘ ) 。┌──┬──┐... │→│data│next┼→│data│NULL│ └──┴──┘ └──┴──┘则可 1 B.以将指针 q 所指的结点连接到链表末尾的程序段是( A. q-&next=NULL; p=p-& p-&next=q;q-&next=p-& p=p-& p-&next=q;70 C.p=p-& q-&next=p; p-&next=q; p=(*p). (*p).next=q; 51811 若有定义: node * m=0,n=0; {m+=p-& if(n&0) 0 } }; struct nodeD.(*q).next=(*p).{struct {intfloat link(struct node *head)struct node *p= n++; return 1.0*m/n;while(p!=NULL) p=p-& else } return调用 link 函数时 head 是指向链表首结点的指针,整 ┌──┬──┐ ┌──┬─个链表结构如下图: ─┐ ┌──┬──┐head →│data│next┼→ └── 则函数│data│next┼→...─→│data│NULL│ ┴──┘ └──┴──┘ ) 。 1 └──┴──┘link()的功能是(A. 统计链表 head 中结点的个数 表中各结点成员 data 的平均值B. 遍历链表 head,计算C.遍历链表 head,计算表中各结点成员 data 的总和 建一个新链表 head 51812 若 有 以 下 定 义 : struct node * 所示结点: ↓ ─┬──┐ p ↓ ┌──┬──┐ } *p,*q,*t; struct nodeD.创{指针 p、 和 q 分别指向图中 t t ↓ ┌──┬──┐ q ┌─ │71 data│next┼→│data│next┼→│data│next┼→... ┴──┘ └──┴──┘└──└──┴──┘现要将 t 和 q 所指结点的先后位置交换, 同时要保持链表的连续, 以下错误的程序段是( A. ) 1 B.t-&next=q-&p-&next=q;q-&next=t;p-&next=q;t-&next=q-&q-&next=t; C.q-&next=t;t-&next=q-&p-&next=q; D.t-&next=q-&q-&next=t;p-&next=q; 51813 下列程序段运行后, 表达式 ( { 1 A. *(p+2) C.p[2].x B. p[1].x D.p[3].x ) ) 的值为 3。 struct point } *p; struct point a[3]={1,2,3,4,5,6}; p=a;51814 若有定义: a[10]={0,1,2,3,4,5,6,7,8,9}, *p=a; , 则 int ( 表达式是错误的。 1 A. a[2] C.p[2] B. p++ D.a++51815 下列程序段运行后, ()对数组 a 元素的引用是错误的。 int i,j,(*p)[3]; 1 int(其中 0≤i<4,0≤j<3) a[][3]={1,2,3,4,5,6,7,8,9,10,11,12}; p = A. *(*(a+i)+j) C.*(*(p+i)[j]) B. p[i][j] D.*(p[i]+j)72 51816若有定义:inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},(*p)[4];p=a; , ( 元素的引用是正确的。 A. *(p[2]+3) C.*(p[4]) 51817( 1)对数组 aB. **(p+4) D.(**p)[2] 1)能正确定义一个指向函数的指针。 B. int (*p)() D.int (*p()) ) 。A. int *p() C.(int *)p()51818 以 下 程 序 的 运 行 结 果 是 ( a[3]={1,2,3}; for(i=0;i&3;i++) printf(&%d&,**p); } A. 1 C.&a[0] B. 3 D.num 1 intmain() int{int **p,i;*num[3]; num[i]=&a[i];p=51900 以下程序中的循环执行了 ( M N+1) 次。 #define N 2 #define main() { int i,n=0; } 1#define NUM (M+1)*M/2for(i=0;i#i++) n++; A. 5 C.8 B. 6 D.9printf(&%d\n&,n);51901 错误的枚举类型定义语句是( A. enum car {A, B, C};) 。1B. enum car {1, 2, 3}; D.enum car {D=3, E, F};73C.enum car {X=0, Y=5, Z=9}; 51902 假定已有如下定义: green, blue, pink} ; 语法规则的正确判断。 red=1; /* 语句 3 */ 1enum colors {red,int a[3]; ( )是对以下语句是否符合 a[red]= /* 语 句 2 */ /* 语句 1 */ k=green+A. 语句 1 和语句 2 正确,语句 3 错误 正确,语句 2 错误 C.语句 2 和语句 3 正确,语句 1 错误 2 和语句 3 错误 51903 设有如下定义:B. 语句 1 和语句 3D.语句 1 正确,语句typedef int *INTEGER; ) 。 1INTEGERp,*q; 下列叙述正确的是(A. 程序中可用 INTEGER 代替 int 类型名 INTEGER 来定义变量 C.p 是 int 型变量,q 是基类型为 int 的指针变量 类型为 int 的指针变量B. 不能用D.p 是基51904 在对无符号数的位运算中,操作数左移三位相当于( 1 A. 操作数除以 6 C.操作数除以 8 B. 操作数乘以 6 D.操作数乘以 8) 。51905 以下程序段运行后变量 k 的值为( k=(m^n)&&1; A. 0 1) int m=7,n=2,k; 。B. 9874 C.20D.1051906 若有定义: m=7,n=10,k; 则执行语句 k=m&n;后 k 的值 int 为( A. 2 C.17 ) 。 1 B. 1 D.15 ) 。 #include &stdio.h& {enum enum } 151907 以下程序的输出结果为( void main()Weekday{sun=7,mon=1,tue,wed,thu,fri,sat}; Weekday day= A. 2 C.4 B. 3 D.5 )是错误的叙述。 printf(&%d\n&,day);51908 若按如下类型说明,则( struct 1 A. S 是一个结构体类型名 {typedef }S,*p;char *B. p 是一个结构体类型名 D.no 是结构体类型C.p 是指向结构体类型 S 的指针类型名 S 的成员 51909 下 面 程 序 段 的 运 行 结 果 是 ( printf(&%d&,p&q); A. 4 C.6 B. 5 D.7 1 ) 。int p=7,q=4;51910 若有以下类型说明,则叙述错误的是() 。typedef75 union{char name[10];}ustu,*1A. umy 是指向共用体类型 ustu 的指针类型名 个共用体类型名 C.umy 是一个共用体类型名 员 51911 定义枚举类型的关键字是( A. typedef C.enum B. include D.fnum ) 。 } 1 ) 。 1B. ustu 是一D.age 是共用体类型 ustu 的成51912 下面程序段的运行结果是( a=5,b=3; A. 0 C.2 51913( B. 1 D.3 printf(&%d&,a&b);main(){int)对枚举类型的定义是错误的。 B. enum a{A, B, C};1A. enum b{1, 2, 3}; C.enum c{D=3, E, F};D.enum d{X=0, Y=5, Z=9}; ,51914 若有定义:enum day{sun,mon, tue, wed, thu, fri, sat} ; 则枚举常量 sun、mon 的值分别为( ) 。 A. 0 C.1 1 2 B. 7 D.7 1 0 151915 若有定义: typedef int * INTEGER; INTEGER 下面叙述正确的是( ) 。 1 B. p 是一个整形变量则A. p 是与 INTERGE 相同的类型76 C.程序中可用 INTEGER 定义 int 类型指针变量 可用 INTEGER 定义 int 类型变量 51916 若有定义: int j, int a[sat];D.程序中enum 则( )day{sun, mon, tue, wed, thu, fri, sat} ;对下列语句是否符合语法规则的判断是正确的。 /* 语句 1 */ if(a[mon]&0) j ++ ; j=mon+ /* 语句 3 */ 1sun=0 ; /* 语句 2 */A. 语句 1 错误,语句 2 和语句 3 正确 句 1 和语句 3 错误 C.语句 1、2、3 均错误B. 语句 2 正确,语D.语句 1、2、3 均正确 则( )51917 若由定义: typedef int NUM[100]; NUM 语句是正确的。 A. n=2; C.n[0]=2; 1B. NUM=n; D.NUM=2;51918 若有定义:enum num{a1,a2=3,a3,a4=10} ; ,则枚举常量 a2、a3 的值分别为( A. 1 C.3 2 3 B. 2 D.3 ) 。 3 4 ) 。 #include &stdio.h& main() 152000 以下程序的功能是( { FILE *fp=fopen(&wj.txt&,&rb&); n=ftell(fp); fclose(fp);fseek(fp,0,SEEK_END); printf(&%ld&,n); } 177 A. 计算文件 wj.txt 的起始地址 地址 C.计算文件 wj.txt 的长度 52001 以下程序的功能是( { FILE *B. 计算文件 wj.txt 的终止D.将文件指针定位到文件末尾 ) 。 #include &stdio.h& main()fp=fopen(&exam.txt&,&rb&); n=ftell(fp); fclose(fp);fseek(fp,0,SEEK_END); printf(&%ld&,n); } 1A. 将文件指针从地址为 0 处移动到文件末尾 指针的当前地址 C.计算文件 exam.txt 的终止地址 节数B. 计算文件D.计算文件 exam.txt 的字52002 文本文件 quiz.txt 的内容为&Programming& (不包含引号), 以下程序段的运行结果是( * str=fgets(str,7,fp); A. Progr C.Program B. Progra D.Programming ) 。 1 B. 打开文 ) 。 FILE * charif((fp=fopen(&quiz.txt&,&r&))!=NULL) printf(&%s&,str); 152003 文件操作的一般步骤是(A. 打开文件,定义文件指针,修改文件,关闭文件 件,定义文件指针,读写文件,关闭文件 C.定义文件指针,定位指针,读写文件,关闭文件 件指针,打开文件,读写文件,关闭文件D.定义文78 52004 下面程序的运行结果是 ( { FILE *) #include &stdio.h& 。 intmain()a=2,b=4,c=6,k,n; fprintf(fp,&%d\n&,a); fclose(fp);fp=fopen(&test.dat&,&w&); fprintf(fp,&%d %d\n&,b,c);fp=fopen(&test.dat&,&r&); printf(&%d A. 2 4 C.4 2 %d\n&,k,n); B. 2 D.6 6 2fscanf(fp,&%d%*d%d&,&k,&n); fclose(fp); } 152005 对于以下程序,说法正确的是( main() { FILE * {) #include &stdio.h& 。 &w&);fp=fopen(&quiz.txt&, fprintf(fp,&%s\n&, } } 1if(fp!=NULL) fclose(fp);&success!&);printf(&ok!&);A. 程序运行后,当前工作目录下存在 quiz.txt 文件,其中的内 容是&ok!& B. 程序运行后, 当前工作目录下存在 quiz.txt 文件,其中的内容是&success!& C.程序运行之前,当前工作目录下一定不存在 quiz.txt 文件 D.程序运行之前,当前工作目录下一定存在 quiz.txt 文件 52006 以下程序运行后, 文件 test.txt 的内容是 ( &stdio.h& main() { FILE * ) #include 。 charstr[][10]={&first&,&second&}; if(fp!=NULL) fp =fp = fopen(&test.txt&, &w&); fclose(fp);fprintf(fp,&%s&,str[0]); &w&);fopen(&test.txt&,if(fp ! =NULL)79 fprintf(fp,&%s&,str[1]); A. first B. secondfclose(fp); }1C.first secondD.second first #include52007 以下 程序的可 执行文件名为 abc.exe。 &stdio.h& *argv[]) exit(1); #include &stdlib.h& {if(argc!=2) }void main(int argc,char {printf(&Input error\n&); } ) 1 。printf(&I love %s\n&,argv[1]);在 DOS 命令行输入:abc right&回车&,则输出结果是( A. Input error C.I love right B. I love abc D.I love ) 。52008 对下面程序描述正确的是( #include &stdlib.h&#include &stdio.h& {FILE *in,*void main()if((in=fopen(&file1.txt&,&a+&))==NULL) {printf(&cannot open file1\n&); if((out=fopen(&file2.txt&,&a+&))==NULL) {printf(&cannot open file2\n&); while(!feof(out)) fclose(out); } 1 B. 程 exit(0); } fclose(in); exit(0); }fputc(fgetc(out),in);A. 程序实现在屏幕上显示磁盘文件 file1.txt 的内容 序实现将磁盘文件 file2.txt 复制到磁盘文件 file1.txtC.程序实现将两个磁盘文件 file1.txt 和 file2.txt 的内容合二为 一 D.程序实现在屏幕上显示磁盘文件 file2.txt 的内容80 52009 下列中错误叙述的是() 。1 B. 可以以只A. C 语言中的文件是一个字节流或二进制流 读方式、只写方式或读写方式打开一个文本文件C.在程序中对文件进行了写操作后, 必须先关闭该文件然后再 打开,才能读到第 1 个数据 D.当对文件的写操作完成之后,必须将它关闭,否则可能导致数据丢失 52010 对下面程序描述错误的是( main() { ) 。 #include &stdio.h& FILE *if((fp=fopen(&file.dat&,&rb+&))!=NULL) c=c+1;} fclose(fp); } fseek(fp,0,SEEK_SET); 1{ c=fgetc(fp); fputc(i,fp);A. 将文件中第一个字节的内容加 1 内容加 1 C.以读写方式打开二进制文件 file.dat 文件的开始位置B. 将文件所有字节的D.SEEK_SET 表示52011 若在 fopen 函数中使用文件的方式是&a+&,该方式的含义 是( ) 。 1 B. 以输出方式打开一A. 以读/写方式打开一个文本文件 个文本文件 C.以读/写方式建立一个新的文本文件 一个新的二进制文件D.以读/写方式建立52012 当顺利执行了文件关闭操作时,fclose 函数的返回值是81 ( ) 。 A. 1 C.-1 52013(1 B. 0 D.一个非 0 值 )不是文件读库函数。 B. fread() D.fscanf() 1A. fgetc() C.fputs()52014 若 当 前 工 作 目 录 下 有 一 文 本 文 件 test.txt , 其 内 容 为 “cprogram”(不包含引号),则以下程序段的运行结果是( FILE * char ) 。*if((fp=fopen(&test.txt&,&r&))!=NULL) str=fgets(str,5,fp); 1 A. cpro C.gram B. cprog D.ogram ) 。 1 B. 定 printf(&%s&,str); fclose(fp);52015C 语言中,对文件操作的一般步骤是(A. 打开文件,定义文件指针,读写文件,关闭文件 义文件指针,读文件,写文件,关闭文件 C.定义文件指针,打开文件,读写文件,关闭文件 文件,定义文件指针,修改文件,关闭文件 52016 下面程序运行后,文件 d_f.dat 的内容是( { FILE * int i=10,j=20; fprintf(fp,&%d &,i); ) 。D.操作main()fp=fopen(&d_f.dat&,&w&); fclose(fp);82 fp=fopen(&d_f.dat&,&a&); 1 A. 10 C.20 B. 10 20 D.20 10fprintf(&%d &,j);fclose(fp); }52017 下面程序运行后,屏幕显示 write ok!,则下面叙述正确的 是 ( ) main() 。 { FILE * { fp=fopen(&data.txt&, &wt&); &File writeif(fp!=NULL) successed!\n&); ok!\n&); } } 1fprintf(fp,&%s\n&, fclose(fp);printf(&writeA. 当前工作目录下存在 data.txt 文件,其中的内容是“write ok!” B. 当前工作目录的 data.txt 文件已经关闭 D.当前工作目录的C.当前工作目录下找不到 data.txt 文件 data.txt 文件已经打开52018 下面程序运行后,屏幕显示 File open error!,则可能的原 因是( ) 。 #include &stdio.h& main() { FILE * if(fp==NULL) 1 B. 函数 fopen() }char str[256];fp = fopen(&test.txt&, &rt&);{ printf(&File open error!&); fscanf(fp,&%s&,str); fclose(fp); }A. 当前工作目录下的 test.txt 文件是空文件 的参数是错误的 C.当前工作目录下没有 test.txt 文件 开D.test.txt 文件已经打83 84
福建省计算机等级考试二级C语言选择题―汇集和整理大量word文档,专业文献,应用文书,考试资料,教学教材,办公文档,教程攻略,文档搜索下载下载,拥有海量中文文档库,关注高价值的实用信息,我们一直在努力,争取提供更多下载资源。

我要回帖

更多关于 建dblink语句 的文章

 

随机推荐