!!最新2009年12月C语言选择题

更新时间:2024-06-30 09:17:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

2009年12月C语言选择题

50100 在C语言中,合法的字符常量是( D )。 A.'字' B.\50101 下面叙述正确的是( B )。

A.程序中必须包含有输入语句 B.变量按所定义的类型存放数据 C.main函数必须位于文件的开头 D.每行只能写一条语句 50102 错误的叙述是( D )。

A.一个C语言源程序可由一个或多个函数组成 B.若一条语句较长,也可分写在下一行上 C.C程序必须包含一个main()函数 D.构成C语言源程序的基本单元是算术表达式 50103 ( A )是关于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.判断结构、嵌套结构、循环结构 50109 C源程序的调试是指对源程序进行( C )。

A.录入与编辑 B.查错与编译 C.查错与排错 D.连接与运行

50110 C语言中,可将一系列语句置于一对( C )之间从而构成复合语句。 A.尖括号\圆括号\花括号\方框号\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 (C)是关于C语言数据类型的正确叙述。

1

A.枚举类型不是基本类型 B.数组不是构造类型

D.不允许使用空类型

C.变量使用前应定义相应的数据类型

题号:50116 C源程序中main()函数的位置( C )。 A.必须位于程序的最前面 B.必须在系统库函数后面 C.可以在自定义函数后面 D.必须在自定义函数前面 题号:50117 C语言的函数体由( B )括起来。 A.( ) B.{ } C.< > D.[ ]

题号:50118 下面叙述错误的是( D )。 A.C源程序可由一个或多个函数组成

B.C源程序必须包含一个main()函数

C.一个C源程序的执行是从main()函数开始,直到main()函数结束 D.注释说明部分只能位于C源程序的最前面

50200 C语言的下列运算符中,优先级最高的运算符是( A )。 A.++ B.+= C.|| D.!=

50201 ( D)为正确的用户标识符。 A.struct B.5f C._f 0.6 D._for 50202 C语言基本数据类型包括( 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.\50206 ( C )为非法的字符串常量。

A.\

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

2

题号:50214 C语言的基本数据类型包括( 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.\

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语言中要求对变量作强制定义的主要理由是:便于确定类型和分配空间

3

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

50411 C语言的 % 运算符按运算对象的个数属( C )。 A.单目运算符 B.四目运算符 C.双目运算符 D.三目运算符

4

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.自加和自减运算符只能用于变量,而不能用于常量或表达式 D.算术运算符中不包含\运算符

题号:50415 下面叙述正确的是( A )。

A.C语言中整型与字符型变量的混合运算表达式的结果是整型 B.(3+9)++ 是正确表达式

C.模运算符\两边运算数的数据类型是任意的 D.\是正确表达式

题号:50416 若有定义:int i=3,j=6; 则表达式(--i)*(j++)的值为( C )。 A.18 B.15 C.12 D.10

题号:50417 若有定义:int a,b=6; 语句a=--b; 运行后,a、b的值分别是( C )。 A.5 6 B.6 5 C.5 5 D.6 6

题号:50418 若有定义:int x,y,z; 语句 x=(y=z=3,++y,z+=y); 运行后,x的值为( C )。 A.6 B.8 C.7 D.3

50500以下程序运行时,若从键盘输入5,则输出结果是( D )。 main() { int a;

scanf(\

if(a++>5) printf(\else printf(\ A.7 B.4 C.5 D.6

50501若已定义 float x; 要从键盘输入数据36.582给变量x,则应选用( B )语句。 A.scanf(\C.scanf(\

50502 若已定义 double y; 拟从键盘输入一个值赋给变量y,则正确的函数调用是( C )。 A.scanf(\50503已有定义 char s; 使用scanf( )函数输入一个字符给变量s,不正确的函数调用是( D )。 A.scanf(\50504函数putchar( ) 的功能是向终端输出( A )。

A.一个字符 B.多个字符 C.一个关系表达式 D.一个实型变量值 50505若已定义 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 50506 若有定义 int m=4321,n=123,k=21; 语句printf(\执行后的输出结果是( C )。

A.4321432143211231231232121 B.432112321 C.4321+123+21 D.432+123+021

50507 已有如下定义和输入语句,char c1,c2;int x; scanf(\若要求x、c1、c2的值分别为9、'K'和'H',正确的数据输入是( A )。

5

A.K9H B.K 9 H C.K9 H D.9KH 50508以下程序段的运行结果是( A )。

int a=1; printf(\ A.3,3,1 B.1, 2, 2 C.1, 2, 3 D.3, 2, 1 50509以下程序的运行结果是( 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

50510若已定义:int x=7;float y=7.0; 以下语句中能输出正确值的是( B )。 A.printf(\C.printf(\50511 putchar函数可以向终端输出一个( A )。

A.字符或字符型变量值 B.整型变量表达式值 C.实型变量值 D.字符串

50512 若已定义:int a=6;float b=1.5; 要求输出形式为: 6 * 1.50=9.00 ,应选用的正确输出语句是( B )。

A.printf(\C.printf(\

题号:50513 若有定义 float x; 要从键盘输入数据6.02赋给x,则应选用( D )语句。 A.scanf(\题号:50514 只能向终端输出一个字符的是( D )。

A.printf()函数 B.scanf()函数 C.getchar()函数 D.putchar()函数

题号:50515 若有语句 int a; char c; scanf(\为将整数135赋给a, 字符'6'赋给c,正确的数据输入方式是( B )。(说明:代表换行,__代表空格) A.135__6 B.1356 C.1356 D.135__6__ 题号:50516 getchar()函数的功能是获取终端输入的( B )。 A.多个字符 B.一个字符 C.一个实型变量值 D.一个整型变量表达式

题号:50517 若有定义 int a=8,b=5; 要实现输出形式为: 8*5=40 ,正确的printf()函数调用语句是( D )。

A.printf(\ C.printf(\

B.printf(\ D.printf(\

题号:50518 若有定义: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 50600有以下程序: main() { int c;

while((c=getchar())!= '\\n')

{ switch(c-'2') 整数加减,按ascll码值,加单引号直接加减 { case 0 :

case 1 : putchar(c+4); case 2 : putchar(c+4); break; case 3 : putchar(c+3);

6

default: putchar(c+2); break; } }

printf(\}

当输入:247<回车>,程序的输出结果是( B )。 A.689 B.6689 C.66778 D.66887

50601若已定义 int x=5,y=9,z; 语句 z=x>=y; 运行后z的值为( C )。 A.1 B..t. C.0 D..f.

50602 判定逻辑值为“真”的最准确叙述是( D )。 A.1 B.大于0的数 C.非0的整数 D.非0的数

50603若已定义 int x=-16,y=-12,z; 语句z=x<=y; 运行后z的值为( B )。 A..t. B.1 C..f. D.0

50604 能正确表示数学关系式 100≤s<300的表达式为( C )。

A.(s>=100) & (s<300) B.100<= s<300 C.(s>=100) && (s<300) D.(s>=100) and (s<300) 50605 若定义 int a=2,b=3; 则表达式 !a||b 的值为( B )。 A.0 B.1 C.2 D.3

50606 若定义 int a=-5,b=-8,c=-12; 则表达式 a>=b||b

50607下列表达式( C )不能用来判断整型变量x中的值是否为奇数。 A.x%2==1 B.!(x%2==0) C.!(x%2) D.x%2

50608若有定义: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) 50609若已定义:int x=4,y=2,z=0; 则表达式 (x-y<=y)|| (y=z)的值是( A )。 A.1 B.0 C.2 D.4

50610若有定义:int a=3,b=2,c=1,k; 则表达式k=a>b>c的值是( A )。 A.0 B.1 C.2 D.3

50611 以下运算符中优先级最高的是( D )。 A.<= B.&& C.|| D.!

50612 执行以下语句后,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

题号:50613 x的值在-20至-5之间为“真”,否则为“假”的正确逻辑表达式为( B )。 A.-20-20 && x<-5 C.!(x>-20) && !(x<-5) D.-5

题号:50614 若有定义:int a; 则表达式( B)不能用来判断a值为奇数是“真”,偶数是“假”。 A.a%2==1 B.!(a%2) C.a%2 D.!(a%2==0)

题号:50615 若有定义:int a=1,b=2,c=3,d=4,t=2,k=2; 语句(t=a

题号:50616 若有定义:int x=1,y=2,z=3; 则表达式( A )的值为0。 A.!((xy || x

题号:50617 若有定义: int a=3,b=5,c=8; 则表达式 !(a-b) || (c-b) 的值为( A )。 A.1 B.0 C.2 D.3

题号:50618 若有定义: int a; 且表达式 !a的值为0,则表达式( A )的值为1。

7

A.a!=0 B.a==0 C.a=0 D.!(a<0 || a>0) 50700 以下程序运行后,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

50701 已定义 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) 50702已定义 char c = 'A' ; 则正确的赋值表达式是( B )。 A.c=\\028 B.c=(c++)%4 C.c+1=66 D.c+=127-- 50703已定义 int m ='A'; 则正确的表达式是( C )。 A.2*m=m++ B.m=int(-3.2) C.m%3 D.m=m-m=m-5

50704设已定义 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

50705 若已定义 int m=7;float k=5.5; 则表达式 k+ m%2/4 的值为( D )。 A.6.375 B.6.75 C.5.75 D.5.5

50706若已定义 int a=3,b=3,x=1,y=2; 表达式 (a=y>x)&&(x=b>a) 的值是( D )。 A.6 B.1 C.9 D.0

50707若有定义:int a=2,b=3; float x=5; 则表达式x*b/a的值是( A )。 A.7.5 B.7 C.6 D.5

50708 若有定义:int x=8; float y=130;char z='A'; 则表达式x+z%(int)y的值是( C )。 A.运行时产生错误信息 B.8 C.73 D.8.5

50709若已定义: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

50710 若有定义: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) 50711 表达式2+sqrt(16.0)/4结果的数据类型是( A )。 A.double B.int C.char D.void

50712 若有定义:int a=4,b=5,c=6; 则表达式 (1.0*a+b)/c的值是( A )。 A.1.5 B.1 C.4 D.4.5

题号:50713 下列运算符中优先级最低的是( A )。 A.= B.! C.> D.*

题号:50714 若有定义: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)

题号:50715 若有定义: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'

题号:50716 若有定义:float x=2,y; int a=3; 语句y=1*(x+a)/3; 运行后,y的值为( D )。

8

A.2.0 B.0 C.1.0 D.1.666667

题号:50717 若有定义: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

题号:50718 若有定义:int a=6,b=7,k=0,t=1; 语句 (k=a

A.0 0 B.1 1 C.0 1 D.1 0 50800以下程序段的运行结果是( D )。 int x=3;

do{ printf(\} while(!(--x));

A.1 B.30 C.死循环 D.1, -2

50801 以下程序运行时,若从键盘输入6,则输出结果是( A )。 void main() {int x;

scanf(\

if (x-->6) printf(\else printf(\}

A.4 B.5 C.6 D.3

50802 以下程序的运行结果是( C )。 void main() {int m,n=1,t=1; if(t==0) t=-t; else m=n>=0?7:3; printf(\}

A.3 B.-1 C.7 D.1

50803对于整型变量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; 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;

9

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--) 先取n再--

{ default: printf(\先取n再++ case 8:

case 7: printf(\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(\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 1 C.3 D.1

50812 以下条件语句中(其中s1和s2分别表示C语言的语句),( D )与其他三条语句不等价。 A.if(a) s1; else s2; B.if(a == 0) s2; else s1;

10

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.11 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(\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.提前结束循环,接着执行该循环后续的语句

11

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(\ case 2: printf(\ default : printf(\ } }

执行后输出结果是( A )。 A.1223 B.1 C.111223 D.123

50908 以下程序的运行结果是( C )。 void main()

{int s = 0, i = 0; while(i< 8) { i++;

if(i%2==0) continue; s+=i;

12

}

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的值为( B )。 int i,j,x=0;

13

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;

D.i=1;for( ;i<=3; ) {x+=2; i++; }

C.for(i=1;i<=3; ) {x+=2; i++;} 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(\

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(\则( A )。

A.执行时输出:ajskdl B.执行时输出:a C.执行时输出:aj D.编译不通过 51008下面程序段的运行结果是( C )。

题号:50918 以下程序段运行后x的值为( D )。

14

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下面关于字符数组的叙述中,错误的是( A )。 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 )。

15

C.num、sex、age都是结构变量teacher1的成员 D.teacher1是结构类型名 51800 以下程序的输出结果是( 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.1 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(\B.while(p) { printf(\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.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;

31

}

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(\ A.显示并删除单向链表 B.显示单向链表中的第一个结点的数据 C.显示单向链表中的所有数据 D.显示单向链表中除第一个结点外的所有数据 51806若有定义: struct node { int data;

32

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; } }

/*这里原为p, 应显示单向链表中第二个结点的数据,无答案; 我改为!p后,答案D*/

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)

33

{ if(p->data%2==1) printf(\ p=p->next; } }

A.计算链表head中结点的个数 B.遍历链表head,输出表中值为奇数的元素 C.删除链表head中的所有结点 D.插入一个新元素到链表head中 51809以下程序的输出结果是( B )。 #include #include typedef struct node {int data;

struct node *next; }Node;

Node 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=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; } *p, *q;

并已建立如下图所示的链表结构,指针p和q分别指向图中所示结点: ┌──┬──┐ ┌──┬──┐ ┌──┬──┐... p→│data│next┼→│data│NULL│ q→ │data│next│ └──┴──┘ └──┴──┘ └──┴──┘ 则可以将指针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;

34

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;

└──┴──┘ └──┴──┘ └──┴──┘

35

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错误

51903设有如下定义:typedef int *INTEGER;INTEGER p,*q;下列叙述正确的是( D )。 A.程序中可用INTEGER代替int类型名 B.不能用INTEGER来定义变量 C.p是int型变量,q是基类型为int的指针变量 D.p是基类型为int的指针变量 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 void main()

{enum Weekday{sun=7,mon=1,tue,wed,thu,fri,sat}; enum Weekday day=wed; printf(\ }

36

A.2 B.3 C.4 D.5

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类型变量 题号:51916 若有定义:

char ch ; int j, k ; enum day{sun, mon, tue, wed, thu, fri, sat} ; int a[sat];则( B )对下列语句是否符合语法规则的判断是正确的。 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均正确

题号:51917 若由定义:typedef int NUM[100];NUM n;则( C )语句是正确的。 A.n=2; B.NUM=n; C.n[0]=2; D.NUM=2;

题号: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 main() { FILE *fp; long int n;

fp=fopen(\

fseek(fp,0,SEEK_END); n=ftell(fp);

37

fclose(fp); printf(\

A.计算文件wj.txt的起始地址 B.计算文件wj.txt的终止地址 C.计算文件wj.txt的长度 D.将文件指针定位到文件末尾 52001 以下程序的功能是( D )。 #include main() { 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的字节数

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 52003文件操作的一般步骤是( D )。

A.打开文件,定义文件指针,修改文件,关闭文件 B.打开文件,定义文件指针,读写文件,关闭文件 C.定义文件指针,定位指针,读写文件,关闭文件 D.定义文件指针,打开文件,读写文件,关闭文件 52004下面程序的运行结果是( B )。 #include main() { FILE *fp;

int a=2,b=4,c=6,k,n; fp=fopen(\ fprintf(fp,\ fprintf(fp,\ fclose(fp);

fp=fopen(\ fscanf(fp,\ printf(\ fclose(fp); }

A.2 4 B.2 6 C.4 2 D.6 2

52005对于以下程序,说法正确的是( B )。

38

#include main() { 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 main() { 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 #include

void main(int argc,char *argv[]) {if(argc!=2)

{printf(\

printf(\ }

在DOS命令行输入:abc right<回车>,则输出结果是( C )。 A.Input error B.I love abc C.I love right D.I love 52008 对下面程序描述正确的是( C )。 #include #include void main() {FILE *in,*out;

if((in=fopen(\ {printf(\

39

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的内容 52009下列中错误叙述的是( C )。 A.C语言中的文件是一个字节流或二进制流

B.可以以只读方式、只写方式或读写方式打开一个文本文件

C.在程序中对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据 D.当对文件的写操作完成之后,必须将它关闭,否则可能导致数据丢失 52010对下面程序描述错误的是( B )。 #include main() { int c; FILE *fp;

if((fp=fopen(\ { c=fgetc(fp); c=c+1;} fseek(fp,0,SEEK_SET); fputc(i,fp); fclose(fp); }

A.将文件中第一个字节的内容加1 B.将文件所有字节的内容加1 C.以读写方式打开二进制文件file.dat D.SEEK_SET表示文件的开始位置 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()

题号:52014 若当前工作目录下有一文本文件test.txt,其内容为“cprogram”(不包含引号),则以下程序段的运行结果是( A )。 FILE *fp; char *str;

if((fp=fopen(\

str=fgets(str,5,fp);

printf(\fclose(fp);

40

A.cpro B.cprog C.gram D.ogram

题号:52015 C语言中,对文件操作的一般步骤是(C )。

A.打开文件,定义文件指针,读写文件,关闭文件 B.定义文件指针,读文件,写文件,关闭文件 C.定义文件指针,打开文件,读写文件,关闭文件 D.操作文件,定义文件指针,修改文件,关闭文件

题号:52016 下面程序运行后,文件d_f.dat的内容是( A )。 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 main(){

FILE *fp; char str[256]; fp = fopen(\if(fp==NULL)

{ printf(\fscanf(fp,\fclose(fp);}

A.当前工作目录下的test.txt文件是空文件 B.函数fopen()的参数是错误的 C.当前工作目录下没有test.txt文件 D.test.txt文件已经打开

41

本文来源:https://www.bwwdw.com/article/yyu3.html

Top