福建省C语言二级考试选择+填空+程序填空+输出结
更新时间:2024-01-18 09:24:01 阅读量: 教育文库 文档下载
- 福建省c语言二级考试时间推荐度:
- 相关推荐
福建省计算机等级考试二级C语言选择题(2010年1月)
一、选择题
50100在C语言中,合法的字符常量是( D )。 A. '字' B. \ C.\ D.'\\x41'
50101下面叙述正确的是( B )。
A. 程序中必须包含有输入语句 B. 变量按所定义的类型存放数据 C.main函数必须位于文件的开头 D.每行只能写一条语句
50102错误的叙述是( D )。
A. 一个C语言源程序可由一个或多个函数组成 B. 若一条语句较长,也可分写在下一行上
C.C程序必须包含一个main()函数 D.构成C语言源程序的基本单元是算术表达式 50103(C)是关于C语言数据类型的正确叙述。 A. 变量必须先定义后使用 B. 不允许使用空类型 C.枚举类型不是基本类型 D.数组并不是构造类型 50104 main( )函数的位置( B )。
A. 必须在自定义函数前面 B. 可以在自定义函数后面 C.必须位于程序的最前面 D.必须在自定义函数后面 50105 C语言函数体由( C )括起来。 A. < > B. ( ) C.{ } D.[ ]
50106( A )是不正确的叙述。
A. 注释说明只能位于一条语句的后面 B. C源程序的基本组成单元是函数 C.C源程序可由一个或多个函数组成 D.每条语句最后必须有一个分号 50107一个C语言源程序是由( B )。
A. 一个主程序和若干子程序组成 B. 函数组成 C.若干过程组成 D.若干子程序组成
50108结构化程序设计的三种基本结构是( C )。
A. 函数结构、判断结构、选择结构 B. 平行结构、嵌套结构、函数结构 C.顺序结构、选择结构、循环结构 D.判断结构、嵌套结构、循环结构 50109C源程序的调试是指对源程序进行( C )。
A. 录入与编辑 B. 查错与编译 C.查错与排错 D.连接与运行 50110C语言中,可将一系列语句置于( C )从而构成复合语句。 A. 一对尖括号\之间 B. 一对圆括号\之间 C.一对花括号\之间 D.一对方框号\之间 50111构成C源程序的基本单位是( D )。 A. 语句 B. 变量 C.运算符 D.函数
50112以下叙述中正确的是( A )。
A. C源程序中注释部分可以出现在程序中任意合适的地方 B. 一对花括号\只能作为函数体的定界符
C.C源程序编译时注释部分的错误将被发现 D.构成C源程序的基本单位是函数,所有函数名都可以由用户命名
50113下面叙述正确的是( D )。
A.每行最多只能写两条语句 B. 程序中必需含有自定义函数 C.main()函数必须位于源程序文件的开头 D.所有语句都必须以分号\结束
50114下面叙述错误的是( B )。
A.若一条语句较长,可分写在下一行或多行上 B.构成C语言源程序的基本单位是语句 C.C源程序中大、小写字母是有区别的 D.一个C源程序可由一个或多个函数组成 50115( A )是关于C语言数据类型的正确叙述。
A. 枚举类型不是基本类型 B. 数组不是构造类型 C.变量使用前应定义相应的数据类型 D.不允许使用空类型 50116 C源程序中main()函数的位置( C )。
A. 必须位于程序的最前面 B. 必须在系统库函数后面 C.可以在自定义函数后面 D.必须在自定义函数前面
50118下面叙述错误的是( D )。
A. C源程序可由一个或多个函数组成 B. C源程序必须包含一个main()函数 C.一个C源程序的执行是从main()函数开始,直到main()函数结束 D.注释说明部分只能位于C源程序的最前面
50200C语言的下列运算符中,优先级最高的运算符是( A )。 A. ++ B. += C.|| D.!= 50201( D )为正确的用户标识符。 A. struct B. 5f C._f 0.6 D._for
50202C语言基本数据类型包括( B )。
A. 整型、实型、逻辑型 B. 整型、实型、字符型 C.整型、字符型、逻辑型 D.整型、实型、字符串型 50203( A )为合法的常量。
A. 52686L B. E-7 C.1.2E-2.1 D.'E12' 50204( C )为正确的变量名。 A. -k15 B. int C.k_5 D.k.jeep 50205( D )为正确的字符常量。 A. ''\\\\'' B. \ C.\ D.'M' 50206( C )为非法的字符串常量。 A. \ B. \ C.'efg' D.\
50207 C语言整型数据在内存中的代码是用( C )表示的。 A. 原码 B. 反码 C.补码 D.BCD码
50208以下选项中,合法的实型常数是( B )。 A. E-3 B. .2E1 C.1E.5 D.1.5E
50209下列C语言合法的数据类型关键字是( B )。 A. Double B. unsigned C.integer D.Char
50210 Turbo C中,int型数据占用的字节数( B )。
A. 由用户自己定义 B. 为2个字节 C.是任意的 D.等于所用计算机的字长 50211 Turbo C中,基本数据类型存储空间长度的排列顺序是( A )。 A. char A. 字符常量用一对单撇号' '作为单个字符的定界符 B. 字符常量和字符串常量一样,都是用双引号括起来 C.字符常量存储时,自动在字符后加一个字符结束符号'\\0' D.字符常量和字符串常量所分配的内存空间大小是一样的 50213( B)为正确的用户标识符。 A. 3_row B. max_at C.union D.min-5 50214C语言的基本数据类型包括( A )。 A. 整型、实型、字符型 B. 整型、实型、空类型 C.整型、字符型、指针型 D.整型、实型、逻辑型 50215( D )为合法的常量。 A. 5,326 B. 3.21E-6.5 C.'b_k' D.1.23E+8 50216( D )为正确的变量名。 A. 5_pro B. case C.else D.pro_5 50217( C )为正确的字符常量。 A. 'bcd' B. '\\084' C.'@' D.'165' 50218( A )为非法的字符串常量。 A. '123' B. \ C.\ D.\ \ 50300已知'A'的ASCII码的十进制值为65,'0'的ASCII码的十进制值为48,则以下程序运行结果是( A )。 main() { char ch1,ch2; ch1='A'+'5'-'3'; ch2='A'+'6'-'3'; printf(\ } A. 67,D B. C,D C.C,68 D.67,68 50301若有定义 int m=6; 则正确的赋值表达式是( C )。 A. m*7 B. m*5=8 C.m-=m*6 D.double(-m) 50302语句 k=(m=5,n=++m); 运行之后,变量k、m、n的值依次为( D )。 A. 5,5,6 B. 5,6,5 C.6,6,5 D.6,6,6 50303语句 x=5%4+(4/5); 运行之后,整型变量x的值为( A )。 A. 1 B. 2 C.3 D.0 50304(B )语句符合C语言语法。 A. float z=28,int x,y=18; B. int x=25,y=25,z=25; C.int x=25:y=25:z=25; D.int x+y=z; 50305若有定义 int a,x; 则语句 a=(x=8,x+8); 运行后,变量a、x的值依次为( A )。 A. 16, 8 B. 8, 8 C.16, 16 D.8, 16 50306若变量 m, n, t已定义且赋予初值,则正确的表达式是( B )。 A. m=m+1=t-n B. m=6+n+t,m++ C.m=m\\2 D.m=int(5.6%4) 50307若有定义:int a,b; float x,则以下不符合C语言语法的表达式是( A )。 A. x%7 B. x/=a-b C.a=b=2 D.x=(float)a/b 50308若有定义:int m=4,n=5;float k;,则以下符合C语言语法的表达式是( B )。 A. (m+n)*=k B. m=(n==5) C.k=float(n)/m D.n%2.5 50309若有定义:int a=6; 则语句 a*=a-=a/=3; 运行后,a的值是( B )。 A. 10 B. 0 C.34 D.24 50310下面关于C语言变量的叙述中,错误的是( A )。 A. 可以用define关键字定义变量 B. 变量名用大小写字母是有区别的 C.C语言允许不同基本类型的变量之间进行混合运算 D.C语言中要求对变量作强制定义的主要理由是:便于确定类型和分配空间 50311若有定义:int a=5,b=2; 则表达式b= (a!=5)的值为( B )。 A. 5 B. 0 C.3 D.2 50312逗号表达式 (a=15,a*4),a+15 的值为( B )。 A. 15 B. 30 C.75 D.60 50313若有定义:int b=-15; 则( A )为正确的赋值表达式。 A. b+=b*3 B. b=*5 C.*b=6 D.b+10=-5 50314若有定义:int x,a,b; 语句x=(a=2,b=3,a+b); 运行后,x、a、b的值依次为(C )。 A. 2 3 5 B. 3 2 5 C.5 2 3 D.5 3 2 50315若有定义:int a,b=5; 语句a=(b/2)+b%2; 运行后,a的值为( B )。 A. 0 B. 3 C.4 D.2 50316(C )语句符合C语言语法。 A. int a=2,b+=a; B. int a=b=2,c=5; C.float x=2.3,b,c; D.float x=3.2,int i,j=6; 50317若有定义:int a=3; 语句a+=a-=a*a; 运行后,a的值为( C )。 A. 0 B. -3 C.-12 D.-6 50318若有定义 int x=1,y=2,n=3; 则( A )为正确的表达式。 A. x=y*3,y=(x+n)/y B. x=ny C.float(y/n) D.(x+y)(y+n) 50400下列语句中,符合C语言语法的赋值语句是( C )。 A. a=7+b+c=a+7; B. a=7+b++=a+7; C.a=7+b,b++,a+7; D.a=7=b,c=a+7; 50401( A )是正确的叙述。 A. (int)5.0/6 与 5/6 等价 B. 'G' 与\等价 C.5/6 与 5.0/6.0 等价 D.++3与4 等价 50402下面叙述中,错误的是( D )。 A. C语言中的表达式求值,是按其运算符的优先级先高后低的次序进行 B. 自增与自减运算符的结合方向为“自右至左” C.关系运算符的优先级低于算术运算符 D.C语言算术运算符不包含模运算符“%” 50403( C )是正确的叙述。 A. 表达式 \是合法的 B. 若变量x, y为整型,则 (a+b)++是合法的 C.强制类型转换运算的优先级高于算术运算 D.表达式 'm' * 'n' 是不合法的 50404若有定义 int i=1,j=9; 则表达式 (++j)*(i--) 的值为( B )。 A. 0 B. 10 C.9 D.8 50405设整型变量x为7,使整型变量y不为2的表达式是( A )。 A. y=x%3 B. y = x/3 C.y =(++x)/3 D.y=8-(--x) 50406若已定义 int a=3,b=2,c=1; 则语句 ++a||++b&&++c; 运行后b的值为( D )。 A. 0 B. 3 C.1 D.2 50407若有定义:int i=5,j=4;则语句 i/=++j; 运行后i的值为( B )。 A. 10 B. 1 C.1.25 D.0 50408若已定义:int a=2,b=2; 则表达式 (a+(b++), b) 的值是( B )。 A. 2 B. 3 C.4 D.6 50409若有定义:int r,x=245; 则语句 r=x/100%9; 运行后r的值为( A )。 A. 2 B. 5 C.0 D.27 50410若已定义:int i=6,t; 则语句 t=3+(--i); 运行后t的值为( C )。 A. 9 B. 7 C.8 D.5 50411C语言的 % 运算符按运算对象的个数属( C )。 A. 单目运算符 B. 四目运算符 C.双目运算符 D.三目运算符 50412若已定义:int a=5,b=9,c=6; 则语句 b++; ++c; a=b-c; 运行后a的值为( B )。 A. 5 B. 3 C.2 D.4 50413下面叙述正确的是( B )。 A. 2/3 与 2%3 等价 B. 5/(int)4.0 与 5/4 等价 C.++2 与 3 等价 D.++2与--3 等价 50414下面叙述错误的是( A )。 A. 算术运算符中只有\、\优先级高于关系运算符 B. 模运算符\是C语言基本的算术运算符 C.自加和自减运算符只能用于变量,而不能用于常量或表达式 50804以下程序运行的结果是(B )。 void main() {int x,y,z,a; x=y=z=1;a=15; if(!x) a--; else if(y) ; if(z) a=3; else a+=4; printf(\ } A. 15 B. 3 C.19 D.14 50805若已定义 int a=1,b=2,t=3; 则执行以下程序段后变量a,b,t的值分别为(A )。 if(a A. a=2,b=1,t=2 B. a=2,b=1,t=1 C.a=2,b=1,t=3 D.a=3,b=1,t=2 50806以下程序段运行后变量k的值为( C )。 int a=3,b=2; int k; k=(--a==b++)?a:b+1; A. 0 B. 1 C.2 D.3 50807以下程序的运行结果是( C )。 void main() { int n=9; switch(n--) { default: printf(\ \ case 8: case 7: printf(\ \ break; case 6: printf(\ \ case 5: printf(\ \ } } A. 8 B. 7 C.8 9 D.8 7 50808以下程序的运行结果是( C )。 void main() { int n=8; switch(n--) { default: printf(\ \ case 8: case 6: printf(\ \ break; case 4: printf(\ \ case 2: printf(\ \ } } A. 8 B. 8 6 C.7 D.8 7 50809以下程序的运行结果是( D )。 void main( ) { int a; if(a=6) printf(\ else if(a>6) printf(\ else printf(\ } A. 运行时产生错误信息 B. 9 C.8 D.6 50810若有定义:int x=10,y=8,a; 则执行语句a=((--x==y)? x: y);后,变量a的值是( A )。 A. 8 B. 9 C.10 D.0 50811若有定义: int a=2,b=3,c=1; 则以下程序段的运行结果是( D )。 if(a>b) if(a>c) printf(\ \ else printf(\ \ printf(\ \ A. 3 1 B. 2 C.3 D.1 50812以下条件语句中(其中s1和s2分别表示C语言的语句),(D)与其他三条语句不等价。 A. if(a) s1; else s2; B. if(a == 0) s2; else s1; C.if(a != 0) s1; else s2; D.if(a == 0) s1; else s2; 50813以下程序段运行时,若从键盘输入5,则运行结果是(D )。 int a,y=10; scanf(\ if (a>10) y=a+6; printf(\ A. 10 B. 1 C.16 D.15 50814以下程序的运行结果是(B )。 void main() {int a,b=2,c=6; a=3; if(a>6) a=a+b; else if(a==6) b=a+c; else a=b+c; printf(\ } A. 5 B. 8 C.6 D.9 50815若有定义:int x,a; 赋值语句a=(x%3==0)?0:1; 与( B )语句不等价。 A. if (x%3!=0) a=1; else a=0; B. if (x%3) a=0; else a=1; C.if (x%3==0) a=0; else a=1; D.if (!(x%3==0)) a=1; else a=0; 50816以下程序段的运行结果是( C )。 int s=15; switch(s/4) {case 1: printf(\ case 2: printf(\ case 3: printf(\ default: printf(\ } A. Three B. Two Over C.Three Over D.One Over 50817以下程序段的运行结果是( C )。 int s=15; switch(s/4) {default: printf(\ case 1: printf(\ break; case 2: printf(\ } A. Two B. Over Two C.Over One D.One 50818以下程序段运行后x的值为( D )。 int a=3,b=6,x; x=(a==b)?a++:--b; A. 4 B. 3 C.6 D.5 50900下列程序段中,非死循环的是( A )。 A. int i=100; while(1) { i=i0+1; if(i>=100) break; } B. int k=0; do{ ++k; }while(k>=0); C.int s=10; while(++s%2+s%2) s++; D.for(;;) 50901若已定义 int a; 不会产生死循环的语句是(C )。 A. for( ; ;a+= 2); B. for(a=10; ;a--); C.for( ;(a=getchar())!= '\\n'; ); D.while(-1) {a++;} 50902在循环语句的循环体中,break语句的作用是( B )。 A. 继续执行break语句之后的循环体各语句 B. 提前结束循环,接着执行该循环后续的语句 C.结束本次循环 D.暂停程序的运行 50903以下程序段运行后,循环体中的 n+=3; 语句运行的次数为( A )。 int i,j,n=0; for(i=1;i<=3;i++) {for(j=1;j<=i;j++) {n+=3; printf(\ } } A. 6次 B. 9次 C.12次 D.1次 50904 do?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 )。 int i=8,a=0; for ( ;i<8;i++) a+= i; A. 0次 B. 1次 C.8次 D.无限 50906以下程序段运行后变量a的值为( C )。 int i=1,a=0; for( ;i<3;i++) { continue; a+=i; } A. 6 B. 3 C.0 D.5 50907有以下程序: void main() { int i; for(i=1; i<=3; i++) switch(i) { case 1: printf(\ break; case 2: printf(\ default : printf(\ } 执行后输出结果是(A )。 A. 1223 B. 132 C.111223 D.123 50908以下程序的运行结果是( C )。 void main() {int s = 0, i = 0; while(i< 8) {i++; if(i%2==0) continue; s+=i; } printf(\ } A. 36 B. 7 C.16 D.12 50909以下程序的运行结果是( B )。 void main() {int s = 0, i = 0; while(i< 10) {i++; if(i % 2==0) s += i; } printf(\ } A. 20 B. 30 C.25 D.45 50910以下程序的运行结果是(C )。 void main() {int x = 5; do { printf(\ } while(!x); } } A. 5 4 3 2 1 B. 4 3 2 1 0 C.5 D.4 50911以下程序的运行结果是(D )。 void main() {int i,j, k=0; for(i= 3;i>=1;i--) {for(j=i;j<=3;j ++) k += i * j ; } printf(\ } A. 19 B. 29 C.6 D.25 50912以下程序运行时,循环体的执行次数是( C )。 void main() {int i,j; for(i=0,j=1;i<=j+1;i=i+2,j--) printf(\ } A. 3 B. 2 C.1 D.0 50913若有定义: int i,x; (A )不是死循环。 A. for(x=5;x>0;x--) ; B. while(x=1) ; C.for(i=10; ;i--) ; D.for( ; ;i+=2) ; 50914下面叙述正确的是(D )。 A. for循环只能用于循环次数已经确定的情况 B. for循环是先执行循环体语句,后判断表达式 C.在for循环中,不能用break语句跳出循环体 D.for循环的循环体可包含多条语句,但必须用花括号{ }括起来 50915以下程序段运行后x的值为(D )。 int i,j,x=0; for(i=3;i>=1;i--) for(j=1;j<=i;j++) x=x+2; A. 14 B. 12 C.8 D.10 50916以下程序段运行后x的值为( B )。 int i=0,x=2; while(i++<=5) {x+=2; } A. 10 B. 14 C.12 D.8 50917若有定义: int i,x=0; 语句for(i=1;i<=3;i++) x+=2;与下列( B )程序段不等价。 A. i=1; for( ;i<=3;i++) x+=2; B. i=1; for( ; ;i++) x+=2; C.for(i=1;i<=3; ) {x+=2; i++;} D.i=1; for( ;i<=3; ) {x+=2; i++; } 50918以下程序段运行后x的值为( D )。 int i=0,x=0; for(;i<=5;i++,i++) {x+=3;} A. 15 B. 6 C.12 D.9 51000设已定义char s[ ]=\,则字符串所占的字节数是( B )。 A. 19 B. 16 C.18 D.14 51001数组元素下标的数据类型为( A )。 A. 整型常量、字符型常量或整型表达式 B. 字符串常量 C.实型常量或实型表达式 D.任何类型的表达式 51002( B )是正确的数组定义。 A. int n=10,x[n]; B. int x[10]; C.int N=10;int x[N]; D.int n; scanf(\ int x[n]; 51003若已定义 int arr[10]; 则不能正确引用arr数组元素的是( D )。 A. arr[0] B. arr[1] C.arr[10-1] D.arr[7+3] 51004若已定义 int x[4]={2,1,3}; 则元素x[1]的值为( C )。 A. 0 B. 2 C.1 D.3 51005以下程序段运行后,x[1]的值为( B )。 int x[5]={5,4,3,2,1}; x[1]=x[3]+x[2+2]-x[3-1]; A. 6 B. 0 C.1 D.5 51006( A )是合法的数组定义。 A. char str[ ]={48,49,50,51,52,53}; B. int a[5]={0,1,2,3,4,5}; C.int a[ ]=\ D.char str[ ]=?string?; 51007若有以下程序: void main( ) {char s[10]= \ r=s; printf(\ } 则( D )。 A. 执行时输出:ajskdl B. 执行时输出:a C.执行时输出:aj D.编译不通过 51008下面程序段的运行结果是( C )。 int m[]={5,8,7,6,9,2},i=1; do{ m[i]+=2; } while(m[++i]>5); for(i=0;i<6;i++) printf(\ \ A. 7 10 9 8 11 4 B. 7 10 9 8 11 2 C.5 10 9 8 11 2 D.5 10 9 8 11 4 51009下面程序段的运行结果是( A )。 int m[]={5,8,7,6,9,2},i=1; for(i=0;i<6;i++) {if(i % 2 !=0) m[i]+=10; } for(i=0;i<6;i++) printf(\ \ A. 5 18 7 16 9 12 B. 15 18 17 16 19 12 C.15 8 17 6 19 2 D.5 8 7 6 9 2 51010下面关于数组的叙述中,正确的是( A )。 A. 定义数组后,数组的大小是固定的,且数组元素的数据类型都相同 B. 定义数组时,可不加类型说明符 C.定义数组后,可通过赋值运算符\对该数组名直接赋值 D.在数据类型中,数组属基本类型 51011以下程序段的运行结果是( C )。 int a[]={1,2,3,4},i,j; j=1; for(i=3;i>=0;i--) {a[i]=a[i]*j; j=j*3; } for(i=0;i<4;i++) printf(\ \ A. 3 6 9 12 B. 18 12 9 4 C.27 18 9 4 D.54 18 9 4 51012下面关于字符数组的叙述中,错误的是( B )。 A. 可以通过赋值运算符“=”对字符数组整体赋值 B. 不可以用关系运算符对字符数组中的字符串进行比较 C.字符数组中的字符串可以整体输入、输出 D.字符数组可以存放字符串 51013若有定义:int a[10],i=2; 能正确引用a数组元素的是( B )。 A. a[9+i] B. a[10-i] C.a[10] D.a(7) 51014( A )是正确的数组定义。 A. int arr[10]; B. int n=5; int arr[n]; C.int N=5, arr[N]; D.int n; n=5; int arr[n]; 51015若有定义:int arr[15],n=5; 无法正确引用arr数组元素的是( C )。 A. arr[0] B. arr[n] C.arr[10+n] D.arr[15-n] 51016以下程序段运行后x的值为( B )。 int a[8]={1,2,3,4,5,6,7,8},i,x=0; for(i=0;i<8;i++,i++) x=x+a[i]; A. 36 B. 16 C.20 D.18 51017以下程序段运行后x的值为( A )。 int a[8]={1,2,3,4,5,6,7,8},i,x=0; for(i=1;i<8;i++,i++) x=x+a[i]; A. 20 B. 16 C.18 D.36 51018下面叙述错误的是( C )。 A. 数组中每一个元素都属于同一个数据类型 B. C语言数组名称是数组在内存中的首地址 C.C语言数组长度在定义数组时可不作确定 D.C语言规定可逐个引用数组元素但不能一次引用整个数组 51100以下程序段的运行结果是( D )。 main() { int i=4,j; j=i; pic(i+2*j-2,'*'); putchar('\\n'); for(j-=2;j>=0;j--) { pic(3-j, ' '); pic(i+2*j, '*'); putchar('\\n'); } } pic(int len,char c) { int k; for(k=1;k<=len;k++) putchar(c); } A. * B. ********** C.**** D.********** *** ********* ****** ******** ***** ********** ******** ****** ******* ********** ********** **** 51101以下程序段执行后输出的结果是( D )。 int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12}; printf(\ A. 2 B. 3 C.6 D.7 51102以下程序段执行后p的值是( A )。 int a[3][3]={3,2,1,3,2,1,3,2,1}; int j,k,p=1; for(j=0;j<2;j++) for(k=j;k<4;k++) p*=a[j][k]; A. 108 B. 18 C.12 D.2 51103不能对二维数组a进行正确初始化的语句是(A )。 A. int a[3][2]={{1,2,3},{4,5,6}}; B. int a[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 B. 4 C.0 D. 51105若有定义:int a[3][4];则表达式&a[2][1]-a的值为( C )。 A. 7 B. 8 C.9 D.10 51106以下程序段运行后sum的值为( D )。 int k=0,sum=0; int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; for(;k<3;k++) sum+=a[k][k+1]; A. 9 B. 18 C.19 D.21 51107若有定义int a[2][3];则合法引用数组元素的是( A )。 A. a[0][1/2] B. a[2][1] C.a[2][3] D.a[1][3] 51108在以下数组定义中,错误的是( A )。 A. int a[2][]={1,2,3,4,5}; B. int a[][2]={{0},{1}}; C.int a[2][2]={{1,2},{3}}; D.int a[][2]={1,2,3,4}; 51109若定义int a[][4]={1,2,3,4,5,6,7,8};则表达式sizeof(a[0][1])的值为(D )。 A. 1 B. 2 C.3 D.4 51110以下程序段运行后s的值是( C )。 int a[3][3]={1,2,3,4,5,1,2,3,4}; int i,j,s=1; for(i=0;i<3;i++) for(j=i+1;j<3;j++) s+=a[i][j]; A. 6 B. 120 C.7 D.240 51111设已定义: int a[][4]={0,0,0}; 则下列描述正确的是( C )。 A. 数组a包含3个元素 B. 数组a的第一维大小为3 C.数组a的行数为1 D.元素a[0][3]的初值不为0 51112在C语言中,若定义二维数组a[2][3],设a[0][0]在数组中位置为1,则a[1][1]在数组中位置是( C )。 A. 3 B. 4 C.5 D.6 51113以下程序段的运行结果是( A )。 int t[][3]={1,2,3,4,5,6,7,8,9,10,11,12}; printf(\ A. 5 B. 3 C.4 D.6 51114以下程序段运行后s的值是( B )。 int a[3][3]={1,2,3,1,2,3,1,2,3}; int i,j,s=0; for(i=0;i<3;i++) for(j=i;j<3;j++) s+=a[i][j]; A. 13 B. 14 C.15 D.12 51115以下(C )对二维数组arr的初始化是错误的。 A. int arr[2][3]={{1,2},{3,4}}; B. int arr[][3]={1,2,3,4,5}; C.int arr[2][3]={{1,2},{3,4},{5,6}}; D.int arr[2][3]={{1},{3,4,5}}; 51116若有定义:int a[3][4]={{1,2},{3,4},{5,6,7}}; ,则a[1][1]的值为(A )。 A. 4 B. 2 C.1 D.3 51117若有定义:int a[3][2]; ,则表达式&a[2][1]-a的值为( A )。 A. 5 B. 4 C.3 D.2 51118以下程序段运行后x的值为( C )。 int i=0,x=0; int a[3][3]={1,2,3,4,5,6,7,8,9}; for (;i<3;i++) x+=a[i][i]; A. 0 B. 12 C.15 D.18 51200设有下列语句,则( D )是对a数组元素的不正确引用,其中0≤i<10。 int a[10]={0,1,2,3,4,5,6,7,8,9}, *p=a; A. a[p-a] B. *(&a[i]) C.p[i] D.*(*(a+i)) 51201设已定义: char s1[8],s2[8]=\能将字符串\赋给数组s1的语句是( C )。 A. s1=s2; B. strcpy(s2,s1); C.strcpy(s1,s2); D.s1=\51202以下程序段的运行结果是( A )。 char str[3][2]={ 'a', 'b', 'c', 'd', 'e', 'f'}; str[2][0]= '\\0'; printf(\ A. abcd B. ab C.abcd0 D.abcd0f 51203有如下定义:char str[10]={ \ 则分配给数组str的存储空间是( B )个字节。 A. 11 B. 10 C.9 D.8 51204以下程序段运行后输出结果是( C )。 char a[]=\ char b[]=\ strcpy(a,b); printf(\ A. n B. u C.e D.m 51205以下程序段运行后输出结果是( A )。 char s[]=\ printf(\ A. 4 B. 5 C.8 D.9 51206以下程序段运行后a的值为( D )。 int a=2; char *s1=\ a=strcmp(s1,s2); A. -1 B. 2 C.1 D.0 51207以下对C语言字符数组描述中,错误的是( B )。 A. 可以用strlen函数计算字符数组中字符串的长度 B. 可以在赋值语句中通过赋值运算符\对字符数组整体赋值 C.存放在字符数组中的字符串,以'\\0'作为该字符串结束标志 D.字符数组可以存放字符串或字符 a1=F(x+y,x-y); a2=F(x-y,x+y); printf(\ } A. 16,16 B. 16,-16 C.-7,17 D.17,-7 51402以下叙述正确的是( C )。 A. 编译预处理命令行必须以分号结束 B. 程序中使用带参数的宏时,参数类型要与宏定义时一致 C.宏展开不占用运行时间,只占用编译时间 D.宏名只能包含大写字母和数字字符 51403以下叙述正确的是( B )。 A. 一个源程序只能有一个编译预处理命令行 B. 编译预处理命令行都必须以\开头 C.\定义了与30等价的符号常量PRICE D.使用带参数的宏定义时,应该说明每个参数的数据类型 51404以下叙述错误的是( D )。 A. 编译预处理命令行都必须以#号开始 B. 宏名可以用小写字母表示 C. 使用预处理命令\<文件名>\时,编译系统只在指定的系统目录下查找该文件 D. 宏定义只能放在main()函数之前 51405若有定义:#define N 3+2,则表达式N*2的值为( B )。 A. 5 B. 7 C.10 D.0 51406以下程序运行后输出结果是( C )。 #define MIN(m,n) m { int a=3,b=5,c; c=2*MIN(a,b); printf(\ } A. 3 B. 5 C.6 D.10 51407下列#include命令中,正确的是( A )。 A. #include \ B. #include [math.h] C.#include (math.h) D.#include {math.h} 51408下面程序的输出结果是( C )。 #include #define TUE 2*MON #define WED 3*TUE void main() {printf(\ } A. 2 B. 3 C.4 D.5 51409下面错误的叙述是( A )。 A. 预处理命令行必须位于C源程序的起始位置 B. 在C语言中,预处理命令行都以\开头 C.C程序在开头可以不包含预处理命令行:#include D.C语言的预处理可以实现宏定义和条件编译的功能 51410以下程序的运行结果是( B )。 #define MUL(r) r*r main() {int a=2,b=3,c; c=MUL(a+b)*2; printf(\ } A. 10 B. 14 C.36 D.50 51411下面程序的运行结果是( C )。 #define N 10 #define K(x) x*x #define T(x) (x*x) main( ) {int a,b; a=9%K(N); b=9%T(N); printf(\ } A. 9,9 B. 9,90 C.90,9 D.90,90 51412以下在任何情况下计算平方数时都不会引起二义性的宏定义是( D )。 A. #define XPF(x) x*x B. #define XPF(x) (x)*(x) C.#define XPF(x) (x*x) D.#define XPF(x) ((x)*(x)) 51413以下程序的运行结果是( C )。 #define X a+b main( ) { int a=3,b=4,s1; s1=2*X; printf(\ } A. 14 B. 6 C.10 D.8 51414下面叙述错误的是( C )。 A. “#define PRICE 30”命令的作用是定义一个与30等价的符号常量PRICE B. 预处理命令行都必须以“#”开头 C.预处理命令行必须以分号结束 D.C源程序中加入一些预处理命令是为了改进程序设计环境,提高编程效率 51415下面叙述正确的是( A )。 A. 宏展开不占用运行时间,只占用编译时间 B. 预处理命令也是C语句,必须以分号结束 C.一个源程序只能有一个预编译处理命令行 D.宏名必须用大写字母表示 51416下面叙述错误的是( D )。 A. “#inclue 51417若有定义:#define PI 3,则表达式PI*2*2的值为( A )。 A. 12 B. 4 C.322 D.不确定 51418若有定义:#define F 2+3,则表达式F*F的值为( C )。 A. 25 B. 13 C.11 D.17 51500下程序的运行结果是( 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; ast(a,b,&c,&d); printf(\ } A. 7,1 B. 1,7 C.7,-1 D.c、d未赋值,编译出错 51501有以下语句: int a[5]={0,1,2,3,4},i; int *p=a; 设0≤i<5,对a数组元素不正确的引用是( C )。 A. *(&a[i]) B. a[p-a] C.*(*(a+i)) D.p[i] 51502若有定义int *p1,*p2; 则错误的表达式是( A )。 A. p1+p2 B. p1-p2 C.p1 51503以下叙述错误的是( D )。 A. 存放地址的变量称为指针变量 B. NULL可以赋值给任何类型的指针变量 C.一个指针变量只能指向类型相同的变量 D.两个相同类型的指针变量可以作加减运算 51504以下程序段运行后,表达式*(p+4)的值为( B )。 char a[]=\ char *p; p=a; A. 'n' B. 'a' C.存放'n'的地址 D.存放'a'的地址 51505以下程序段运行后,表达式*(p++)的值为( A )。 char a[5]=\ char *p=a; A. 'w' B. 存放'w'的地址 C.'o' D.存放'o'的地址 51506若有定义: int *p,k=4; p=&k; 以下均代表地址的是( C )。 A. k, p B. &k, &p C.&k, p D.k, *p 51507若有定义:double *q,p;则能给输入项读入数据的正确程序段是( B )。 A. q=&p;scanf(\ B. q=&p;scanf(\C.*q=&p;scanf(\ D.*q=&p;scanf(\ 51508若已定义: int q=5; 对① int *p=&q;和② p=&q; 这两条语句理解错误的是( C )。 A. ①是对p定义时初始化,使p指向q;而②是将q的地址赋给p B. ①和②中的&q含义相同,都表示给指针变量赋值 C. ①是对p定义时初始化,使p指向q;而②是将q的值赋给p所指向的变量 D. ①和②的执行结果都是把q的地址赋给p 51509下面语句错误的是( A )。 A. int *p; *p=20; B. char *s=\C.char *str=\ D.char *str;str=\ 51510若有定义int a[2][3],*p=a;,则能表示数组元素a[1][2]地址的是( D )。 A. *(a[1]+2) B. a[1][2] C.p[5] D.p+5 51511若已定义: int a=5,*p; 且 p=&a; 则以下表示中不正确的是( B )。 A. &a==&(*p) B. *(&p)==a C.&(*p)==p D.*(&a)==a 51512若有以下程序段,则叙述正确的是( D )。 char s[]=\ char *p; p=s; A. s和p完全相同 B. 数组s的长度和p所指向的字符串长度相等 C.*p与s[0]相等 D.数组s中的内容和指针变量p中的内容相等 51513C语言中,二维数组元素在内存中的存放顺序是(A)。 A. 按行存放 B. 按列存放 C.由用户自己定义 D.随机存放 51514若有定义:int *p1,*p2; ,则不能用于指针变量p1、p2之间的运算符是( C )。 A. = B. = = C.+ D.- 51515下面叙述错误的是( C )。 A. 一个指针变量只能指向同一类型的变量 B. 一个变量的地址称为该变量的指针 C.可以将一个整数值赋给指针变量 D.任何指针变量都可以与空指针NULL进行比较 51516以下程序段运行后*(p+1)的值为( A )。 char a[]=\ char *p; p=a; A. 'o' B. 'g' C.a[1]的地址 D.不确定 51517以下程序段运行后*(p++)的值为( A )。 char a[5]=\ char *p; p=a; A. 'w' B. a[0]的地址 C.'o' D.a[1]的地址 51518若有定义:int a=4,*p=&a; ,则以下( B )均表示地址。 A. a,p B. &a,p C.&a,*p D.a,*p 51600以下程序段的运行结果是( B )。 enum weekday{ aa,bb=2,cc,dd,ee }week=ee; printf(\ A. ee B. 5 C.2 D.4 51601若有以下程序段,则不能正确访问数组元素a[1][2]的是( A )。 int (*p)[3]; int a[][3]={1,2,3,4,5,6,7,8,9}; p = a; A. p[1]+2 B. p[1][2] C.(*(p+1))[2] D.*(*(a+1)+2) 51602以下程序段的运行结果是( A )。 int a[]={1,2,3,4,5,6,7},*p=a; int n,sum=0; for(n=1;n<6;n++) sum+=p[n++]; printf(\ A. 12 B. 15 C.16 D.27 51603下面程序的运行结果是( A )。 main( ) { int a,b; int *p1=&a,*p2=&b,*t; a=10; b=20; t=p1; p1=p2; p2=t; printf(\ } A. 10,20 B. 20,10 C.10,10 D.20,20 51604以下程序段运行后变量s的值为( C )。 int a[]={1,2,3,4,5,6,7}; int i, s=1,*p; p=&a[3]; for(i=0;i<3;i++) s*=*(p+i); A. 6 B. 60 C.120 D.210 51605以下程序段运行后变量ans的值为( B )。 int a[]={1,2,3},b[]={3,2,1}; int *p=a,*q=b; int k,ans=0; for(k=0;k<3;k++) if(*(p+k)==*(q+k)) ans=ans+*(p+k)*2; A. 2 B. 4 C.6 D.12 51606以下程序运行结果是( A )。 main( ) { char a[]=\ for(p=a;p A. abcbcc B. abc C.cbabaa D.cba 51607以下程序的输出结果是( B )。 #include char *s=\ for(i=0;i<3;i++) printf(\ } A. CD BCD ABCD B. ABCD BCD CD C.AB ABC ABCD D.ABCD ABC AB 51608以下程序的输出结果是( B )。 #include {char *p=\ printf(\ } A. A B. B C.C D.D 51609下面程序执行时,若输入5 4 3 2 1<回车>,则输出为:( B ) #include while(p while(p>a) printf(\ } A. 5 4 3 2 1 B. 1 2 3 4 5 C.3 4 5 1 2 D.3 2 1 5 4 51610下面程序段的运行结果是( C )。 int a[]={1,2,3,4,5,6},*p=a; int i,sum=0; for(i=1;i<6;i++) sum+=*(p++); printf(\ A. 10 B. 12 C.15 D.20 51611下面程序运行结果是( D )。 main( ) { int a[]={1,2,3,4,5},*p,*q,i; p=a; q=p+4; for(i=1;i<5;i++) printf(\ } A. 24334251 B. 51423324 C.15243342 51612下面程序运行结果是( B )。 main( ) { static char a[]=\ char *p=a,*q=b; int i; for(i=0;i<=6;i++) if(*(p+i)==*(q+i)) printf(\ } A. geca B. aceg C.bdf D.fdb 51613以下程序段的运行结果是( B )。 int x[3]={1,2,3}; int *p; p=x; for(p++;p<&x[2];p++) printf(\ \ A. 3 B. 2 C.1 2 D.2 3 51614以下程序段的运行结果是( B )。 int x[]={2,3,4,5,6,7},*p=x; int i,s=0; for(i=1;i<5;i++) s+=p[i++]; printf(\ A. 14 B. 8 C.6 D.20 51615以下程序的运行结果是( C )。 main( ) { int x,y; D.42332415 int *p,*q,*t; x=23; y=45; p=&x; q=&y; t=p; p=q; q=t; printf(\ } A. 23,23 B. 45,45 C.23,45 D.45,23 51616以下程序段运行后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++) x*=*(p+i); A. 1 B. 6 C.24 D.120 51617以下程序段运行后x的值为( C )。 int a[]={1,2,3},b[]={4,3,3}; int *p,*q; int i,x; p=a; q=b; for(i=0;i<3;i++) if(*(p+i)==*(q+i)) x=*(p+i)*2; A. 2 B. 4 C.6 D.不确定 51700若定义如下结构,则能打印出字母M的语句是( B )。 struct person{ char name[9]; int age; }; struct person class[10]={\ A. printf(\ B. printf(\C.printf(\ D.printf(\51701以下程序段的运行结果是( D )。 union { int n; char str[2]; }t; t.n=80; t.str[0]='a'; t.str[1]=0; printf(\ A. 80 B. a C.0 D.97 51702一个结构体变量占用的内存大小是( B )。 A. 占内存容量最大的成员所需容量 B. 各成员所需内存容量之和 C. 第一个成员所需内存容量 D. 最后一个成员所需内存容量 51703以下程序段的运行结果是( C )。 union { int x; float y; char c; }m,n; m.x=5; m.y=7.5; m.c='A'; n.x=8; printf(\ A. 5 B. 7.5 C.65 D.8 51704若有定义: struct student {int num; char name[8]; char sex; float score; }stu1; 则变量stu1所占用的内存字节数是( A )。 A. 15 B. 16 C.8 D.19 51706若有定义: struct stuent {int num; char sex; int age; }stu1; 下列叙述不正确的是( B )。 A. student是结构体类型名 B. struct student是结构体类型名 C.stu1是用户定义的结构体类型变量名 D.num,sex,age都是结构体变量stu1的成员 51707下面程序的运行结果是( A )。 #include double d; }a[2]; void main() {printf(\ } A. 16 B. 8 C.4 D.2 51708下面程序的运行结果是( B )。 #include char c; }; struct {char a[2]; int i; union data d; }p; void main() {printf(\ } A. 5 B. 6 C.7 D.8 51709以下C语言共用体类型数据的描述中,正确的是( C )。 A. 共用体变量占的内存大小等于所有成员所占的内存大小之和 B. 共用体类型不可以出现在结构体类型定义中 C. 在定义共用体变量的同时允许对第一个成员的值进行初始化 D. 同一共用体中各成员的首地址不相同 51710设有如下语句: struct stu {int num; int age; }; struct stu s[3]={{101,18},{102,21},{103,19}}; struct stu *p=s; 则下面表达式的值为102的是( B )。 A. (p++)->num B. (*++p).num C.(*p++).num D.*(++p)->num 51711若有下面定义,能打印出字母'L'的语句是( A )。 struct class {char name[8]; int age; }; struct class s[12]={\ A. printf(\ B. printf(\C.printf(\ D.printf(\ 51712若有下面定义,对结构体变量成员不正确引用的语句是( B )。 struct pup {char name[20]; int age; int sex; }p[3],*q; q=p; A. scanf(\ B. scanf(\ C.scanf(\ D.scanf(\51713以下程序段的运行结果是( B )。 union { int num1; int num2; }s; s.num1=20; s.num2=30; printf(\ A. 20 B. 30 C.50 D.2030 51714若有定义: struct data { char a; float b[3]; long c; }d1; 则变量d1的长度是( D )。 A. 15 B. 12 C.4 D.17 51715若有定义:union u_type {int x; float y[3]; char z; }a; 则变量a的长度是( C )。 A. 1 B. 4 C.12 D.15 51716若有定义: struct teacher {int num; char name[10]; char sex; int age; }t1={2001,\ 则下列( A )对结构变量引用是正确的。 A. t1.name B. t1->name C.t1.name[0] D.t1->name[0] 51717下列( C )对结构类型变量定义是错误的。 A. struct teacher {int num; int age; }teach1; B. struct {int num; int age; }teach1,teach2; C.struct {int num; int age; }teacher; struct teacher teach1; D.struct teacher {int num; int age; }; struct teacher teach1; 51718若有定义: struct teacher {int num; char sex; int age; }teacher1; 则下面叙述错误的是( D )。 A. struct是结构类型的关键字 B. struct teacher是用户定义的结构类型 C.num、sex、age都是结构变量teacher1的成员 D.teacher1是结构类型名 51801若有以下定义: struct node { int data; struct node *next; }; struct node *p; 已建立如下图所示的链表:p → data│next┼→ data│next┼→...─→ data│NULL│ 指针p指向第一个结点,能输出链表所有结点的数据成员data的循环语句是( D )。 A. while(p!=NULL) { printf(\ p++; } B. while(p) { printf(\ p=p->next; } C.for( ; p!=NULL; p++) printf(\ D.for( ; p; p=p->next) printf(\ 51802若有以下定义: struct node { int data; struct node *next; } struct node m,n,k, *head, *p; 已建立如下图所示的链表: m n k head →│data│next┼→│data│NULL│ p →│data│next│ 指针head指向变量m, m.next指向变量n,p指向变量k,不能把结点k插到m和n之间形成新链表的程序段是( A )。 A. m.next = p; p->next = head->next; B. (*head).next = p; (*p).next = &n; C.head->next = &k; p->next = head->next; D.m.next = &k; k.next = &n; 51803若有以下定义: struct node { int data; struct node *next; } struct node *head,*p; 已建立如下图所示的链表: p↓ head →│data│next┼→│data│next┼→...─→│data│NULL│ 能删除指针p所指向结点的程序段是( C )。 A. p = p->next; head->next=p->next; free(p); B. free(p); p = p->next; head->next=p->next; C.head->next = p->next; free(p); D. free(p); head->next = p->next; 51804若有以下定义: struct node { int data; struct node *next; } *p,*q; 已建立如下图所示的链表: ... p →│data│next┼→│data│NULL│ q →│data│next│ 不能将指针q所指结点连到上图所示链表末尾的语句是( D )。 A. q->next=NULL; p=p->next; p->next=q; B. p=p->next; p->next=q; q->next=NULL; C.p=p->next; q->next=p->next; p->next=q; D.q->next=p->next; p=p->next; p->next=q; 51805若有定义: struct node { int data; struct node *next; }; 已建立如下图所示的链表: head →│1 │ ┼→│3 │ ┼→ ? →│25│ ┼→NULL 指针head指向链表首结点,以下函数的功能是( B )。 void fun(struct node * head) { struct node * p = head; while(p) { printf(\ \); p = (*p).next; break; } } A. 显示并删除单向链表 B. 显示单向链表中的第一个结点的数据 C. 显示单向链表中的所有数据 D.显示单向链表中除第一个结点外的所有数据 51806若有定义: struct node { int data; struct node *next; }; 已建立如下图所示的链表: head →│2 │ ┼→│4 │ ┼→ ? →│28│ ┼→NULL 指针head指向链表首结点,以下函数的功能是( D )。 void fun(struct node * head) { struct node * p = head; while(1) { p = p->next; printf(\ \ if(p) break; } } A. 显示单向链表中第一个结点的数据 B. 显示单向链表中最后一个结点的数据 C.显示单向链表中的所有数据 D.显示单向链表中除第一个结点外的所有数据 51807若按如下定义,则函数link的功能是( C )。其中head指向链表首结点,整个链表结构如下图: head →│data│ ┼→│data│ ┼ → ?→│data│NULL│ struct node {int data; struct node *next; }; int link(struct node* head) {int k=1; struct node *p=head; while(p!=NULL) {p=p->next; k++; } return k-1; } A. 删除链表head中的一个结点 B. 插入一个新元素到链表head中 C. 统计链表head中结点的个数 D.创建新链表head 51808若按如下定义,函数link的功能是( B )。其中head指向链表首结点,整个链表结构如下图: head →│data│ ┼→│data│ ┼→? →│data│NULL│ struct node {int data; struct node *next; }; void link(struct node* head) {struct node *p=head; while(p!=NULL) {if(p->data%2==1) printf(\\p->data); p=p->next; } } A. 计算链表head中结点的个数 B. 遍历链表head,输出表中值为奇数的元素 C. 删除链表head中的所有结点 D. 插入一个新元素到链表head中 51809以下程序的输出结果是( B )。 #include list[4]={{4,&list[1]},{3,&list[2]},{2,&list[3]},{1,0}}; void output(Node *head) {Node *p=head; while(p!=NULL) {printf(\\p->data); p=p->next; } } void main() {output(list); } A. 1 2 3 4 B. 4 3 2 1 C. 3 2 1 4 D. 2 1 3 4 51810若按以下定义: struct node {int data; struct node *next; } *head, *p; 并已建立如下图所示的链表结构,指针p和q分别指向图中所示结点: p↓ q↓ ... →│data│next┼→│data│NULL│ │data│ │ 则可以将指针q所指的结点连接到链表末尾的程序段是( A )。 A. q->next=NULL; p=p->next; p->next=q; B. q->next=p->next; p=p->next; p->next=q; C.p=p->next; q->next=p; p->next=q; D.(*q).next=(*p).next; p=(*p).next; (*p).next=q; 51811若有定义: struct node {int data; struct node *next; }; float link(struct node *head) {int m=0,n=0; struct node *p=head; while(p!=NULL) {m+=p->data; n++; p=p->next; } if(n>0) return 1.0*m/n; else return 0 } 调用link函数时head是指向链表首结点的指针,整个链表结构如下图: head →│data│next┼→│data│next┼→...─→│data│NULL│ 则函数link()的功能是( B )。 A. 统计链表head中结点的个数 B. 遍历链表head, 计算表中各结点成员data的平均值 C.遍历链表head,计算表中各结点成员data的总和 D.创建一个新链表head 51812若有以下定义: struct node {int data; struct node *next; } *p,*q,*t; 指针p、t和q分别指向图中所示结点: p↓ t↓ q↓ │data│next┼→│data│next┼→│data│next┼→... 现要将t和q所指结点的先后位置交换,同时要保持链表的连续,以下错误的程序段是( C ) A. t->next=q->next;p->next=q;q->next=t; B. p->next=q;t->next=q->next;q->next=t; C.q->next=t;t->next=q->next;p->next=q; D.t->next=q->next;q->next=t;p->next=q; 51813下列程序段运行后,表达式( B )的值为3。 struct point { int x; int y; } *p; struct point a[3]={1,2,3,4,5,6}; p=a; A. *(p+2) B. p[1].x C.p[2].x D.p[3].x 51814若有定义:int a[10]={0,1,2,3,4,5,6,7,8,9}, *p=a; , 则( D )表达式是错误的。 A. a[2] B. p++ C.p[2] D.a++ 51815下列程序段运行后,( C )对数组a元素的引用是错误的。(其中0≤i<4,0≤j<3) int i,j,(*p)[3]; int a[][3]={1,2,3,4,5,6,7,8,9,10,11,12}; p = a; A. *(*(a+i)+j) B. p[i][j] C.*(*(p+i)[j]) D.*(p[i]+j) 51816若有定义:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},(*p)[4];p=a; ,( A )对数组a元素的引用是正确的。 A. *(p[2]+3) B. **(p+4) C.*(p[4]) D.(**p)[2] 51817( B )能正确定义一个指向函数的指针。 A. int *p() B. int (*p)() C.(int *)p() D.int (*p()) 51818以下程序的运行结果是( A )。 main() { int a[3]={1,2,3}; int *num[3]; int **p,i; for(i=0;i<3;i++) num[i]=&a[i]; p=num; printf(\ } A. 1 B. 3 C.&a[0] D.num 51900以下程序中的循环执行了( C )次。 #define N 2 #define M N+1 #define NUM (M+1)*M/2 main() { int i,n=0; for(i=0;i A. 5 B. 6 C. 8 D. 9 51901错误的枚举类型定义语句是( B )。 A. enum car {A, B, C}; B. enum car {1, 2, 3}; C.enum car {X=0, Y=5, Z=9}; D.enum car {D=3, E, F}; 51902假定已有如下定义: int k ; enum colors {red, green, blue, pink} ; int a[3]; ( B )是对以下语句是否符合语法规则的正确判断。 a[red]=pink; /* 语句1 */ red=1; /* 语句2 */ k=green+blue; /* 语句3 */ A. 语句1和语句2正确,语句3错误 B. 语句1和语句3正确,语句2错误 C. 语句2和语句3正确,语句1错误 D. 语句1正确,语句2和语句3错误 51904在对无符号数的位运算中,操作数左移三位相当于( D )。 A. 操作数除以6 B. 操作数乘以6 C.操作数除以8 D.操作数乘以8 51905以下程序段运行后变量k的值为( D )。 int m=7,n=2,k; k=(m^n)<<1; A. 0 B. 98 C.20 D.10 51906若有定义:int m=7,n=10,k; 则执行语句k=m&n;后k的值为( A )。 A. 2 B. 1 C.17 D.15 51907以下程序的输出结果为( B )。 #include 51908若按如下类型说明,则( B )是错误的叙述。 typedef struct {int no; char *name; int cj; }S,*p; A. S是一个结构体类型名 B. p是一个结构体类型名 C.p是指向结构体类型S的指针类型名 D.no是结构体类型S的成员 51909下面程序段的运行结果是( A )。 int p=7,q=4; printf(\ A. 4 B. 5 C.6 D.7 51910若有以下类型说明,则叙述错误的是( C )。 typedef union {char name[10]; int age; }ustu,*umy; A. umy是指向共用体类型ustu的指针类型名 B. ustu是一个共用体类型名 C.umy是一个共用体类型名 D.age是共用体类型ustu的成员 51911定义枚举类型的关键字是( C )。 A. typedef B. include C.enum D.fnum 51912下面程序段的运行结果是( B )。 main() {int a=5,b=3; printf(\ } A. 0 B. 1 C.2 D.3 51913( A )对枚举类型的定义是错误的。 A. enum b{1, 2, 3}; B. enum a{A, B, C}; 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 )。 A. 0 1 B. 7 1 C. 1 2 D. 7 0 51915若有定义: typedef int * INTEGER; INTEGER p; 则下面叙述正确的是( C )。 A. p是与INTERGE相同的类型 B. p是一个整形变量 C.程序中可用INTEGER定义int类型指针变量 D.程序中可用INTEGER定义int类型变量 51918若有定义:enum num{a1,a2=3,a3,a4=10} ; ,则枚举常量a2、a3的值分别为( D )。 A. 1 2 B. 2 3 C. 3 3 D. 3 4 52000以下程序的功能是( C )。 #include { FILE *fp; long int n; fp=fopen(\ fseek(fp,0,SEEK_END); n=ftell(fp); fclose(fp); printf(\ } A. 计算文件wj.txt的起始地址 B. 计算文件wj.txt的终止地址 C.计算文件wj.txt的长度 D.将文件指针定位到文件末尾 52002文本文件quiz.txt的内容为\不包含引号),以下程序段的运行结果是( B )。 FILE *fp; char *str; if((fp=fopen(\ str=fgets(str,7,fp); printf(\ A. Progr B. Progra C.Program D.Programming 52004下面程序的运行结果是( B )。 #include { FILE *fp; int a=2,b=4,c=6,k,n; fp=fopen(\ fprintf(fp,\ fprintf(fp,\ %d\\n\ fclose(fp); fp=fopen(\ fscanf(fp,\ printf(\ %d\\n\ fclose(fp); } A. 2 4 B. 2 6 C. 4 2 D. 6 2 52005对于以下程序,说法正确的是( B )。 #include { FILE *fp; fp=fopen(\ if(fp!=NULL) { fprintf(fp,\ fclose(fp); printf(\ } } A. 程序运行后,当前工作目录下存在quiz.txt文件,其中的内容是\ B. 程序运行后,当前工作目录下存在quiz.txt文件,其中的内容是\C.程序运行之前,当前工作目录下一定不存在quiz.txt文件 D.程序运行之前,当前工作目录下一定存在quiz.txt文件 52006以下程序运行后,文件test.txt的内容是( B )。 #include { FILE *fp; char str[][10]={\ fp = fopen(\ if(fp!=NULL) fprintf(fp,\ fclose(fp); fp = fopen(\ if(fp!=NULL) fprintf(fp,\ fclose(fp); } A. first B. second C.first second D.second first 52007以下程序的可执行文件名为abc.exe。 #include void main(int argc,char *argv[]) {if(argc!=2) {printf(\ exit(1); } printf(\love %s\\n\ } 在DOS命令行输入:abc right<回车>,则输出结果是( A )。 A. Input error B. I love abc C.I love right D.I love 52009下列中错误叙述的是( C )。 A. C语言中的文件是一个字节流或二进制流 B. 可以以只读方式、只写方式或读写方式打开一个文本文件 C. 在程序中对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据 D. 当对文件的写操作完成之后,必须将它关闭,否则可能导致数据丢失 52011若在fopen函数中使用文件的方式是\,该方式的含义是( A )。 A. 以读/写方式打开一个文本文件 B. 以输出方式打开一个文本文件 C. 以读/写方式建立一个新的文本文件 D.以读/写方式建立一个新的二进制文件 52012当顺利执行了文件关闭操作时,fclose函数的返回值是( B )。 A. 1 B. 0 C.-1 D.一个非0值 52013( C )不是文件读库函数。 A. fgetc() B. fread() C.fputs() D.fscanf() 52015C语言中,对文件操作的一般步骤是( C )。 A. 打开文件,定义文件指针,读写文件,关闭文件 B. 定义文件指针,读文件,写文件,关闭文件 C.定义文件指针,打开文件,读写文件,关闭文件 D.操作文件,定义文件指针,修改文件,关闭文件 52016下面程序运行后,文件d_f.dat的内容是( B )。 main() { FILE *fp; int i=10,j=20; fp=fopen(\ fprintf(fp,\ fclose(fp); fp=fopen(\ fprintf(\ fclose(fp); } A. 10 B. 10 20 C. 20 D.20 10 52017下面程序运行后,屏幕显示write ok!,则下面叙述正确的是( B )。 main() { FILE *fp; fp=fopen(\ if(fp!=NULL) { fprintf(fp,\ fclose(fp); printf(\ } } A. 当前工作目录下存在data.txt文件,其中的内容是“write ok!” B. 当前工作目录的data.txt文件已经关闭 C.当前工作目录下找不到data.txt文件 D.当前工作目录的data.txt文件已经打开 52018下面程序运行后,屏幕显示File open error!,则可能的原因是( C )。 #include { FILE *fp; char str[256]; fp = fopen(\ if(fp==NULL) { printf(\ return; } fscanf(fp,\ fclose(fp); } A. 当前工作目录下的test.txt文件是空文件 B. 函数fopen()的参数是错误的 C.当前工作目录下没有test.txt文件 D.test.txt文件已经打开 二、填空题(本题共6小题,每空1.5分,共18分) 1、若有定义:int a[3][2]={1,2,3,4,5,6};则a[2][0]的值是___5____ ;a[0][1]的值是 _2____。 2、if(a>b) max=a;else max=b;等价于 max=a>b?a:b 。(用条件运算符表示) 3、设有如下数组定义: char str[8]={ \ 则分配给数组str的存储空间是 8 个字节。 4、int i,*p;p=&i;,则p表示 指向整型变量的指针,值为i的地址 ,*p表示 i的值 。 5、结构化程序设计的基本思想认为:任何程序都可以用 顺序结构 、 选择结构 、 循 环结构 这三种结构来表示。 6、C语言中允许的基本数据类型包括:整型、实型、字符型,与它们相应的变量类型说明符 分别是: int 、 float 、 char 。 7、一个C语言程序中必须存在的函数是 main()函数 ,在一个字符数组中,表示一个字符串结束的转义符为 ?\\0? 。 9、循环语句:for(k=1;k<=5;k++)执行结束后,k的值为 6 。 11、若有定义:int a[3][2]={1,2,3,4,5,6};则a[0][0]的值是__1__ ;a[1][1]的值是 4___。 12、设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f的值的数据类型为 双精度型 。 13、已有定义:int x=3,y=4,z=5;,则表达式!(x+y)&&y+z/2的值是 0 。 14.C语言的预处理语句以 #(井号) 开头。 15.表达式7+8>2 && 25 %5的结果是_ 0 __. 16.C语言中putchar(c ) 函数的功能是 向标准输出设备输出一个字符 。 17.int *p 的含义是 定义一个指向整形变量的指针p 。 18.指针是将其它变量的 存储地址 作为其值的变量。 19.数组 int a[3][4];共定义了 12 个数组元素。 三、程序填空题(本题共4小题,共20分) 1、 求1~100以内能被3整除且含数字5的数。(4分) #include { int temp; temp=*x; *x=*y; *y=temp; } void main( ) { int a,b; printf(“Please input two integer:”); scanf(“%d%d”, &a, &b ); printf(“Before exchanged:”); printf(“a=%d\\t b=%d\\n”,a,b); swap(&a, &b) ; printf(“After exchanged:”); printf(“a=%d\\t b=%d\\n”, a, b );} 5、以下函数的功能是计算s=1+2+…+ n,请填空。(4分) int fun(int n) { int s=0, i; for(i=1,i<=n;i++) { s= s + i ; } return s;} 6、以下程序输入了100个数存放在一个数组中, 输出其中最大者与最小者, 及它们的平均值。(每空2分,共6分) main() { int a[100]; int max,min,average,sum=0; int i; for(i=0;i<100;i++) { printf(\ scanf(\ } max=a[0]; min=a[0]; for(i=0;i<=99;i++) { if(maxa[i]) min=a[i] ; sum=sum+a[i] ; } average = sum/100 ; printf(\ printf(\ printf(\ printf(\ } 7、从键盘为一个N×N的整型数组输入数据,并将每一行的最小值显示出来。 请填空。(每 空2分,共6分) #define N 6 main() { int a[N][N], m[N], i, j; printf(\ for (i=0; i
正在阅读:
中国男性内裤行业市场前景分析预测年度报告(目录) - 图文03-18
万华化学(600309):万华化学点评报告:Q4业绩大超预期,MDI高景气有望维系08-21
2010年宁夏中考数学试题及答案08-20
初学CAD自学教材(很完整)分解11-16
内科学第八版名词解释重点01-12
英语节奏训练教程02-16
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 填空
- 福建省
- 输出
- 二级
- 语言
- 选择
- 程序
- 考试
- 蛋白质结构预测
- 平方环载波提取电路设计 - 图文
- 人教版五年级语文下册23 刷子李 教案1
- 文件会稿单(改版次)
- 工程之星操作步骤
- 数据库实验4要求
- 天津房地产开发企业信用管理办法试行
- 1927年北伐军和北洋军阀的军事力量对比
- 2012年学位英语必备复习资料
- 2014年广东中考实用类文本阅读
- 逆变器的下垂控制
- 东大机械线下作业特种加工技术B答案
- Excel的习题,有答案
- 浙商财产保险股份有限公司人身意外伤害险理赔操作规范(试行)
- 英语新闻中常见的世界地名
- 甲级单位编制装载机结构件项目可行性报告(立项可研+贷款+用地+2013案例)设计方案
- 当前信访工作的特点、成因及对策
- 万科物业社区文化社团组织成立指引
- ABB传感器PFEA111-112中英文手册
- 工程热力学期末试卷及答案