C语言练习题真答案(汇总版)
更新时间:2023-11-12 05:06:01 阅读量: 教育文库 文档下载
- c语言基础编程训练题推荐度:
- 相关推荐
0在C语言中,合法的字符常量是( D )。 A. '字' B. \C.\ D.'\\x41'
1下面叙述正确的是( B )。
A. 程序中必须包含有输入语句 B. 变量按所定义的类型存放数据 C.main函数必须位于文件的开头 D.每行只能写一条语句
2错误的叙述是( D )。
A. 一个C语言源程序可由一个或多个函数组成 B. 若一条语句较长,也可分写在下一行上
C.C程序必须包含一个main()函数 D.构成C语言源程序的基本单元是算术表达式 3(C)是关于C语言数据类型的正确叙述。
A. 变量必须先定义后使用 B. 不允许使用空类型 C.枚举类型不是基本类型 D.数组并不是构造类型 4 main( )函数的位置( B )。
A. 必须在自定义函数前面 B. 可以在自定义函数后面 C.必须位于程序的最前面 D.必须在自定义函数后面 5 C语言函数体由( C )括起来。
A. < > B. ( ) C.{ } D.[ ]
6( A )是不正确的叙述。
A. 注释说明只能位于一条语句的后面 B. C源程序的基本组成单元是函数 C.C源程序可由一个或多个函数组成 D.每条语句最后必须有一个分号 7一个C语言源程序是由( B )。
A. 一个主程序和若干子程序组成 B. 函数组成 C.若干过程组成 D.若干子程序组成
8结构化程序设计的三种基本结构是( C )。
A. 函数结构、判断结构、选择结构 B. 平行结构、嵌套结构、函数结构 C.顺序结构、选择结构、循环结构 D.判断结构、嵌套结构、循环结构 9C源程序的调试是指对源程序进行( C )。
A. 录入与编辑 B. 查错与编译 C.查错与排错 D.连接与运行 10C语言中,可将一系列语句置于( C )从而构成复合语句。 A. 一对尖括号\之间 B. 一对圆括号\之间 C.一对花括号\之间 D.一对方框号\之间 11构成C源程序的基本单位是( D )。
A. 语句 B. 变量 C.运算符 D.函数
12以下叙述中正确的是( A )。
A. C源程序中注释部分可以出现在程序中任意合适的地方 B. 一对花括号\只能作为函数体的定界符
C.C源程序编译时注释部分的错误将被发现 D.构成C源程序的基本单位是函数,所有
函数名都可以由用户命名
13下面叙述正确的是( D )。
A. 每行最多只能写两条语句 B. 程序中必需含有自定义函数
C.main()函数必须位于源程序文件的开头 D.所有语句都必须以分号\结束
14下面叙述错误的是( B )。
A. 若一条语句较长,可分写在下一行或多行上 B. 构成C语言源程序的基本单位是语句
C.C源程序中大、小写字母是有区别的 D.一个C源程序可由一个或多个函数组成 15( A )是关于C语言数据类型的正确叙述。 A. 枚举类型不是基本类型 B. 数组不是构造类型
C.变量使用前应定义相应的数据类型 D.不允许使用空类型 16 C源程序中main()函数的位置( C )。
A. 必须位于程序的最前面 B. 必须在系统库函数后面 C.可以在自定义函数后面 D.必须在自定义函数前面
18下面叙述错误的是( D )。
A. C源程序可由一个或多个函数组成 B. C源程序必须包含一个main()函数 C.一个C源程序的执行是从main()函数开始,直到main()函数结束 D.注释说明部分只能位于C源程序的最前面
20C语言的下列运算符中,优先级最高的运算符是( A )。 A. ++ B. += C.|| D.!= 21( D )为正确的用户标识符。
A. struct B. 5f C._f 0.6 D._for
22C语言基本数据类型包括( B )。
A. 整型、实型、逻辑型 B. 整型、实型、字符型 C.整型、字符型、逻辑型 D.整型、实型、字符串型 23( A )为合法的常量。
A. 52686L B. E-7 C.1.2E-2.1 D.'E12' 24( C )为正确的变量名。
A. -k15 B. int C.k_5 D.k.jeep 25( D )为正确的字符常量。
A. ''\\\\'' B. \ C.\ D.'M' 26( C )为非法的字符串常量。
A. \ B. \ C.'efg' D.\
27 C语言整型数据在内存中的代码是用( C )表示的。 A. 原码 B. 反码 C.补码 D.BCD码 28以下选项中,合法的实型常数是( B )。 A. E-3 B. .2E1 C.1E.5 D.1.5E
29下列C语言合法的数据类型关键字是( B )。 A. Double B. unsigned C.integer D.Char 30 Turbo C中,int型数据占用的字节数( B )。 A. 由用户自己定义 B. 为2个字节 C.是任意的 D.等于所用计算机的字长
31 Turbo C中,基本数据类型存储空间长度的排列顺序是( A )。 A. char 32以下叙述中正确的是( A )。 A. 字符常量用一对单撇号' '作为单个字符的定界符 B. 字符常量和字符串常量一样,都是用双引号括起来 C.字符常量存储时,自动在字符后加一个字符结束符号'\\0' D.字符常量和字符串常量所分配的内存空间大小是一样的 33( B)为正确的用户标识符。 A. 3_row B. max_at C.union D.min-5 34C语言的基本数据类型包括( A )。 A. 整型、实型、字符型 B. 整型、实型、空类型 C.整型、字符型、指针型 D.整型、实型、逻辑型 35( D )为合法的常量。 A. 5,326 B. 3.21E-6.5 C.'b_k' D.1.23E+8 36( D )为正确的变量名。 A. 5_pro B. case C.else D.pro_5 37( C )为正确的字符常量。 A. 'bcd' B. '\\084' C.'@' D.'165' 38( A )为非法的字符串常量。 A. '123' B. \ C.\ D.\ \ 40已知'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 41若有定义 int m=6; 则正确的赋值表达式是( C )。 A. m*7 B. m*5=8 C.m-=m*6 D.double(-m) 42语句 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 43语句 x=5%4+(4/5); 运行之后,整型变量x的值为( A )。 A. 1 B. 2 C.3 D.0 44(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; 45若有定义 int a,x; 则语句 a=(x=8,x+8); 运行后,变量a、x的值依次为( A )。 A. 16, 8 B. 8, 8 C.16, 16 D.8, 16 46若变量 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) 47若有定义:int a,b; float x,则以下不符合C语言语法的表达式是( A )。 A. x%7 B. x/=a-b C.a=b=2 D.x=(float)a/b 48若有定义: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 49若有定义:int a=6; 则语句 a*=a-=a/=3; 运行后,a的值是( B )。 A. 10 B. 0 C.34 D.24 50下面关于C语言变量的叙述中,错误的是( A )。 A. 可以用define关键字定义变量 B. 变量名用大小写字母是有区别的 C.C语言允许不同基本类型的变量之间进行混合运算 D.C语言中要求对变量作强制定义的主要理由是:便于确定类型和分配空间 51若有定义:int a=5,b=2; 则表达式b= (a!=5)的值为( B )。 A. 5 B. 0 C.3 D.2 52逗号表达式 (a=15,a*4),a+15 的值为( B )。 A. 15 B. 30 C.75 D.60 53若有定义:int b=-15; 则( A )为正确的赋值表达式。 A. b+=b*3 B. b=*5 C.*b=6 D.b+10=-5 54若有定义: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 55若有定义:int a,b=5; 语句a=(b/2)+b%2; 运行后,a的值为( B )。 A. 0 B. 3 C.4 D.2 56(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; 57若有定义:int a=3; 语句a+=a-=a*a; 运行后,a的值为( C )。 A. 0 B. -3 C.-12 D.-6 58若有定义 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) 60下列语句中,符合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; 61( A )是正确的叙述。 A. (int)5.0/6 与 5/6 等价 B. 'G' 与\等价 C.5/6 与 5.0/6.0 等价 D.++3与4 等价 62下面叙述中,错误的是( D )。 A. C语言中的表达式求值,是按其运算符的优先级先高后低的次序进行 B. 自增与自减运算符的结合方向为“自右至左” C.关系运算符的优先级低于算术运算符 D.C语言算术运算符不包含模运算符“%” 63( C )是正确的叙述。 A. 表达式 \是合法的 B. 若变量x, y为整型,则 (a+b)++是合法的 C.强制类型转换运算的优先级高于算术运算 D.表达式 'm' * 'n' 是不合法的 64若有定义 int i=1,j=9; 则表达式 (++j)*(i--) 的值为( B )。 A. 0 B. 10 C.9 D.8 65设整型变量x为7,使整型变量y不为2的表达式是( A )。 A. y=x%3 B. y = x/3 C.y =(++x)/3 D.y=8-(--x) 66若已定义 int a=3,b=2,c=1; 则语句 ++a||++b&&++c; 运行后b的值为( D )。 A. 0 B. 3 C.1 D.2 67若有定义:int i=5,j=4;则语句 i/=++j; 运行后i的值为( B )。 A. 10 B. 1 C.1.25 D.0 68若已定义:int a=2,b=2; 则表达式 (a+(b++), b) 的值是( A )。 A. 2 B. 3 C.4 D.6 69若有定义:int r,x=245; 则语句 r=x/100%9; 运行后r的值为( A )。 A. 2 B. 5 C.0 D.27 70若已定义:int i=6,t; 则语句 t=3+(--i); 运行后t的值为( C )。 A. 9 B. 7 C.8 D.5 71C语言的 % 运算符按运算对象的个数属( C )。 A. 单目运算符 B. 四目运算符 C.双目运算符 D.三目运算符 72若已定义:int a=5,b=9,c=6; 则语句 b++; ++c; a=b-c; 运行后a的值为( B )。 A. 5 B. 3 C.2 D.4 73下面叙述正确的是( B )。 A. 2/3 与 2%3 等价 B. 5/(int)4.0 与 5/4 等价 C.++2 与 3 等价 D.++2与--3 等价 74下面叙述错误的是( A )。 A. 算术运算符中只有\、\优先级高于关系运算符 B. 模运算符\是C语言基本的算术运算符 C.自加和自减运算符只能用于变量,而不能用于常量或表达式 D.算术运算符中不包含\运算符 75下面叙述正确的是( A )。 A. C语言中整型与字符型变量的混合运算表达式的结果是整型 B. (3+9)++ 是正确表达式 C.模运算符\两边运算数的数据类型是任意的 D.\是正确表达式 76若有定义:int i=3,j=6; 则表达式(--i)*(j++)的值为( C )。 A. 18 B. 15 C.12 D.10 77若有定义:int a,b=6; 语句a=--b; 运行后,a、b的值分别是( C )。 A. 5 6 B. 6 5 C.5 5 D.6 6 78若有定义:int x,y,z; 语句 x=(y=z=3,++y,z+=y); 运行后,x的值为( C )。 A. 6 B. 8 C.7 D.3 80以下程序运行时,若从键盘输入5,则输出结果是( D )。 main() { int a; scanf(\ if(a++>5) printf(\ else printf(\ } A. 7 B. 4 C.5 D.6 81若已定义 float x; 要从键盘输入数据36.582给变量x,则应选用( B )语句。 A. scanf(\ B. scanf(\C.scanf(\ D.scanf(\ 82若已定义 double y; 拟从键盘输入一个值赋给变量y,则正确的函数调用是( C )。 A. scanf(\ B. scanf(\C.scanf(\ D.scanf(\ 83已有定义 char s; 使用scanf( )函数输入一个字符给变量s,不正确的函数调用是( D )。 A. scanf(\ B. scanf(\C.scanf(\ D.scanf(\ 84函数putchar( ) 的功能是向终端输出( A )。 A. 一个字符 B. 多个字符 C.一个关系表达式 D.一个实型变量值 85若已定义 int a=11; 执行以下语句后的输出结果是( B )。 printf(\ A. a=11, a=11, a=b B. a=11, a=13, a=b C.a=11, a=13, a=c D.a=11, a=12, a=13 86若有定义 int m=4321,n=123,k=21; 语句printf(\执行后的输出结果是( C )。 A. 4321432143211231231232121 B. 43211232 C.4321+123+21 D.432+123+02 87已有如下定义和输入语句, char c1,c2;int x; scanf(\ 若要求x、c1、c2的值分别为9、'K'和'H',正确的数据输入是( A )。 A. K9H B. K 9 H C.K9 H D.9KH 88以下程序段的运行结果是( B )。 int a=1; printf(\ A. 3,3,1 B. 2, 2, 1 C.1, 2, 3 D.3, 2, 1 89以下程序的运行结果是( D )。 void main() { int a=65; char c='A'; printf(\ } A. A+A=AA B. 65+A=65A C.65+65=130 D.65+A=130 90若已定义:int x=7;float y=7.0; 以下语句中能输出正确值的是( B )。 A. printf(\ B. printf(\C.printf(\ D.printf(\91putchar函数可以向终端输出一个( A )。 A. 字符或字符型变量值 B. 整型变量表达式值 C.实型变量值 D.字符串 92若已定义:int a=6;float b=1.5; 要求输出形式为: 6 * 1.50=9.00 ,应选用的正确输出语句是( B )。 A. printf(\ B. printf(\C.printf(\ D.printf(\93若有定义 float x; 要从键盘输入数据6.02赋给x,则应选用( D )语句。 A. scanf(\ B. scanf(\C.scanf(\ D.scanf(\ 94 只能向终端输出一个字符的是( D )。 A. printf()函数 B. scanf()函数 C.getchar()函数 D.putchar()函数 95 若有语句 int a; char c; scanf(\为将整数135赋给a,字符'6'赋给c,正确的数据输入方式是( B )。(说明: A. 135__6 A. 多个字符 B. 一个字符 C.一个实型变量值 D.一个整型变量表达式 97 若有定义 int a=8,b=5; 要实现输出形式为: 8*5=40 ,正确的printf()函数调用语句是( D )。 A. printf(\ B. printf(\ C.printf(\ D.printf(\ 98若有定义:char c1='A',c2='B'; 语句printf(\运行后的结果为( D )。(说明:'A'的ASCII码的十进制值为65) A. A+B=131 B. 65+66=AB C.A+B=AB D.65+66=131 100有以下程序: main() { int c; while((c=getchar())!= '\\n') { switch(c-'2') { case 0 : case 1 : putchar(c+4); case 2 : putchar(c+4); break; case 3 : putchar(c+3); default: putchar(c+2); break; } } printf(\ } 当输入:247<回车>,程序的输出结果是( B )。 A. 689 B. 6689 C.66778 D.66887 101若已定义 int x=5,y=9,z; 语句 z=x>=y; 运行后z的值为( C )。 A. 1 B. .t. C.0 D..f. 102判定逻辑值为“真”的最准确叙述是( D )。 A. 1 B. 大于0的数 C.非0的整数 D.非0的数 103若已定义 int x=-16,y=-12,z; 语句z=x<=y; 运行后z的值为( B )。 A. .t. B. 1 C..f. D.0 104能正确表示数学关系式 100≤s<300的表达式为( C )。 A. (s>=100) & (s<300) B. 100<= s<300 C.(s>=100) && (s<300) D.(s>=100) and (s<300) 105若定义 int a=2,b=3; 则表达式 !a||b 的值为( B )。 A. 0 B. 1 C.2 D.3 106若定义 int a=-5,b=-8,c=-12; 则表达式 a>=b||b 107下列表达式( C )不能用来判断整型变量x中的值是否为奇数。 A. x%2==1 B. !(x%2==0) C.!(x%2) D.x%2 108若有定义:int a=3,b=2,c=3; 则值为0的表达式是( D )。 A. (a-b)==(c/b) B. a>=c C.c-b||a+b&&(b*c-a-c) D.(b*c-a-c)&&(b*c-a-b) 109若已定义:int x=4,y=2,z=0; 则表达式 (x-y<=y)|| (y=z)的值是( A )。 A. 1 B. 0 C.2 D.4 110若有定义:int a=3,b=2,c=1,k; 则表达式k=a>b>c的值是( A )。 A. 0 B. C.2 D.3 111以下运算符中优先级最高的是( D )。 A. <= B. && C.|| D.! 112执行以下语句后,b的值是( A )。 int a=5,b=6,c=1,x=2,y=3,z=4; (a=c>x) || (b=y>z); A. 0 B. 1 C.-1 D.6 113 x的值在-20至-5之间为“真”,否则为“假”的正确逻辑表达式为( B )。 A. -20 114若有定义:int a; 则表达式( B )不能用来判断a值为奇数是“真”,偶数是“假”。 A. a%2==1 B. !(a%2) C.a%2 D.!(a%2==0) 115若有定义:int a=1,b=2,c=3,d=4,t=2,k=2; 语句(t=a A. 2 B. 1 C.0 D.- 116若有定义:int x=1,y=2,z=3; 则表达式( A )的值为0。 A. !((x 118若有定义: int a; 且表达式 !a的值为0,则表达式( A )的值为1。 A. a!=0 B. a==0 C.a=0 D.!(a<0 || a>0) 120以下程序运行后,a的值是( C )。 main() { int a,b; for(a=1,b=1;a<=100;a++) { if(b>=20) break; if(b%3==1) { b+=3; continue; } b-=5; } } A. 101 B. 100 C.8 D.7 121已定义 double k=3.6; 则正确的赋值表达式是( D )。 A. k=double(-3.6) B. k%3 C.k=k*(-1.0)=-3.6 D.k+=k-=(k=1.2)*(k=3) 122已定义 char c = 'A' ; 则正确的赋值表达式是( B )。 A. c=\\028 B. c=(c++)%4 C.c+1=66 D.c+=127-- 123已定义 int m ='A'; 则正确的表达式是( C )。 A. 2*m=m++ B. m=int(-3.2) C.m%3 D.m=m-m=m-5 124设已定义 float a=2.0,b=3.0; 使a值为5.0的表达式是( A )。 A. a+= b B. a*=b+2.0 C.a/=b+2.0 D.a-=b+2.0 125若已定义 int m=7;float k=5.5; 则表达式 k+ m%2/4 的值为( D )。 A. 6.375 B. 6.75 C.5.75 D.5.5 126若已定义 int a=3,b=3,x=1,y=2; 表达式 (a=y>x)&&(x=b>a) 的值是( B )。 A. 6 B. 1 C.9 D.0 127若有定义:int a=2,b=3; float x=5; 则表达式x*b/a的值是( A )。 A. 7.5 B. 7 C.6 D.5 128若有定义:int x=8; float y=130;char z='A'; 则表达式x+z%(int)y的值是( C )。 [已知'A'的ASCII码的十进制值为65] A. 运行时产生错误信息 B. 8 C.73 D.8.5 129若已定义:int m=7,n=4; float x=3.0,y=8.0,k; 则执行语句k=m/2+n*x/y;后,变量k的值是( C )。 A. 3 B. 4 C.4.5 D.5 130若有定义:float x=2,y=4,h=3; 下列表达式中与(x+y)*h/2.0计算结果不相符的是( C )。 A. (x+y)*h/2 B. (x+y)*h*1/2 C.(1/2)*(x+y)*h D.h/2*(x+y) 131表达式2+sqrt(16.0)/4结果的数据类型是( A )。 A. double B. int C.char D.void 132若有定义:int a=4,b=5,c=6; 则表达式 (1.0*a+b)/c的值是( A )。 A. 1.5 B. 1 C.4 D.4.5 133下列运算符中优先级最低的是( A )。 A. = B. ! C.> D.* 134若有定义:float x=3.5,y=3.6; 则表达式( A )的值为6。 A. (int)x+(int)y B. x+y C.(int)(x+y) D.int(x+y) 135若有定义:int x; char c='A'; 则正确的赋值表达式是( A )。(说明:'A'的ASCII码的十进制值为65,'a'的ASCII码的十进制值为97) A. x=c+32 B. x=c+'ABC' C.x=c+'CBA' D.x='ABC' 136若有定义:float x=2,y; int a=3; 语句y=1*(x+a)/3; 运行后,y的值为( D )。 A. 2.0 B. 0 C.1.0 D.1.666667 137若有定义:float x=3.5,y=5.5; 则表达式( B )的值为2。 A. (x+y)%7 B. (int)(x+y)%7 C.int(x+y)%7 D.(int)x+y%7 138若有定义:int a=6,b=7,k=0,t=1; 语句 (k=a A. 0 0 B. 1 C.0 1 D.1 0 140以下程序段的运行结果是( D )。 int x=3; do{ printf(\\x-=2 ); }while(!(--x)); A. 1 B. 30 C.死循环 D.1, -2 141以下程序运行时,若从键盘输入6,则输出结果是(A )。 void main() {int x; scanf(\ if (x-->6) printf(\ else printf(\ } A. 4 B. 5 C.6 D.3 142以下程序的运行结果是( C )。 void main() {int m,n=1,t=1; if(t== 0) t=-t; else m=n>=0?7:3; printf(\ } A. 3 B. - C.7 D. 143对于整型变量a,赋值语句 a=(a%3==0?1:0); 与(D )语句不等价。 A. if (a%3= =0) a=1; else a=0; B. if (a%3!=0) a=0; else a=1; C.if (a%3) a=0; else a=1; D.if (a%3) a=1; else a=0; 144以下程序运行的结果是(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 145若已定义 int a=1,b=2,t=3; 则执行以下程序段后变量a,b,t的值分别为(A )。 if(a 146以下程序段运行后变量k的值为( C )。 int a=3,b=2; int k; k=(--a==b++)?a:b+1; A. 0 B.1 C.2 D.3 147以下程序的运行结果是( 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 148以下程序的运行结果是( 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 149以下程序的运行结果是( D )。 void main( ) { int a; if(a=6) printf(\ else if(a>6) printf(\ else printf(\ } A. 运行时产生错误信息 B. 9 C.8 D.6 150若有定义:int x=10,y=8,a; 则执行语句a=((--x==y)? x: y);后,变量a的值是( A )。 A. 8 B. 9 C.10 D.0 151若有定义: 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 152以下条件语句中(其中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; 153以下程序段运行时,若从键盘输入5,则运行结果是(D )。 int a,y=10; scanf(\ if (a>10) y=a+6; printf(\ A. 10 B. 1 C.16 D.15 154以下程序的运行结果是(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 155若有定义: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; 156以下程序段的运行结果是( 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 157以下程序段的运行结果是( 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 158以下程序段运行后x的值为( D )。 int a=3,b=6,x; x=(a==b)?a++:--b; A. 4 B. 3 C.6 D.5 160下列程序段中,非死循环的是( 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(;;) 161若已定义 int a; 不会产生死循环的语句是(C )。 A. for( ; ;a+= 2); B. for(a=10; ;a--); C.for( ;(a=getchar())!= '\\n'; ); D.while(-1) {a++;} 162在循环语句的循环体中,break语句的作用是( B )。 A. 继续执行break语句之后的循环体各语句 B. 提前结束循环,接着执行该循环后续的语句 C.结束本次循环 D.暂停程序的运行 163以下程序段运行后,循环体中的 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次 164 do?while循环与while循环的主要区别是( D )。 A. while循环体至少无条件执行一次,而do?while循环体可能都不执行 B. do?while循环体中可使用continue语句,while循环体中不允许出现continue语句 C.do?while循环体中可使用break语句,while循环体中不允许出现break语句 D.do?while循环体至少无条件执行一次,而while循环体可能都不执行 165以下程序段运行后,循环体运行的次数为( A )。 int i=8,a=0; for ( ;i<8;i++) a+= i; A. 0次 B. 1次 C.8次 D.无限 166以下程序段运行后变量a的值为( C )。 int i=1,a=0; for( ;i<3;i++) { continue; a+=i; } A. 6 B. 3 C.0 D.5 167有以下程序: 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 168以下程序的运行结果是( 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 169以下程序的运行结果是( 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 170以下程序的运行结果是(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 171以下程序的运行结果是(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 172以下程序运行时,循环体的执行次数是( 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 173若有定义: int i,x; (A )不是死循环。 A. for(x=5;x>0;x--) ; B. while(x=1) ; C.for(i=10; ;i--) ; D.for( ; ;i+=2) ; 174下面叙述正确的是(D )。 A. for循环只能用于循环次数已经确定的情况 B. for循环是先执行循环体语句,后判断表达式 C.在for循环中,不能用break语句跳出循环体 D.for循环的循环体可包含多条语句,但必须用花括号{ }括起来 175以下程序段运行后x的值为(B )。 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 176以下程序段运行后x的值为( B )。 int i=0,x=2; while(i++<=5) {x+=2; } A. 10 B. 14 C.12 D.8 177若有定义: 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++; } 178以下程序段运行后x的值为( D )。 int i=0,x=0; for(;i<=5;i++,i++) {x+=3;} A. 15 B. 6 C.12 D.9 180设已定义char s[ ]=\,则字符串所占的字节数是( B )。 A. 19 B. 16 C.18 D.14 181数组元素下标的数据类型为( A )。 A. 整型常量、字符型常量或整型表达式 B. 字符串常量 C.实型常量或实型表达式 D.任何类型的表达式 182( 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]; 183若已定义 int arr[10]; 则不能正确引用arr数组元素的是( D )。 A. arr[0] B. arr[1] C.arr[10-1] D.arr[7+3] 184若已定义 int x[4]={2,1,3}; 则元素x[1]的值为( C )。 A. 0 B. 2 C.1 D.3 185以下程序段运行后,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 186( 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’; 187若有以下程序: void main( ) {char s[10]= \ r=s; printf(\ } 则( D )。 A. 执行时输出:ajskdl B. 执行时输出:a C.执行时输出:aj D.编译不通过 188下面程序段的运行结果是( 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 189下面程序段的运行结果是( 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 190下面关于数组的叙述中,正确的是( A )。 A. 定义数组后,数组的大小是固定的,且数组元素的数据类型都相同 B. 定义数组时,可不加类型说明符 C.定义数组后,可通过赋值运算符\对该数组名直接赋值 D.在数据类型中,数组属基本类型 191以下程序段的运行结果是( 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 192下面关于字符数组的叙述中,错误的是( B )。 A. 可以通过赋值运算符“=”对字符数组整体赋值 B. 不可以用关系运算符对字符数组中的字符串进行比较 C.字符数组中的字符串可以整体输入、输出 D.字符数组可以存放字符串 193若有定义:int a[10],i=2; 能正确引用a数组元素的是( B )。 A. a[9+i] B. a[10-i] C.a[10] D.a(7) 194( 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]; 195若有定义:int arr[15],n=5; 无法正确引用arr数组元素的是( C )。 A. arr[0] B. arr[n] C.arr[10+n] D.arr[15-n] 196以下程序段运行后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 197以下程序段运行后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 198下面叙述错误的是( C )。 A. 数组中每一个元素都属于同一个数据类型 B. C语言数组名称是数组在内存中的首地址 C.C语言数组长度在定义数组时可不作确定 D.C语言规定可逐个引用数组元素但不能一次引用整个数组 200以下程序段的运行结果是( 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.********** *** ********* ****** ******** ***** ********** ******** ****** ******* ********** ********** **** 201以下程序段执行后输出的结果是( 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 202以下程序段执行后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 203不能对二维数组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}; 204若有定义:int s[3][4]={{1,2},{0},{3,4,5}};则s[2][1]的值为( B )。 A. 3 B. 4 C.0 D. 205若有定义:int a[3][4];则表达式&a[2][1]-a的值为( C )。 A. 7 B. 8 C.9 D.10 206以下程序段运行后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 207若有定义int a[2][3];则合法引用数组元素的是( A )。 A. a[0][1/2] B. a[2][1] C.a[2][3] D.a[1][3] 208在以下数组定义中,错误的是( 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}; 209若定义int a[][4]={1,2,3,4,5,6,7,8};则表达式sizeof(a[0][1])的值为(D A. 1 B. 2 C.3 D.4 210以下程序段运行后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 。 ) 211设已定义: int a[][4]={0,0,0}; 则下列描述正确的是( C )。 A. 数组a包含3个元素 B. 数组a的第一维大小为3 C.数组a的行数为1 D.元素a[0][3]的初值不为0 212在C语言中,若定义二维数组a[2][3],设a[0][0]在数组中位置为1,则a[1][1]在数组中位置是( C )。 A. 3 B. 4 C.5 D.6 213以下程序段的运行结果是( 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 214以下程序段运行后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 215以下(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}}; 216若有定义:int a[3][4]={{1,2},{3,4},{5,6,7}}; ,则a[1][1]的值为(A )。 A. 4 B. 2 C.1 D.3 217若有定义:int a[3][2]; ,则表达式&a[2][1]-a的值为( A )。 A. 5 B. 4 C.3 D.2 218以下程序段运行后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 220设有下列语句,则( 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)) 221设已定义: char s1[8],s2[8]=\能将字符串\赋给数组s1的语句是( C )。 A. s1=s2; B. strcpy(s2,s1); C.strcpy(s1,s2); D.s1=\222以下程序段的运行结果是( A )。 char str[3][2]={ 'a', 'b', 'c', 'd', 'e', 'f'}; str[2][0]= '\\0'; 376若有定义: char ch ; int j, k ; enum day{sun, mon, tue, wed, thu, fri, sat} ; int a[sat]; 则( A )对下列语句是否符合语法规则的判断是正确的。 sun=0 ; /* 语句1 */ j=mon+tue ; /* 语句2 */ if(a[mon]>0) j ++ ; /* 语句3 */ A. 语句1错误,语句2和语句3正确 B. 语句2正确,语句1和语句3错误 C.语句1、2、3均错误 D.语句1、2、3均正确 377若由定义: typedef int NUM[100]; NUM n; 则( C )语句是正确的。 A. n=2; B. NUM=n; C.n[0]=2; D.NUM=2; 378若有定义:enum num{a1,a2=3,a3,a4=10} ; ,则枚举常量a2、a3的值分别为( D )。 A. 1 2 B. 2 3 C. 3 3 D. 3 4 380以下程序的功能是( 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.将文件指针定位到文件末尾 381以下程序的功能是( D )。 #include { FILE *fp; long int n; fp=fopen(\ fseek(fp,0,SEEK_END); n=ftell(fp); fclose(fp); printf(\ } A. 将文件指针从地址为0处移动到文件末尾 B. 计算文件指针的当前地址 C.计算文件exam.txt的终止地址 D.计算文件exam.txt的字节数 382文本文件quiz.txt的内容为\(不包含引号),以下程序段的运行结果是( B )。 FILE *fp; char *str; if((fp=fopen(\ str=fgets(str,7,fp); printf(\ A. Progr B. Progra C.Program D.Programming 383文件操作的一般步骤是( D )。 A. 打开文件,定义文件指针,修改文件,关闭文件 B. 打开文件,定义文件指针,读写文件,关闭文件 C.定义文件指针,定位指针,读写文件,关闭文件 D.定义文件指针,打开文件,读写文件,关闭文件 384下面程序的运行结果是( 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 385对于以下程序,说法正确的是( 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文件 386以下程序运行后,文件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 387以下程序的可执行文件名为abc.exe。 #include void main(int argc,char *argv[]) {if(argc!=2) {printf(\ exit(1); } printf(\love %s\\n\ } 在DOS命令行输入:abc right<回车>,则输出结果是( C )。 A. Input error B. I love abc C.I love right D.I love 388对下面程序描述正确的是( B )。 #include {FILE *in,*out; if((in=fopen(\ {printf(\ exit(0); } if((out=fopen(\ {printf(\ exit(0); } while(!feof(out)) fputc(fgetc(out),in); fclose(in); fclose(out); } A. 程序实现在屏幕上显示磁盘文件file1.txt的内容 B. 程序实现将磁盘文件file2.txt复制到磁盘文件file1.txt C.程序实现将两个磁盘文件file1.txt和file2.txt的内容合二为一 D.程序实现在屏幕上显示磁盘文件file2.txt的内容 389下列中错误叙述的是( C )。 A. C语言中的文件是一个字节流或二进制流 B. 可以以只读方式、只写方式或读写方式打开一个文本文件 C.在程序中对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据 D.当对文件的写操作完成之后,必须将它关闭,否则可能导致数据丢失 390对下面程序描述错误的是( B )。 #include { int c; FILE *fp; if((fp=fopen(\ { c=fgetc(fp); c=c+1;} fseek(fp,0,SEEK_SET); fputc(c,fp); fclose(fp); } A. 将文件中第一个字节的内容加1 B. 将文件所有字节的内容加1 C.以读写方式打开二进制文件file.dat D.SEEK_SET表示文件的开始位置 391若在fopen函数中使用文件的方式是\,该方式的含义是( A )。 A. 以读/写方式打开一个文本文件 B. 以输出方式打开一个文本文件 C. 以读/写方式建立一个新的文本文件 D.以读/写方式建立一个新的二进制文件 392当顺利执行了文件关闭操作时,fclose函数的返回值是( B )。 A. 1 B. 0 C.-1 D.一个非0值 393( C )不是文件读库函数。 A. fgetc() B. fread() C.fputs() D.fscanf() 394若当前工作目录下有一文本文件test.txt,其内容为“cprogram”(不包含引号),则以下程序段的运行结果是( A )。 FILE *fp; char *str; if((fp=fopen(\ str=fgets(str,5,fp); printf(\ fclose(fp); A. cpro B. cprog C.gram D.ogram 395C语言中,对文件操作的一般步骤是( C )。 A. 打开文件,定义文件指针,读写文件,关闭文件 B. 定义文件指针,读文件,写文件,关闭文件 C.定义文件指针,打开文件,读写文件,关闭文件 D.操作文件,定义文件指针,修改文件,关闭文件 396下面程序运行后,文件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 397下面程序运行后,屏幕显示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文件已经打开 398下面程序运行后,屏幕显示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文件已经打开 305以下程序段运行后变量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 306以下程序运行结果是( A )。 main( ) { char a[]=\ for(p=a;p A. abcbcc B. abc C.cbabaa D.cba 307以下程序的输出结果是( 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 308以下程序的输出结果是( B )。 #include {char *p=\ printf(\ } A. A B. B C.C D.D 309下面程序执行时,若输入5 4 3 2 1<回车>,则输出为:( B ) #include while(pa) 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 310下面程序段的运行结果是( 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 311下面程序运行结果是( 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 312下面程序运行结果是( 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 313以下程序段的运行结果是( 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 314以下程序段的运行结果是( 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 315以下程序的运行结果是( C )。 main( ) { int x,y; int *p,*q,*t; x=23; y=45; p=&x; q=&y; t=p; D. 42332415 p=q; q=t; printf(\ } A. 23,23 B. 45,45 C.23,45 D.45,23 316以下程序段运行后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 317以下程序段运行后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.不确定 318以下程序的运行结果是( C )。 main( ) { char a[]=\ for(p=a;p A. 137 B. 13737 C.137377 D.7 320若定义如下结构,则能打印出字母M的语句是( B )。 struct person{ char name[9]; int age; }; struct person class[10]={\ \ A. printf(\ B. printf(\C.printf(\ D.printf(\321以下程序段的运行结果是( 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 322一个结构体变量占用的内存大小是( B )。 A. 占内存容量最大的成员所需容量 B. 各成员所需内存容量之和 C.第一个成员所需内存容量 D.最后一个成员所需内存容量 323以下程序段的运行结果是( 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 324若有定义: struct student {int num; char name[8]; char sex; float score; }stu1; 则变量stu1所占用的内存字节数是( A )。 A. 15 B. 16 C.8 D.19 325定义结构体类型变量teach1,不正确的是( D )。 A. struct teacher {int num; int age; }; struct teacher teach1; B. struct teacher {int num; int age; }teach1; C.struct {int num; int age; }teach1; D.struct {int num; int age; }teacher; struct teacher teach1; 326若有定义: struct stuent {int num; char sex; int age; }stu1; 下列叙述不正确的是( B )。 A. student是结构体类型名 B. struct student是结构体类型名 C.stu1是用户定义的结构体类型变量名 D.num,sex,age都是结构体变量stu1的成员 327下面程序的运行结果是( A )。 #include double d; }a[2]; void main() {printf(\ } A. 16 B. 8 C.4 D.2 328下面程序的运行结果是( B )。 #include {int i; char c; }; struct {char a[2]; int i; union data d; }p; void main() {printf(\ } A. 5 B. 6 C.7 D.8 329以下C语言共用体类型数据的描述中,正确的是( C )。 A. 共用体变量占的内存大小等于所有成员所占的内存大小之和 B. 共用体类型不可以出现在结构体类型定义中 C.在定义共用体变量的同时允许对第一个成员的值进行初始化 D.同一共用体中各成员的首地址不相同 330设有如下语句: 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 331若有下面定义,能打印出字母'L'的语句是( A )。 struct class {char name[8]; int age; }; struct class s[12]={\ A. printf(\ B. printf(\C.printf(\ D.printf(\ 332若有下面定义,对结构体变量成员不正确引用的语句是( B )。 struct pup {char name[20]; int age; int sex; }p[3],*q; q=p; A. scanf(\ B. scanf(\C.scanf(\ D.scanf(\333以下程序段的运行结果是( B )。 union { int num1; int num2; }s; s.num1=20; s.num2=30; printf(\ A. 20 B. 30 C.50 D.2030 334若有定义: struct data { char a; float b[3]; long c; }d1; 则变量d1的长度是( D )。 A. 15 B. 12 C.4 D.17 335若有定义: union u_type {int x; float y[3]; char z; }a; 则变量a的长度是( C )。 A. 1 B. 4 C.12 D.15 336若有定义: 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] 337下列( 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; 338若有定义: struct teacher {int num; char sex; int age; }teacher1; 则下面叙述错误的是( D )。 A. struct是结构类型的关键字 B. struct teacher是用户定义的结构类型 C.num、sex、age都是结构变量teacher1的成员 D.teacher1是结构类型名 340以下程序的输出结果是( A )。 main() { printf( \ } fac(int n) { int s; if(n==1) return 1; else return n*fac(n-1); } A. 120 B. 60 C.6 D. 341若有以下定义: 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(\ 342若有以下定义: 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; 343若有以下定义: 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; 344若有以下定义: 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; 345若有定义: 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.显示单向链表中除第一个结点外的所有数据 346若有定义: 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.显示单向链表中除第一个结点外的所有数据 347若按如下定义,则函数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 348若按如下定义,函数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中 349以下程序的输出结果是( B )。 #include A. 1 2 3 4 B. 4 3 2 1 C. 3 2 1 4 D. 2 1 3 4 350若按以下定义: 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; 351若有定义: 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 352若有以下定义: 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; 353下列程序段运行后,表达式( 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 354若有定义: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++ 355下列程序段运行后,( 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) 356若有定义: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] 357( B )能正确定义一个指向函数的指针。 A. int *p() B. int (*p)() C.(int *)p() D.int (*p()) 358以下程序的运行结果是( 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 360以下程序中的循环执行了( 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 361错误的枚举类型定义语句是( 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}; 362假定已有如下定义: 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错误 363设有如下定义: typedef int *INTEGER; INTEGER p,*q; 下列叙述正确的是( D )。 A. 程序中可用INTEGER代替int类型名 B. 不能用INTEGER来定义变量 C.p是int型变量,q是基类型为int的指针变量 D.p是基类型为int的指针变量 364在对无符号数的位运算中,操作数左移三位相当于( D )。 A. 操作数除以6 B. 操作数乘以6 C.操作数除以8 D.操作数乘以8 365以下程序段运行后变量k的值为( D )。 int m=7,n=2,k; k=(m^n)<<1; A. 0 B. 98 C.20 D.10 366若有定义:int m=7,n=10,k; 则执行语句k=m&n;后k的值为( A )。 A. 2 B. 1 C.17 D.15 367以下程序的输出结果为( B )。 #include A. 2 B. 3 C.4 D.5 368若按如下类型说明,则( B )是错误的叙述。 typedef struct {int no; char *name; int cj; }S,*p; A. S是一个结构体类型名 B. p是一个结构体类型名 C.p是指向结构体类型S的指针类型名 D.no是结构体类型S的成员 369下面程序段的运行结果是( A )。 int p=7,q=4; printf(\ A. 4 B. 5 C.6 D.7 370若有以下类型说明,则叙述错误的是( C )。 typedef union {char name[10]; int age; }ustu,*umy; A. umy是指向共用体类型ustu的指针类型名 B. ustu是一个共用体类型名 C.umy是一个共用体类型名 D.age是共用体类型ustu的成员 371定义枚举类型的关键字是( C )。 A. typedef B. include C.enum D.fnum 372下面程序段的运行结果是( B )。 main() {int a=5,b=3; printf(\ } A. 0 B. 1 C.2 D.3 373( 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}; 374若有定义:enum day{sun,mon, tue, wed, thu, fri, sat} ; ,则枚举常量sun、mon的值分别为( A )。 A. 0 1 B. 7 1 C. 1 2 D. 7 0 375若有定义: typedef int * INTEGER; INTEGER p; 则下面叙述正确的是( C )。 A. p是与INTERGE相同的类型 B. p是一个整形变量 C.程序中可用INTEGER定义int类型指针变量 D.程序中可用INTEGER定义int类型变量
正在阅读:
C语言练习题真答案(汇总版)11-12
这一山毛竹青散文03-21
化学合成生物降解高分子材料的研究现状08-08
我是最好的小车迷作文600字07-09
芳纶纤维_环氧树脂的湿热老化07-23
(最新)苏教版八年级数学上册《等腰三角形性质和判定》测试题01-19
辰戌丑未-四墓库真诠07-01
百变房间作文300字06-24
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 练习题
- 汇总
- 答案
- 语言
- 当前农村征地拆迁过程中存在的问题以及对策
- 大体积混凝土专项施工方案
- 2010 巢湖市教师资格认定教育教学能力测试人员名单 - 图文
- 废弃物资源化处理成套设备项目IPO上市咨询(2013年最新细分市场+募投可研+招股书底稿)综合解决方案
- 压敏胶及压敏胶制品的研究现状
- 谈客九大步骤(房地产营销)
- 高三英语总复习2 写作 阅读 完型 七选五
- 郑大远程教育2018年马克思主义第三章测试题
- 湖南中医药大学 中医基础理论试题及答案(原件)
- 2012年浙江省“两项计划”招募正式通知
- C++面向对象程序设计实验五报告代码
- 交流电力牵引系统实验
- 开场后讲诉台词
- 110国道改扩建施工图说明(1)
- 计算机组成原理(肖铁军2010版)课后答案(完整版)
- 强化“四种意识”做好“四篇文章”
- 知识产权保护与管理实务试题与答案
- 美国文学 复习资料
- 微机实验指导书新版16
- 带孩子去北京旅游的注意事项