c语言程序基础练习题500道(附答案) 下载本文

1.下列四组选项中,均不是C语言关健字的选项是( A )。 A) define B) gect C) include D) while IF char scanf go type printf case pow 2.下面四个选项中,均是合法整型常量的选项是( A )。 A)160 B)-0xcdf C) -01 D)-0x48a -0xffff 01a 986,012 2e5 011 0xe 0668 0x

3.下面四个选项中,均是不合法的转义符的选项是( B )。 A) '\\\ B) '\\1011' C) '\\011' D) '\\abc' '\\\\' '\\' '\\f' '\\101' 'xf' '\\A' '\\}' 'x1f' 4.下面不正确的字符串常量是( A )。

A)'abc' B)\ C)\ D)\5.以下选项中不合法的用户标识符是( A )。

A)abc.c B)file C)Main D)PRINT 6.C语言提供的合法关键字是( D )。 A) swith B) cher C) Case D)default

7.下列标识符组中,合法的用户标识符为 A A)_0123与ssiped B)del-word与signed C)list与*jer

D) keep%与wind

8.在C语言中,逻辑值\真\的表示是用( C )。 A) true B) 整型值0 C)非另整型值 D) T 9若有以下定义 char s='\\092';

则该语句( b )

A)使s的值包含一个字符 B)定义不合法,s的值不确定 C)使s的值包含4个字符 D)使s的值包含3个字符

10设C语言中,int类型数据占2个字节,则float类型数据占( D )个字节。 A)1 B)2 C)8 D)4

11已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'+'6'-'3'后,c2中的值为( A )。

A)D B)68 C)不确定的值 D)C 12逻辑运算符两侧运算对象的数据类型是 ( D )。 A) 只是0或1 B) 只能是0或非0正数

C) 只能是整型或字符型数据 D) 可以是任何合法的类型数据 13TURBO C中int类型变量所占字节数是( B )。 A)1 B)2 C)3 D)4

1

14在C语言中,char型数据在内存中的存储形式是( D )。

A) 补码 B) 反码 C) 原码 D) ASCII码 15若有以下定义,则能使值为3的表达式是( D )。 int k=7, x=12;

A)x%=(k%=5) B)x%=(k-k%5) C)x%=k-k%5 D)(x%=k)-(k%=5) 16判断char型变量c1是否为小写字母的正确表达式为 ( D )。 A) 'a'<=c1<='z' B) (c1>=A. &&(c1<='z') C) ('a'>=c1)||('z'<=c1) D) (c1>='a')&&(c1<='z') 17 已知各变量的类型说明如下: int k,a,b;

unsigned long w=5; double x=1.42

则以下不符合C语言语法的表达式是( A )。 A)x%(-3) B)w+=-2

C)k=(a=2,b=3,a+b) D)a+=a-=(b=4)*(a=3)

若t为double类型,表达式t=1,t+5,t++的值是( D )。 A)1 B)6.0 C)2.0 D)1.0

设n=10,i=4,则赋值运算 n%=i+1执行后,n的值是( A ). A) 0 B) 3 C) 2 D) 1

设Int n=3;则有表达式++n,n的结果是( C )。 A)2 B)3 C)4 D)5

用十进制形式输入有符号整数时,在scanf函数语句里格式字符为( A B)。 A)d B)i C)n D)u 在scanf函数语句中可用的修饰符有( ABCD )。 A)* B)h C)l D)宽度 1数据是操作的对象,操作的结果会改变数据的状况。 对 2字符型变量用来存放字符常量,注意只能放2个字符。 错 3C语言中可以把一个字符串赋给一个字符变量。 错

4在 C语言中的实型变量分为两种类型,它们是 float(实型)和double(双精度实型)。 错 5在C语言中,要求参加运算的数必须是整数的运算符是% . 对

6若有以下定义,则执行下面表达式y+=y-=m*=y后,y的值为-16。int m=5,y=2; 对 7输入语句的格式为: scanf(\是正确的。 对 8在scanf(\函数中,可以使用一个或多个空格作为两个输入数之间的间隔。 错 9getchar函数的功能是接收从键盘输入的一串字符。 错 10在变量说明中给变量赋初值的方法是:int a=b=c=10; 错

12printf函数是一个标准库函数,它的函数原型在头文件\中。 对 13printf函数称为格式输入函数,它的函数原型在头文件\中。 错

2

14在printf函数中,不同系统对输出表列的求值顺序不一定相同,TC是按从右到左进行的。 对

15若int x=3; printf(\则系统会报错,没有任何结果。 错 16逻辑运算符的优先级别高于算术运算符 错 1在C语言中,表示逻辑\真\值用【 1 】.

2表达式pow(2.8,sqrt(double(x)))值的数据类型为( double )。 3假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是【 8 】。 4若x是int型变量,则执行下面表达式后,x的值为【 12 】。x=(a=4,6*2)

5若k为 int整型变量且赋值7,请写出赋值表达式 k *= k + 3的运算结果【70 】。 6scanf函数是一个标准库函数,它的函数原型在头文件【 stdio.h 】中。 7getchar函数可以接收【 单 】个字符,输入数字也按字符处理。 8在语句中,给变量赋值时,赋值语句必须以【 分号 】结尾。 9当a=3,b=2,c=1时,表达式f=a>b>c 的值是【 0 】

10设x,y,z均为int型变量,请写出描述\中有一个为负数\的表达式【 x<0&&y>=0||y<0&&x>=0 】

11若a=6,b=4,c=3,则表达式 a&&b||b-c的值是【1 】

12设x=3,y=-4,z=5,则表达式!(x>y)+(y!=z)||(x+y)&&(y=z)的值是【 1 】

基础二

1下面四个选项中,均是非法常量的选项是( A )。

A)'as' B)'\\\\' C)-0x18 D)0xabc -0fff '\\01' 01177 '\\0' '\\0a' 12,456 0xf \2下面四个选项中,均是不合法整型常量的选项是( D )。 A)-0f1 B)-0xcdf C) -018 D)-0x48eg -0xffff 017 999 -068 0011 12,456 5e2 03f

3下面正确的字符常量是( C )。

A) \ B) '\\\\'' C) 'W' D) '

4以下每个选项都代表一个常量,其中正确的整型常量是( B )。 A)1.2 B)-20 C)1,000 D)4 5 6 5以下选项中不合法的用户标识符是( C )。

A)_123 B)Printf C)A$ D)Dim 6在下列C语言程序中,可以用做变量名的是( B )。 A) 1 B) a1 C) int D) *p

7C语言提供的合法数据关键字是( A )。

3

A) float B) Sagned C) Integer D) Char

8以下符号中不能用作用户标识符的符号是( B )。 A)_256 B)void C)scanf D)Struct 9若k为int型变量,则以下语句( C )。 k=8567;

printf(\

A)输出格式描述不合法 B)输出为|008567| C)输出为|8567| D)输出为|-08567| 10sizeof(float)是( B )。

A)一个双精度表达式 B)一个整型表达式

C)一种函数调用 D)一个不合法的表达式

11在C语言中, int、char和short三种类型数据在内存中所占用的字节数( D )。 A)由用户自己定义 B)均为2个字节

C)是任意的 D)由所用机器的机器字长决定

12判断char型变量c1是否为小写字母的正确表达式为 ( D )。 A) 'a'<=c1<='z' B) (c1>=A. &&(c1<='z') C) ('a'>=c1)||('z'<=c1) D) (c1>='a')&&(c1<='z') 13以下叙述中正确的是( B )。

A.a是实型变量,C语言允许进行以下赋值a=10,因此可以这样说:实型变量中允许存放整型值

B.在赋值表达式中,赋值号右边即可以是变量也可以是任意表达式 C.执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,a的值已由原值改变为b的值,b的值由原值变为0

D.已有a=3,b=5当执行了表达式a=b,b=a之后,已使a中的值为5,b中的值为3 14表达式18/4*sqrt (4.0)/8值的数据类型为( C )。 A)int B)float C)double D)不确定

15下列运算符中,不属于关系运算符的是( C )。 A) < B) > = C) ! D) ! =

16若希望当A的值为奇数时,表达式的值为真,A的值为偶数时,表达式的值为假,则以下不能满足要求的表达式是 ( C )。

A) A%2= =1 B) !(A%2= =0) C) !(A%2) D) A%2 17已知各变量的类型说明如下: int i=8,k,a,b;

unsigned long w=5; double x=1.42,y=5.2;

则以下符合C语言语法的表达式是( A )。 A)a+=a-=(b=4)*(a=3) B)a=a*3=2 C)x%(-3) D)y=float(i)

4

18 若变量已正确定义并赋值,下面符合C语言语法的表达式是( B )。 A)a:=a+7; B)a=7+b+c C)int 12.3%4 D)a=a+7=a+b 19逗号表达式(a=3*5,a*4),a+15的值为( C )。 A)15 B)60 C)30 D)不确定

20设Int n=3;则n++的结果是( B )。 A)2 B)3 C)4 D)5

1用小数或指数形式输入实数时,在scanf函数语句里格式字符为( BCD )。 A)i B)f C)e D)g 2可以使用( CD )输入字符型数据。

A)putchar(c); B)getchar(c); C)getchar(); D)scanf(\1C语言中数据有常量与变量之分。错

2一般一个字符变量在内存中占一个字节。对

3C语言规定,可以在定义变量时,同时使变量初始化。对

4把k1、k2定义成基本整型变量,并赋初值0的定义语句是int k1=k2=0; 。错 5如果i的原值为3,则:j = ++ i,j的值为3。 错 6凡是表达式都有一个值。

7输入语句的格式为:scanf(\是正确的。 错

8在scanf(\,%*d,%d\函数中,当输入为1,2,3时,将1赋给a,将2赋给b。 错

9getchar函数的功能是接收从键盘输入的一个整数。 错

10假定变量a,b,c在说明时已赋初值,则 if ((a=b;)>0) c=a;是正确的。 错 11

12printf函数是一个标准库函数,它的函数原型在头文件\中。 错

13在printf函数中,格式字符d的意义是:以十进制形式输出带符号整数。对 14 在printf函数中,输出表列的各输出项之间可用冒号分隔。 错 15若int x=3; printf(\则系统不会报错,会输出x的地址。对 16int a=0,b=1,c=2;则表达式a||b+c&&b==c的值为0 错

1若有以下定义:char c='\\010';则变量C中包含的字符个数为( 1 )。 2若有以下定义:int x=3,y=2;float a=2.5,b=3.5;则下面表达式的值为【 1 】。(x+y)%2+(int)a/(int)b 3若a是int型变量、且a的初值为6,则执行下面表达式后,a的值为【 -60 】。a+=a-=a*a 4若x是int型变量,则执行下面表达式后,x的值为【 4 】。x=a=4,6*2 5若a是int型变量,且a的初值为6,则计算表达式后a的值为【 -60 】。a+=a-=a*a 6scanf函数的地址表列中给出各变量的地址,地址是由【 地址运算符\ 】后跟变量名组成的。

7使用getchar函数接收字符,若输入多于一个字符时,只接收第【 一 】个字符。 8 C语言的格式输出函数是【 printf() 】。

9当a=5,b=4,c=2时,表达式a>b!=c 的值是【 1 】

10已知A=7.5,B=2,C=3.6,表达式A>B&&C>A || AB的值是【 0 】 11若a=3,b=2,c=1,则表达式a-b

5

基础三

1下面四个选项中,均是不合法的用户标识符的选项是( C )。 A) A B) float C) b-a D) _123 p_0 lao goto temp do _A int INT 2下面四个选项中,均是不合法浮点数的选项是( B )。 A) 160. B) 123 C) -018 D) -e3

0.12 2e4.2 123e4 .234 e3 .e5 0.0 1e3

3下面四个选项中,均是不正确的八进制或十六进制数的选项是( D )。 A)016 B)0abc C)010 D)0a12 0x8f 017 -0x11 7ff 018 0xa 0x16 -123

4以下每个选项都代表一个常量,其中不正确的实型常量是( B )。 A)2.607E-1 B)0.8103e 2 C)-77.77 D)45.6e-2 5可用作用户标识符的一组标识符是( B )。

A)void B)a3_b3 C)For D)2a

define _xyz -abc DO

WORD IF Case sigeof 6下列标识符组中,合法的用户标识符为( B )。 A) PAd与p#d B) Scanf 与a10 C) void与max D) A*与temp

7( B )是C语言提供的合法的数据类型关键字。 A)Float B)signed C)integer D)Char 8以下选项中正确的常量是( a )。 A) 012 B) -20 C) 1,000 D) 4 5 6

9现已定义整型变量int i=1;

执行循环语句while(i+ +<5);后,i的值为( c )。

A)1 B)5 C)6 D)以上三个答案均不正确

10设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为( C A)int B)float C)double D)不确定 11若有说明语句:char c='\\72';则变量c ( a )。 A)包含1个字符 B)包含2个字符

C)包含3个字符 D)说明不合法,c的值不确定

12设X、Y、Z都是int整型变量,且x=2, y=3, z=4,则下面的表达式中,值为0的表 达式是( b )。

A) 'x'&&'z' B) (!y= =1)&&(!z= = 0) C) (x

6

)。 13以下叙述中正确的是( B )。

A) 在C程序中无论是整数还是实数,只要在允许的范围内都能准确无误的表示

B) 若在定义语句double a,b;之后,因为变量a,b已正确定义,因此立刻执行这样的表达式:a=b+9.381是正确的

C) 在C程序中,常量、变量、函数调用,都是表达式的一种//一部分! D) 在main函数中,变量一经定义,系统将自动赋予初始值

14设有说明:char w;int x;float y;double z;则表达式w*x+z-y值的数据类型为( d )。 A) float B) char C) int D) double

15设a=2,b=3,c=4,则表达式 a+b>c&&b= =c&&a||b+c&&b+c的值为( D )。 A) 5 B) 8 C) 0 D) 1

16在C语言中,逻辑值\真\的表示是用( c )。 A) true B) 整型值0 C) 非另整型值 D) T 17以下不正确的叙述是( d )。 A)在C程序中,逗号运算的优先级最低

B)在C程序中,APH和aph是两个不同的变量

C)若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变 D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值 18以下结果为整型的表达式(设有int i; char c; float f;)是( b )。 A)i+f B)i*c C)c+f D)i+c+f

19设有逗号表达式(a=3*5,a*4),a+15,a的值为( B )。 A)60 B)30 C)15 D)90

20设Int n=3;则有表达式n++,n的结果是( C )。 A)2 B)3 C)4 D)5

1若在scanf函数语句中没有非格式字符作输入数据的间隔,则可用( ACD )。 作为输入数据的间隔。

A)空格 B)逗号 C)TAB D)回车 2使用scanf函数时,在源程序开头( ABC )。 A)书写#include \ B)书写#include C)不必写#include D)书写#include \

1C语言规定标识符只能由字母、数字和小数点三种字符组成。错

2 C语言使字符型数据和整型数据之间可以通用。一个字符数据既可以以字符形式输出,也可以以整数形式输出。 对

3 C语言中定义了一个变量,代表内存中的一个地址。 对 4表达式3.5 + 1/2 + 56的计算结果是7.5 。错

5 由赋值运算符将一个变量和一个表达式连接起来的式子称为\赋值表达式\。 对 6设C语言中,一个int型数据在内存中占2个字节,则int数据的取值范围为-32768-32769。错

7在使用scanf函数之前应包含头文件\。错

8在scanf(\函数中,当输入为字符a,b时,将a赋给c1,将b赋给c2。错 9 scanf函数中,如果格式控制串中有普通字符则输入时也要输入该普通字符。 对 10 假定变量x,y,z在说明时已赋初值,则 if ((x=y+5)>0) z=x; 是正确的 对 11printf函数中的格式字符,既可以是大写形式,也可以是小写形式。 错 12在printf函数中,格式字符\可用来输出5个字符。 错 13在printf函数中,格式字符s的意义是:输出单个字符。错

7

14 在printf函数中,输出项可以是任意合法的表达式。对 15 算术运算符的优先级别高于关系运算符 对 16 int a=0,b=1,c=2,x,y;,则!(x=a)&&(y=b)&&c的值为1

1若x和n均是int型变量,且x的初值为12,n的初值为5,则执行下面表达式后,x的值为( 0 )。x%=(n%=2)

2假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为【 9 】。 3若a是int型变量,则执行下面表达式后,a的值为【2 】。a=25/3%3 4表达式1/3*3的计算结果是【 0 】。

5若a是int型变量,则计算表达式后a的值为【 2 】。a=25/3%3

6在输入字符数据时,若\格式控制字符串\中没有非格式字符,则认为所有输入的字符均为【 有效 】字符。 7在scanf函数中,【 &a 】表示变量a的地址。 8以下程序的运行结果是【 computer, com 】。 main()

{ printf(\ } 9在C语言中,表示逻辑\真\值用【 非零数 】

10若a=6,b=4,c=2,则表达式!(a-b)+c-1&&b/3+c/2的值是【 1 】 11设a=-1,b=0,c=1,则表达式a||b+c&&b==c的值是【 1 】 12有int a=3,b=4,c=5,x,y;,则以下表达式的值为【 0 】 !(x=a)&&(y=b)&&c

基础四

1以下符号中不能用作用户标识符的符号是( b )。 A)_256 B)void C)scanf D)Struct

2下面四个选项中,均是合法浮点数的选项是( )。 A) +1e+1 B) -.60 C) 123e D) -e3 5e-9.4 12e-4 1.2e-.4 .8e-4 03e2 -8e5 +2e-1 5.e-0

3下面四个选项中,均是正确的八进制或十六进制数的选项是( c )。 A) -1a B)0abc C)0010 D)0a12 0x8f -017 0x11 -0x123 -011 0xc 0xf1 -0xa 4以下选项中,为C语言合法的关键字是( d )。

A)swicth B)cher C)Case D)default 5C语言提供的合法的数据类型关键字是( b )。

A)Double B)short C)integer D)Char 6下列标识符组中,合法的用户标识符为( d )。 A)b-b与abc B)CCP与float

8

C)hiy与 D) isw与INT

7 属于合法的C 语言长整型常量的是( b )。

A)5876273 B)0L C)2E10 D)(Long)5876273

8若int类型数据占两个字节,下列程序的输出结果是( d )。 main() {

int k=-1;

printf(\}

A)-1,-1 B)-1,32767 C)-1,32768 D)-1,65535 9设已定义x为double类型变量 x=213.82631;

printf(\

则以上语句( c )。

A)输出格式描述符的域宽不够,不能输出 B)输出为21.38e+01 C)输出为2.14e+002 D)输出为-2.14e2 10执行x=5>1+2&&2||2*4<4 - !0后,X的值为( c )。 A) -1 B) 0 C) +1 D) 5

11设ch是字符变量,其值为A,且有下面的表达式ch=!(ch>='A'&&ch<='z')?ch:(ch+32)则表达式的值是 ( b ) A) A B) a C) 2 D) z

12设ch是char型变量,其值为Z,且有下面的表达式,其值为( d )。 ch=(ch>='A'&&ch<='Z')?(ch+32):ch A) A B) a C) Z D) z

13以下的变量定义中,合法的是( b )。

A)float 3_four = 3.4 ; B)int _abc_= 2 ; C)double a = 1 + 4e2.0 D)short do =15; 14若有int k = 11;则表达式(k++ * 1/3)的值是( b )。 A)0 B)3 C)11 D)12 15逻辑运算符两侧运算对象的数据类型是 ( d )。 A) 只是0或1 B)只能是0或非0正数 C) 只能是整型或字符型数据 D) 可以是任何类型数据 16下列表达式的值,那一个等于0 ( b )。 A) 5%6 B) 5/6 C) 5/6.0 D) 5 - 6

17以下正确的叙述是( d )。 A)在C程序中,每行只能写一条语句

B)若 a 是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数 C)在C程序中,无论是整数还是实数,都能被准确无误地表示 D)在C程序中,%是只能用于整数运算的运算符

18以下不正确的语句(设有int p,q)是( d )。 A)p*=3; B)p/=q; C)p+=3; D)p&&=q;

19如果a=1,b=2,c=3,d=4,则条件表达式a

9

20设Int n=2;则++n+1= =4的结果是( c )。 A)true B)false C)1 D)0

1若输入4位整数到整型变量a中,可用( b )。 A)scanf(\ B)scanf(\C)scanf(\D)scanf(\

2对于scanf(\设a为整型变量,输入5,其输出可为( a )。 A)a=5 B)5 C)a= 5 D)a=a=5

1在C语言中,要求对所有用到的变量先定义,然后才能使用。√ 2C语言中,字符数据与整型数据可以互相赋值。 x 3C实型变量分为单精度和双精度两种。 x

4a1、a2定义成单精度实型变量,并赋初值1的定义语句是float a1=1; a2=1; 。x 5C语言中逗号运算符又称为\顺序求值运算符\。 √ 6C提供的三种逻辑运算符是 !, &&, >= . x 7在使用scanf函数之前可以不包含头文件\。 √

8在scanf(\函数中,输入123456789,只把123456赋予变量i 。x 9a=b=c=d=10;是一个合法的赋值语句。 √ 10C语言的格式输出函数是scanf(). x

12使用printf函数时,格式控制字符串和各输出项应一一对应。 √ 13在printf函数中,格式字符f的意义是:以小数形式输出单精度实数。x 14在printf函数中,转义字符\\b的作用是退格。 √ 15算术运算符的优先级别高于逻辑运算符 √ 16int a=1,b=0,c=1;,则!(a+b)+c-0&&b+c/2的值为1 x 1经过下述赋值后,变量x的数据类型是( int )。 int x=2; double y;

y=(int)(float)x;

2已知字母a的ASCII码的十进制代码为97,且设ch为字符型变量,则表达式ch='a'+'8'-'3'的值为【 f 】。

3若s是int型变量,且s=6,则下面表达式的值为【 1 】。 s%2+(s+1)%2

4表达式1.0/2*3的计算结果是【 1.5 】。

5当a=3,b=2,c=1时,表达式f=a>b>c的值是【 0 】. 6getchar函数是【 字符输入 】函数。

7赋值语句是由赋值表达式加上【 分号 】构成的。 8在TC中,printf()函数输出表列的求值顺序是【 】。

9设y为int型变量,请写出描述\是奇数\的表达式【 y%2==1 】 10若a=2,b=4,则表达式!(x=a)|| (y=b)&&0的值是【 0 】

11条件\或x<-3\的c语言表达式是【 0x||-3>x 】 12有int a=3,b=4,c=5;,则以下表达式的值为【 1 】 !(a+b)+c-1&&b+c/2

10

基础五

1C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( c )。 A)必须为大写 B)必须为下划线

C)必须为字母或下划线

D)可以是字母、数字和下划线中的任一种字符

2下面四个选项,均是合法转义字符的选项是( a )。 A) '\\'' B) '\\' C)'\\018' D) '\\\\0''

'\\\\' '\\017' '\\f' '\\101' '\\n' '\\\ 'xab' 'x1f'

3下面四个选项中,均是正确的数值常量或字符常量的选项是( d )。 A)0.0 B)\ C)'3' D)+001 0f 3.9E-2.5 011 0xabcd 8.9e 1e1 0xFF00 2e2 '&' '\\\ 0a 50 4以下符号中不能用作用户标识符的是( d )。

A)IF B)Switch C)gets D)case

5在C语言中,下列哪个字符为合法的字符常量( b d )。 A)'\\084′ B)'\\x43′ C)'ab′ D)'\\0′

6下列四个选项中,均是C语言关健字的选项是( b )。 A) auto B) switch C) signed D) if

enum typedef union struct include continue scanf type 7不合法的常量是( d )。

A)'\\2' B)'\ C)\ D)\8若a为整型变量,则以下语句( b )。 a=-2L;

printf(\

A)赋值不合法 B)输出值为-2 C)输出为不确定值 D)输出值为2 9已定义x为float型变量 x=213.82631;

printf(\则以上语句 ( B )

A)输出格式描述符的域宽不够,不能输出 B)输出为213.83 C)输出为213.82 D)输出为-213.82 10用getchar函数可以从键盘读入一个( d ) A) 整型变量表达式值 B) 实型变量值

11

C)字符串 D) 字符或字符型变量值

11已知int x,y,z;执行语句x=(y=(z=10)+5)-5;后x、y、z的值是( a )。 A) x=10 B) x=10 C) x=10 D) x=10 y=15 y=10 y=10 y=5 z=10 z=10 z=15 z=10

12 设a为整型变量,初值为12,执行完语句a+=a-=a*a后,a的值是 ( d )。 A) 552 B) 144 C) 264 D) -264

13设x为int型变量,则执行以下语句段后,x的值为( b )。 A)10 B)20 C)40 D)30 x = 10 ; x += x -= x - x;

14若有定义,int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是( A) 2.500000 B) 2.750000 C) 3.500000 D) 0.000000 15下列运算符中优先级最高的是 ( b )。 A) < B) + C) && D) !=

16设以下变量均为int 类型,则值不等于7的表达式是( c )。 A)(x=y=6,x+y,x+1) B)(x=y=6,x+y,y+1) C)(x=6,x+1,y=6,x+y) D)(y=6,y+1,x=y,x+1) 17以下符合C语言语法的,赋值表达式是( b )。 A) d=9+e+f=d+9 B) d=9+e,f=d+9 C) d=9+e,e++,d+9 D) d=9+e++=d+7

18以下使i的运算结果为4的表达式是( d )。 A) int i=0,j=0; (i=3,(j++)+i); B) int i=1,j=0; j=i=((i=3)*2); C) int i=0,j=1;

(j= =1)?(i=1):(i=3); D) int i=1,j=1; i+=j+=2;

19设Int n=3;则++n的结果是( c )。 A)2 B)3 C)4 D)5

20设Int n=2;则有表达式++n+1= =4,n的结果是( c )。 A)1 B)2 C)3 D)4

1下列能正确输入字符数组a 的语句是( d ) A)scanf(\ B)scanf(\C)scanf(\ D)循环执行scanf(\

2在输入时,字符变量的值不用空格间隔,其输入函数可为( b )。 A)scanf(\ B)scanf(\ C)scanf(\ D)循环执行getchar() 1C的字符常量是用双引号括起来的一个字符。 2字符串常量是一对单引号括起来的字符序列。

12

a )。x x

3设C语言中,一个int型数据在内存中占2个字节,则int型数据的取值范围为-32768-+32767。√

4在C语言中的实型变量分为两种类型,它们是float和double。 x 5 若有以下定义:int a=2,b=3;float x=3.5,y=2.5;则下面表达式的值为3.500000。√ (float)(a+b)/2+(int)x%(int)y

6输入语句的格式为:scanf(\是正确的。 x 7getchar()函数得到的字符可以不赋给任何变量,而作为表达式的一部分。 √ 8scanf函数中无精度控制。 x 9a+==a=2; 是一个合法的赋值语句,赋值后a的值为:2。 x 10在TC中,printf()函数输出表列的求值顺序是从右到左。 11在printf函数中,\表示按十进制正整数输出。 x 12printf是C语言的输出语句。 x 13在printf函数中,格式字符c的意义是:输出单个字符。 √ 14在printf函数中,不能使用转义字符。 x 15关系运算符的优先级别高于逻辑运算符 √ 16C语言中没有逻辑型数据 x 1表达式8/4*(int)2.5/(int(1.25*(3.7+2.3))值的数据类型为( int )。 2若x、i、j和k都是int型变量,则计算下面表达式后,x的值为【32 】。 x=(i=4,j=16,k=32)

3若a是int型变量,则下面表达式的值为【 26 】。 (a=4*5,a*2),a+6

4若k为 int 整型变量且赋值7,x为double型变量且赋值8.4,赋值表达式x = k的运算结果是【 7.0 】。

5若a=1, b=4, c=3, 则表达式 !(a

7在变量说明中给同类变量赋初值时,各变量之间用【 , 】隔开。 8以下程序的运行结果是【 6 5 】。 main()

{int i=5; printf(\ } 9设x,y,z均为int型变量,请写出描述\或y中有一个小于z\的表达式【 (x

11有int x,y,z;且x=3,y=-4,z=5,则表达式(x&&y)==(x||z)的值为【 1 】 12若a=1,b=2,则表达式a

C语言(分支和循环结构)一 1.以下程序输出结果是( b ) main() { int m=5;

if(m++>5) printf(\else printf(\

13

A)7 B)6 C)5 D)4

2以下程序的输出结果为( b ) # include main ( )

{ int i=0, j=0, a=6;

if ((++i>0)&&(++j>0)) a++;

printf (\

A) i=0, j=0, a=6 B) i=1, j=1, a=7 C) i=1, j=0, a=7 D) i=0, j=1, a=7 3有如下程序 main()

{ int a=2,b=-1,c=2; if(a

if(b<0) c=0; else c++;

printf(\}

该程序的输出结果是( c )

A) 0 B) 1 C) 2 D) 3

4若i为int型,且有程序如下,则输出结果是(c ) i=111; if(i%3==0)

printf(\ printf(\

A) #### B) **** C) ####**** D) 无输出结果

5若运行时x=12,则运行结果为( a ) {int x, y;

scanf(\ y=x>12 ? x+10:x-12; printf(\

A) 0 B) 22 C) 12 D) 10

6以下程序的输出结果是( c ) main()

{ int i=0, j=0, k=6;

if ((++i>0)||(++j>0)) k++; printf(\}

A) 0, 0, 6 B) 1, 0, 7 C) 1, 1, 7 D) 0, 1, 7

7若变量都已正确说明,则以下程序段输出为( c )

14

int a=1,b=2,c=3; if(a>b) a=b; b=c; c=a;

printf(\A)a=1 b=2 c=1 B)a=1 b=2 c=3 C)a=1 b=3 c=1 D)a=2 b=3 c=2

8当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是( b ) if(a

if(b

A) 1 B)2 C)3 D)6

9以下不正确的语句为( b ) A)if(x>y);

B)if(x==y)&&(x!=0)x+=y;

C)if(x!=y)scanf(\,&x);else scanf(\,&y); D)if(x

10有以下程序: #include\ main( ) {char i;

for (; (i=getchar ())!='\\n';) {switch (i-'a')

{case 0: putchar (i);

case 1: putchar (i+1);break; case 2: putchar (i+2); case 3: break;

default: putchar (i);break; } }

printf (\ }

输入下列数据后,程序的输出结果是( b ) abcde

A) abcde B) abcee

15

C) abbde D) abccdd

11若a、 b、c1、c2、x、y、均是整型变量,正确的switch语句是( a ) A) switch(a+b); B) switch(a*a+b*b) { case 1:y=a+b; break; {case 3:

case 0:y=a-b; break; case 1:y=a+b;break; } case 3:y=b-a,break; }

C) switch a D) switch(a-b) { case 1 :y=a-b; break {

case 2: x=a*d; break case c1:case 4:x=a+b;break; default:x=a+b; case c2:case 11:y=a-b;break; } default:y=a*b;break; }

12写出下面程序输出结果( d ) {int x=1, y=0, a=0, b=0; switch(x) {case 1:

switch(y)

{case 0: a++; case 1: b++; } case 2: a++; b++; }

printf(\}

A) a=2, b=1 B) a=1, b=1 C) a=1, b=0 D) a=2, b=2

13C语言的for语句中的表达式可以部分或全部省略,但两个( c )不可省略。但当三个表达式

均省略后,因缺少判断条件,循环会无限制地进行下去,形成死循环。 A) < B) ++ C) ; D) , 14下面有关for循环的正确描述是( d )。

A) for循环只能用于循环次数已经确定的情况 B) for循环是先执行循环体语句,后判定表达式 C) 在for循环中,不能用break语句跳出循环体

D) for循环体语句中,可以包含多条语句,但要用花括号括起来 15以下程序段( d )。 x=-1; do

{ x=x*x;} while(!x)

A) 是死循环 B) 循环执行2次 C) 循环执行一次 D) 有语法错误 16如下的数组中,数组array占用的内存空间是( b )个字节。

16

char array[]={'c','h','i','n','a'};

A. 1 B. 5 C. 6 D. 不确定 17设有程序段 int k=10;

while(k=0) k=k-1;

则下面描述正确的是( c )。 A) while 循环执行10次 B) 循环是无限循环 C) 循环体语句一次也不执行 D) 循环体语句执行一次 18下列程序段的运行结果是( c ) int n=0;

while(n++<3); printf(\

A. 2 B. 3 C. 4 D. 以上都不对 19设有程序段 t=0;

while(printf(\ { t++;

if (t<3) break; }

下面描述正确的是( d )。

A) 其中循环控制表达式与0等价 B) 其中循环控制表达式与'0'等价 C) 其中循环控制表达式是不合法的 D) 以上说法都不对 20下面程序的运行结果是( d )。 #include main() { int y=10;

do { y--;} while(--y); printf(\}

A) -1 B) 1 C) 8 D) 0

21以下程序段的输出结果是( a ). main() { int i=5;

for ( ;i<=15; ) { i++;

if (i%4==0) printf(\ else continue;} }

A. 8 12 16 B. 8 12 C. 12 16 D. 8 22以下不是无限循环的语句为( a )。 A) for(y=0,x=1;x>++y;x=i++) i=x; B) for( ; ;x++=i); C) while(1){x++;}

D) for(i=10; ; i--) sum+=i;

17

23有如下语句 int x=3; do

{ printf(\

则上面程序段( b )

A. 输出的是1 B. 输出的是1和-2 C. 输出的是3和0 D. 是死循环 24以下不是无限循环的是( a ) A. for(y=0,x=1;x>++y;x=i++) i=x; B. for( ; ;x++=i); C. while(1) x++;

D. for(i=10; ;i--) s+=i;

25以下正确的描述是( b )。

A) continue语句的作用是结束整个循环的执行

B) 只能在循环体内和switch语句内使用break语句

C) 在循环体内使用break语句或continue语句的作用相同 D) 从多层循环嵌套中退出时,只能使用goto语句 26以下程序输出结果为( d ) #include \ main() {int i,b,k=0;

for(i=1;i<=5;i++) { b=i%2;

while (b-->=0) k++;} printf(\ }

A. 3,-1 B. 8,-1 C. 3,0 D. 8,-2

27以下程序段中循环体总的执行次数是( a ) int i,j;

for(i=7;i;i--)

for(j=0;j<6;j++) {......} A) 42 B) 21 C) 13 D) 36 28以下不正确的描述是( b ) A. break 语句不能用于循环语句和switch语句外的任何其他语句 B. 在switch语句中使用break语句或continue语句的作用相同 C. 在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环的执行 D. 在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环 1else语句总是和靠它最近的if匹配。 √ 2switch语句中一定有default分支 x 3case后只能跟常量,不能跟变量 √ 4break语句的作用就是结束本层循环。 √ 5do-while语句构成的循环不能用其它语句构成的循环来代替。 √ 6用do-while语句构成循环时,只要while后的表达式为0时就结束循环。x

18

7for(表达式1;表达式2;表达式3)中,表达式1和表达式3不能同时都是逗号表达式。x 8for循环中,如果表达式2为空,则该循环一定是死循环。 x

9while循环的while()后没有分号,而do-while循环的while()后一定要有一个分号。 x 10for(i=0,j=10;i<=j;i++,j--) k=i+j;执行完后,k的值为50。 x 1若a、b均为int型变量,且a=100,则以下的for循环是死循环. x for (b=100 ; a!=b ; ++a,b++) printf(\

执行语句:for(i=1;i++<4;++i);后;变量i的值是5。 x 2以下程序的运行结果是【 1 1 】 main()

{int x,y,z; x=1;y=2;z=3; x=y--<=x||x+y!=z; printf(\,%d\,y); }

3以下程序的运行结果是【 1 0 】 main() {int x,y,z; x=1;y=1;z=0; x=x||y&&z;

printf(\,%d\,x&&!y||z); }

4以下程序的运行结果是【 2 0 main() {int a,b,c; int s,w=0,t; a=-1;b=3;c=3; if(c>0)s=a+b; if(a<=0) {if(b>0)

if(c<=0)w=a-b; }

else if(c>0)w=a-b; else t=c;

printf(\}

5阅读下面程序: main()

{ int s, t, a, b;

scanf(\ s=1; t=1;

if(a>0) s=s+1; if(a>b) t=s+t;

else if (a==b) t=5;

随机值 】 19

else t=2*s;

printf(\}

6为了使输出结果t=4, 输入量a和b应满足的条件是【 a>0&&amain() { int a,max=0; scanf(\

while(【 a 】){ if (max

printf(\}

8执行下面的程序段后,k值是【36 】。 k=1; n=263;

do { k*=n; n/=10; } while(n);

9等差数列的第一项a=2,公差d=3,下面程序的功能是在前n项和中,输出能被4整除的所有的和。请填空。 #include main()

{ int a,d,sum;

a=2;d=3;sum=0; do { sum+=a; a+=d;

if (【sum%4==0 】) printf(\} while(sum<200); }

10鸡兔共有30只,脚共有90个,下面程序段是计算鸡兔各有多少只,请填空。 for(x=1;x<=29;x++) { y=30-x;

if (【x*4+y*2==90】) printf(\}

11写出下面程序的运算结果【 7 】。 # include main ( )

{ int a=14, b=63; while (a!=b)

{while (a>b) a-=b; while (a

printf (\ }

12下列程序的输出为【x=6】。

20

#include main() {

int i,j,x=0;

for(i=0;i<3;i++) {

if(i%3==2) break; x++;

for(j=0;j<4;j++) {

if(j%2) break;

x++; } x++; }

printf(\ }

C语言基础一:

1.下列四组选项中,均不是C语言关健字的选项是( A )。 A) define B) gect C) include D) while IF char scanf go type printf case pow 2.下面四个选项中,均是合法整型常量的选项是( A )。 A)160 B)-0xcdf C) -01 D)-0x48a -0xffff 01a 986,012 2e5 011 0xe 0668 0x <<02>>B>>2

3.下面四个选项中,均是不合法的转义符的选项是( B )。 A) '\\\ B) '\\1011' C) '\\011' D) '\\abc' '\\\\' '\\' '\\f' '\\101' 'xf' '\\A' '\\}' 'x1f' 4.下面不正确的字符串常量是( A )。

A)'abc' B)\ C)\ D)\5.以下选项中不合法的用户标识符是( A )。

A)abc.c B)file C)Main D)PRINT 6.C语言提供的合法关键字是( D )。 A) swith B) cher C) Case

21

D). default

7.下列标识符组中,合法的用户标识符为 A A)_0123与ssiped B)del-word与signed C)list与*jer

D) keep%与wind

8.在C语言中,逻辑值\真\的表示是用( C )。 A) true B) 整型值0 C)非另整型值 D) T 9若有以下定义 char s='\\092';

则该语句( B )

A)使s的值包含一个字符 B)定义不合法,s的值不确定 C)使s的值包含4个字符 D)使s的值包含3个字符

10设C语言中,int类型数据占2个字节,则float类型数据占( D )个字节。 A)1 B)2 C)8 D)4

11已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'+'6'-'3'后,c2中的值为( A )。

A)D B)68 C)不确定的值 D)C 12逻辑运算符两侧运算对象的数据类型是 ( D )。 A) 只是0或1 B) 只能是0或非0正数

C) 只能是整型或字符型数据 D) 可以是任何合法的类型数据 13TURBO C中int类型变量所占字节数是( B )。 A)1 B)2 C)3 D)4

14在C语言中,char型数据在内存中的存储形式是( D )。

A) 补码 B) 反码 C) 原码 D) ASCII码 15若有以下定义,则能使值为3的表达式是( D )。 int k=7, x=12;

A)x%=(k%=5) B)x%=(k-k%5) C)x%=k-k%5 D)(x%=k)-(k%=5) 16判断char型变量c1是否为小写字母的正确表达式为 ( D )。 A) 'a'<=c1<='z' B) (c1>=A. &&(c1<='z') C) ('a'>=c1)||('z'<=c1) D) (c1>='a')&&(c1<='z') 17 已知各变量的类型说明如下: int k,a,b;

unsigned long w=5; double x=1.42

则以下不符合C语言语法的表达式是( A )。 A)x%(-3) B)w+=-2

C)k=(a=2,b=3,a+b) D)a+=a-=(b=4)*(a=3)

若t为double类型,表达式t=1,t+5,t++的值是( D )。 A)1 B)6.0 C)2.0 D)1.0

设n=10,i=4,则赋值运算 n%=i+1执行后,n的值是( A ). A) 0

22

B) 3 C) 2 D) 1

设Int n=3;则有表达式++n,n的结果是( C )。 A)2 B)3 C)4 D)5

用十进制形式输入有符号整数时,在scanf函数语句里格式字符为( AB )。 A)d B)i C)n D)u 在scanf函数语句中可用的修饰符有( ABCD )。 A)* B)h C)l D)宽度 1数据是操作的对象,操作的结果会改变数据的状况。 对 2字符型变量用来存放字符常量,注意只能放2个字符。 错 3C语言中可以把一个字符串赋给一个字符变量。 错

4在 C语言中的实型变量分为两种类型,它们是 float(实型)和double(双精度实型)。 错 5在C语言中,要求参加运算的数必须是整数的运算符是% . 对

6若有以下定义,则执行下面表达式y+=y-=m*=y后,y的值为-6。int m=5,y=2; 错 7输入语句的格式为: scanf(\是正确的。 对 8在scanf(\函数中,可以使用一个或多个空格作为两个输入数之间的间隔。 错 9getchar函数的功能是接收从键盘输入的一串字符。 错 10在变量说明中给变量赋初值的方法是:int a=b=c=10; 错

12printf函数是一个标准库函数,它的函数原型在头文件\中。 对 13printf函数称为格式输入函数,它的函数原型在头文件\中。 对

14在printf函数中,不同系统对输出表列的求值顺序不一定相同,TC是按从右到左进行的。 对

15若int x=3; printf(\则系统会报错,没有任何结果。 错 16逻辑运算符的优先级别高于算术运算符 错 1在C语言中,表示逻辑\真\值用【 1 】.

2式pow(2.8,sqrt(double(x)))值的数据类型为( doubt )。

3假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是【 8 】。 4若x是int型变量,则执行下面表达式后,x的值为【 12 】。x=(a=4,6*2)

5若k为 int整型变量且赋值7,请写出赋值表达式 k *= k + 3的运算结果【70 】。 6scanf函数是一个标准库函数,它的函数原型在头文件【 stdio.h 】中。 7getchar函数可以接收【 单 】个字符,输入数字也按字符处理。 8在语句中,给变量赋值时,赋值语句必须以【 分号 】结尾。 9当a=3,b=2,c=1时,表达式f=a>b>c 的值是【 0 】

10设x,y,z均为int型变量,请写出描述\中有一个为负数\的表达式【 x<0&&y>=0||y<0&&x>=0 】

11若a=6,b=4,c=3,则表达式 a&&b||b-c的值是【1 】

12设x=3,y=-4,z=5,则表达式!(x>y)+(y!=z)||(x+y)&&(y=z)的值是【 1 】

23

基础二

1下面四个选项中,均是非法常量的选项是( A )。

A)'as' B)'\\\\' C)-0x18 D)0xabc -0fff '\\01' 01177 '\\0' '\\0a' 12,456 0xf \2下面四个选项中,均是不合法整型常量的选项是( d )。 A)-0f1 B)-0xcdf C) -018 D)-0x48eg -0xffff 017 999 -068 0011 12,456 5e2 03f 3下面正确的字符常量是( C )。

A) \ B) '\\\\'' C) 'W' D) '

4以下每个选项都代表一个常量,其中正确的整型常量是( B )。 A)1.2 B)-20 C)1,000 D)4 5 6 5以下选项中不合法的用户标识符是( )。

A)_123 B)Printf C)A$ D)Dim 6在下列C语言程序中,可以用做变量名的是( b )。 A) 1 B) a1 C) int D) *p

7C语言提供的合法数据关键字是( a )。 A) float B) Sagned C) Integer D) Char

8以下符号中不能用作用户标识符的符号是( B )。 A)_256 B)void C)scanf D)Struct

9若k为int型变量,则以下语句( c )。 k=8567;

printf(\

A)输出格式描述不合法 B)输出为|008567| C)输出为|8567 | D)输出为|-08567| 10sizeof(float)是( b )。

A)一个双精度表达式 B)一个整型表达式

C)一种函数调用 D)一个不合法的表达式

11在C语言中, int、char和short三种类型数据在内存中所占用的字节数( d )。 A)由用户自己定义 B)均为2个字节

C)是任意的 D)由所用机器的机器字长决定

12判断char型变量c1是否为小写字母的正确表达式为 ( d )。 A) 'a'<=c1<='z' B) (c1>=A. &&(c1<='z') C) ('a'>=c1)||('z'<=c1) D) (c1>='a')&&(c1<='z')

24

13以下叙述中正确的是( b )。

A.a是实型变量,C语言允许进行以下赋值a=10,因此可以这样说:实型变量中允许存放整型值

B.在赋值表达式中,赋值号右边即可以是变量也可以是任意表达式 C.执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,a的值已由原值改变为b的值,b的值由原值变为0

D.已有a=3,b=5当执行了表达式a=b,b=a之后,已使a中的值为5,b中的值为3 14表达式18/4*sqrt (4.0)/8值的数据类型为( c )。 A)int B)float C)double D)不确定 15下列运算符中,不属于关系运算符的是( c )。 A) < B) > = C) ! D) ! =

16若希望当A的值为奇数时,表达式的值为真,A的值为偶数时,表达式的值为假,则以下不能满足要求的表达式是 ( d)。

A) A%2= =1 B) !(A%2= =0) C) !(A%2) D) A%2

17已知各变量的类型说明如下: int i=8,k,a,b;

unsigned long w=5; double x=1.42,y=5.2;

则以下符合C语言语法的表达式是( a )。 A)a+=a-=(b=4)*(a=3) B)a=a*3=2 C)x%(-3) D)y=float(i)

18 若变量已正确定义并赋值,下面符合C语言语法的表达式是( B )。 A)a=a+7; B)a=7+b+c,a++ C)int 12.3%4 D)a=a+7=a+b

19逗号表达式(a=3*5,a*4),a+15的值为( c )。 A)15 B)60 C)30 D)不确定 20设Int n=3;则n++的结果是( b )。 A)2 B)3 C)4 D)5

1用小数或指数形式输入实数时,在scanf函数语句里格式字符为( bcd )。 A)i B)f C)e D)g 2可以使用( bcd )输入字符型数据。

A)putchar(c); B)getchar(c); C)getchar(); D)scanf(\1C语言中数据有常量与变量之分。 对 2一般一个字符变量在内存中占一个字节。 对 3C语言规定,可以在定义变量时,同时使变量初始化。 对

4把k1、k2定义成基本整型变量,并赋初值0的定义语句是int k1=k2=0; 。错 5如果i的原值为3,则:j = ++ i,j的值为3。 错 6凡是表达式都有一个值。 对 7输入语句的格式为:scanf(\是正确的。 对

8在scanf(\,%*d,%d\函数中,当输入为1,2,3时,将1赋给a,将2赋给b。 错

9getchar函数的功能是接收从键盘输入的一个整数。 错 10假定变量a,b,c在说明时已赋初值,则 if ((a=b;)>0) c=a;是正确的。 错

25

11

12printf函数是一个标准库函数,它的函数原型在头文件\中。 错 13在printf函数中,格式字符d的意义是:以十进制形式输出带符号整数。 对 14 在printf函数中,输出表列的各输出项之间可用冒号分隔。 错 15若int x=3; printf(\则系统不会报错,会输出x的地址。 对 16int a=0,b=1,c=2;则表达式a||b+c&&b==c的值为0 对 1若有以下定义:char c='\\010';则变量C中包含的字符个数为( 1 )。 2若有以下定义:int x=3,y=2;float a=2.5,b=3.5;则下面表达式的值为【 】。(x+y)%2+(int)a/(int)b 3若a是int型变量、且a的初值为6,则执行下面表达式后,a的值为【 60 】。a+=a-=a*a 4若x是int型变量,则执行下面表达式后,x的值为【 】。x=a=4,6*2 5若a是int型变量,且a的初值为6,则计算表达式后a的值为【 60 】。a+=a-=a*a

6scanf函数的地址表列中给出各变量的地址,地址是由【 运算符\ 】后跟变量名组成的。

7使用getchar函数接收字符,若输入多于一个字符时,只接收第【 】个字符。 8 C语言的格式输出函数是【 () 】。

9当a=5,b=4,c=2时,表达式a>b!=c 的值是【1 】

10已知A=7.5,B=2,C=3.6,表达式A>B&&C>A || AB的值是【0 】 11若a=3,b=2,c=1,则表达式a-b

基础三

1下面四个选项中,均是不合法的用户标识符的选项是( C )。 A) A B) float C) b-a D) _123 p_0 lao goto temp do _A int INT 2下面四个选项中,均是不合法浮点数的选项是( B )。 A) 160. B) 123 C) -018 D) -e3

0.12 2e4.2 123e4 .234 e3 .e5 0.0 1e3

3下面四个选项中,均是不正确的八进制或十六进制数的选项是( D )。 A)016 B)0abc C)010 D)0a12 0x8f 017 -0x11 7ff 018 0xa 0x16 -123

4以下每个选项都代表一个常量,其中不正确的实型常量是( B )。 A)2.607E-1 B)0.8103e 2 C)-77.77 D)45.6e-2 5可用作用户标识符的一组标识符是( B )。

A)void B)a3_b3 C)For D)2a

define _xyz -abc DO WORD IF Case sigeof 6下列标识符组中,合法的用户标识符为( B )。

26

A) PAd与p#d B) Scanf 与a10 C) void与max D) A*与temp

7( B )是C语言提供的合法的数据类型关键字。 A)Float B)signed C)integer D)Char 8以下选项中正确的常量是( A )。 A) 012 B) -20

C) 1,000 D) 4 5 6

9现已定义整型变量int i=1;

执行循环语句while(i+ +<5);后,i的值为( c )。

A)1 B)5 C)6 D)以上三个答案均不正确

10设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为( C )。 A)int B)float C)double D)不确定 11若有说明语句:char c='\\72';则变量c ( A )。 A)包含1个字符 B)包含2个字符

C)包含3个字符 D)说明不合法,c的值不确定

12设X、Y、Z都是int整型变量,且x=2, y=3, z=4,则下面的表达式中,值为0的表 达式是( B )。

A) 'x'&&'z' B) (!y= =1)&&(!z= = 0) C) (x

A) 在C程序中无论是整数还是实数,只要在允许的范围内都能准确无误的表示

B) 若在定义语句double a,b;之后,因为变量a,b已正确定义,因此立刻执行这样的表达式:a=b+9.381是正确的

C) 在C程序中,常量、变量、函数调用,都是表达式的一种 D) 在main函数中,变量一经定义,系统将自动赋予初始值

14设有说明:char w;int x;float y;double z;则表达式w*x+z-y值的数据类型为( D )。 A) float B) char C) int D) double

15设a=2,b=3,c=4,则表达式 a+b>c&&b= =c&&a||b+c&&b+c的值为( D )。 A) 5 B) 8 C) 0 D) 1

16在C语言中,逻辑值\真\的表示是用( C )。 A) true B) 整型值0 C) 非另整型值 D) T 17以下不正确的叙述是( D )。 A)在C程序中,逗号运算的优先级最低

B)在C程序中,APH和aph是两个不同的变量

C)若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变 D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值 18以下结果为整型的表达式(设有int i; char c; float f;)是( B )。 A)i+f B)i*c C)c+f D)i+c+f

19设有逗号表达式(a=3*5,a*4),a+15,a的值为( C )。 A)60 B)30 C)15 D)90

27

20设Int n=3;则有表达式n++,n的结果是( C )。 A)2 B)3 C)4 D)5

1若在scanf函数语句中没有非格式字符作输入数据的间隔,则可用( ACD )。 作为输入数据的间隔。

A)空格 B)逗号 C)TAB D)回车 2使用scanf函数时,在源程序开头( ABC )。 A)书写#include \ B)书写#include C)不必写#include D)书写#include \

1C语言规定标识符只能由字母、数字和小数点三种字符组成。

2 C语言使字符型数据和整型数据之间可以通用。一个字符数据既可以以字符形式输出,也可以以整数形式输出。 对

3 C语言中定义了一个变量,代表内存中的一个地址。 对 4表达式3.5 + 1/2 + 56的计算结果是7.5 。错

5 由赋值运算符将一个变量和一个表达式连接起来的式子称为\赋值表达式\。 对 6设C语言中,一个int型数据在内存中占2个字节,则int数据的取值范围为-32768-32769。错

7在使用scanf函数之前应包含头文件\。错

8在scanf(\函数中,当输入为字符a,b时,将a赋给c1,将b赋给c2。错 9 scanf函数中,如果格式控制串中有普通字符则输入时也要输入该普通字符。对 10 假定变量x,y,z在说明时已赋初值,则 if ((x=y+5)>0) z=x; 是正确的 对 11printf函数中的格式字符,既可以是大写形式,也可以是小写形式。 错 12在printf函数中,格式字符\可用来输出5个字符。错 13在printf函数中,格式字符s的意义是:输出单个字符。 错 14 在printf函数中,输出项可以是任意合法的表达式。对 15 算术运算符的优先级别高于关系运算符 对 16 int a=0,b=1,c=2,x,y;,则!(x=a)&&(y=b)&&c的值为1

1若x和n均是int型变量,且x的初值为12,n的初值为5,则执行下面表达式后,x的值为( 0 )。x%=(n%=2)

2假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为【 9 】。 3若a是int型变量,则执行下面表达式后,a的值为【2 】。a=25/3%3 4表达式1/3*3的计算结果是【 0 】。

5若a是int型变量,则计算表达式后a的值为【 2 】。a=25/3%3

6在输入字符数据时,若\格式控制字符串\中没有非格式字符,则认为所有输入的字符均为【 有效 】字符。 7在scanf函数中,【 &a 】表示变量a的地址。 8以下程序的运行结果是【 computer, com 】。 main()

{ printf(\ } 9在C语言中,表示逻辑\真\值用【 非零数 】

10若a=6,b=4,c=2,则表达式!(a-b)+c-1&&b/3+c/2的值是【 1 】 11设a=-1,b=0,c=1,则表达式a||b+c&&b==c的值是【 1 】 12有int a=3,b=4,c=5,x,y;,则以下表达式的值为【 0 】 !(x=a)&&(y=b)&&c

28

基础四

1以下符号中不能用作用户标识符的符号是( B )。 A)_256 B)void C)scanf D)Struct 2下面四个选项中,均是合法浮点数的选项是( )。 A) +1e+1 B) -.60 C) 123e D) -e3 5e-9.4 12e-4 1.2e-.4 .8e-4 03e2 -8e5 +2e-1 5.e-0

3下面四个选项中,均是正确的八进制或十六进制数的选项是( C )。 A) -1a B)0abc C)0010 D)0a12 0x8f -017 0x11 -0x123 -011 0xc 0xf1 -0xa 4以下选项中,为C语言合法的关键字是( D )。

A)swicth B)cher C)Case D)default 5C语言提供的合法的数据类型关键字是( B )。

A)Double B)short C)integer D)Char

6下列标识符组中,合法的用户标识符为( D )。 A)b-b与abc B)CCP与float C)hiy与 D) isw与INT

7 属于合法的C 语言长整型常量的是( B )。

A)5876273 B)0L C)2E10 D)(Long)5876273若int类型数据占两个字节,下8列程序的输出结果是( D )。 main() {

int k=-1;

printf(\}

A)-1,-1 B)-1,32767 C)-1,32768 D)-1,65535 9设已定义x为double类型变量 x=213.82631;

printf(\则以上语句( C )。

A)输出格式描述符的域宽不够,不能输出 B)输出为21.38e+01 C)输出为2.14e+02 D)输出为-2.14e2 10执行x=5>1+2&&2||2*4<4 - !0后,X的值为( c )。 A) -1 B) 0 C) +1 D) 5

11设ch是字符变量,其值为A,且有下面的表达式ch=!(ch>='A'&&ch<='z')?ch:(ch+32)则表达式的值是 ( A )

29

A) A B) a C) 2 D) z

12设ch是char型变量,其值为Z,且有下面的表达式,其值为( D )。 ch=(ch>='A'&&ch<='Z')?(ch+32):ch A) A B) a C) Z D) z

13以下的变量定义中,合法的是( B )。

A)float 3_four = 3.4 ; B)int _abc_= 2 ; C)double a = 1 + 4e2.0 D)short do =15; 14若有int k = 11;则表达式(k++ * 1/3)的值是( B )。 A)0 B)3 C)11 D)12 15逻辑运算符两侧运算对象的数据类型是 ( d )。 A) 只是0或1 B)只能是0或非0正数 C) 只能是整型或字符型数据 D) 可以是任何类型数据 16下列表达式的值,那一个等于0 ( b )。 A) 5%6 B) 5/6 C) 5/6.0 D) 5 - 6

17以下正确的叙述是( D )。 A)在C程序中,每行只能写一条语句

B)若 a 是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数 C)在C程序中,无论是整数还是实数,都能被准确无误地表示 D)在C程序中,%是只能用于整数运算的运算符

18以下不正确的语句(设有int p,q)是( D )。 A)p*=3; B)p/=q; C)p+=3; D)p&&=q;

19如果a=1,b=2,c=3,d=4,则条件表达式a

20设Int n=2;则++n+1= =4的结果是( c )。 A)true B)false C)1 D)0

1若输入4位整数到整型变量a中,可用( b )。 A)scanf(\ B)scanf(\C)scanf(\D)scanf(\

2对于scanf(\设a为整型变量,输入5,其输出可为( )。 A)a=5 B)5 C)a= 5 D)a=a=5

1在C语言中,要求对所有用到的变量先定义,然后才能使用。 对 2C语言中,字符数据与整型数据可以互相赋值。 错 3C实型变量分为单精度和双精度两种。 错

4a1、a2定义成单精度实型变量,并赋初值1的定义语句是float a1=1; a2=1; 。 错 5C语言中逗号运算符又称为\顺序求值运算符\。 对 6C提供的三种逻辑运算符是 !, &&, >= . 错

7在使用scanf函数之前可以不包含头文件\。 对

8在scanf(\函数中,输入123456789,只把123456赋予变量i 。 错 9a=b=c=d=10;是一个合法的赋值语句。 对 10C语言的格式输出函数是scanf(). 错

12使用printf函数时,格式控制字符串和各输出项应一一对应。 错 13在printf函数中,格式字符f的意义是:以小数形式输出单精度实数。 错

30

14在printf函数中,转义字符\\b的作用是退格。 对 15算术运算符的优先级别高于逻辑运算符 对 16int a=1,b=0,c=1;,则!(a+b)+c-0&&b+c/2的值为0 1经过下述赋值后,变量x的数据类型是( int )。 int x=2; double y;

y=(int)(float)x;

2已知字母a的ASCII码的十进制代码为97,且设ch为字符型变量,则表达式ch='a'+'8'-'3'的值为【 f 】。

3若s是int型变量,且s=6,则下面表达式的值为【 1 】。 s%2+(s+1)%2

4表达式1.0/2*3的计算结果是【 1.5 】。

5当a=3,b=2,c=1时,表达式f=a>b>c的值是【 0 】. 6getchar函数是【 】函数。

7赋值语句是由赋值表达式加上【 ; 】构成的。 8在TC中,printf()函数输出表列的求值顺序是【 】。

9设y为int型变量,请写出描述\是奇数\的表达式【 y%2!=0 】 10若a=2,b=4,则表达式!(x=a)|| (y=b)&&0的值是【 0 】

11条件\或x<-3\的c语言表达式是【 x>0&&x<3||x<-3 】 12有int a=3,b=4,c=5;,则以下表达式的值为【 1 】 !(a+b)+c-1&&b+c/2

基础五

1C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( A)必须为大写 B)必须为下划线

C)必须为字母或下划线

D)可以是字母、数字和下划线中的任一种字符

2下面四个选项,均是合法转义字符的选项是( A )。 A) '\\'' B) '\\' C)'\\018' D) '\\\\0''

'\\\\' '\\017' '\\f' '\\101' '\\n' '\\\ 'xab' 'x1f'

3下面四个选项中,均是正确的数值常量或字符常量的选项是( D )。 A)0.0 B)\ C)'3' D)+001 0f 3.9E-2.5 011 0xabcd 8.9e 1e1 0xFF00 2e2 '&' '\\\ 0a 50 4以下符号中不能用作用户标识符的是( D )。

A)IF B)Switch C)gets D)case

31

c )。 5在C语言中,下列哪个字符为合法的字符常量( B )。 A)'\\084′ B)'\\x43′ C)'ab′ D)'\\0′

6下列四个选项中,均是C语言关健字的选项是( B )。 A) auto B) switch C) signed D) if

enum typedef union struct include continue scanf type 7不合法的常量是( D )。

A)'\\2' B)'\ C)\ D)\8若a为整型变量,则以下语句( B )。 a=-2L;

printf(\

A)赋值不合法 B)输出值为-2 C)输出为不确定值 D)输出值为2 9已定义x为float型变量 x=213.82631;

printf(\则以上语句 B

A)输出格式描述符的域宽不够,不能输出 B)输出为213.83 C)输出为213.82 D)输出为-213.82 10用getchar函数可以从键盘读入一个( D ) A) 整型变量表达式值 B) 实型变量值

C)字符串 D) 字符或字符型变量值

11已知int x,y,z;执行语句x=(y=(z=10)+5)-5;后x、y、z的值是( A )。 A) x=10 B) x=10 C) x=10 D) x=10 y=15 y=10 y=10 y=5 z=10 z=10 z=15 z=10

12 设a为整型变量,初值为12,执行完语句a+=a-=a*a后,a的值是 ( D )。A) 552 B) 144 C) 264 D) -264

13设x为int型变量,则执行以下语句段后,x的值为( B )。 A)10 B)20 C)40 D)30 x = 10 ; x += x -= x - x;

14若有定义,int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是( A A) 2.500000 B) 2.750000 C) 3.500000 D) 0.000000 15下列运算符中优先级最高的是 ( B )。 A) < B) + C) && D) !=

16设以下变量均为int 类型,则值不等于7的表达式是( C )。 A)(x=y=6,x+y,x+1) B)(x=y=6,x+y,y+1) C)(x=6,x+1,y=6,x+y) D)(y=6,y+1,x=y,x+1) 17以下符合C语言语法的,赋值表达式是( B C )。 A) d=9+e+f=d+9 B) d=9+e,f=d+9

32

)。 C) d=9+e,e++,d+9 D) d=9+e++=d+7

18以下使i的运算结果为4的表达式是( D )。 A) int i=0,j=0; (i=3,(j++)+i); B) int i=1,j=0; j=i=((i=3)*2); C) int i=0,j=1;

(j= =1)?(i=1):(i=3); D) int i=1,j=1; i+=j+=2;

19设Int n=3;则++n的结果是( C )。 A)2 B)3 C)4 D)5

20设Int n=2;则有表达式++n+1= =4,n的结果是( 3 )。 A)1 B)2 C)3 D)4

1下列能正确输入字符数组a 的语句是( ABD ) A)scanf(\ B)scanf(\C)scanf(\ D)循环执行scanf(\

2在输入时,字符变量的值不用空格间隔,其输入函数可为( BD )。 A)scanf(\ B)scanf(\ C)scanf(\ D)循环执行getchar() 1C的字符常量是用双引号括起来的一个字符。 错 2字符串常量是一对单引号括起来的字符序列。 错 3设C语言中,一个int型数据在内存中占2个字节,则int型数据的取值范围为-32768-+32767。对

4在C语言中的实型变量分为两种类型,它们是float和double。 错

5 若有以下定义:int a=2,b=3;float x=3.5,y=2.5;则下面表达式的值为3.500000。 (float)(a+b)/2+(int)x%(int)y 对 6输入语句的格式为:scanf(\是正确的。 对

7getchar()函数得到的字符可以不赋给任何变量,而作为表达式的一部分。 对 8scanf函数中无精度控制。 错

9a+==a=2; 是一个合法的赋值语句,赋值后a的值为:2。 错 10在TC中,printf()函数输出表列的求值顺序是从右到左。 11在printf函数中,\表示按十进制正整数输出。 错 12printf是C语言的输出语句。 错

13在printf函数中,格式字符c的意义是:输出单个字符。 对 14在printf函数中,不能使用转义字符。 错 15关系运算符的优先级别高于逻辑运算符 对 16C语言中没有逻辑型数据 错

1表达式8/4*(int)2.5/(int(1.25*(3.7+2.3))值的数据类型为( int )。 2若x、i、j和k都是int型变量,则计算下面表达式后,x的值为【 32 】。 x=(i=4,j=16,k=32)

3若a是int型变量,则下面表达式的值为【 26 】。 (a=4*5,a*2),a+6

33

4若k为 int 整型变量且赋值7,x为double型变量且赋值8.4,赋值表达式x = k的运算结果是【 7.0 】。

5若a=1, b=4, c=3, 则表达式 !(a

7在变量说明中给同类变量赋初值时,各变量之间用【 , 】隔开。 8以下程序的运行结果是【 6 5 】。 main()

{int i=5; printf(\ }

9设x,y,z均为int型变量,请写出描述\或y中有一个小于z\的表达式【 x=z||y=z 】

10若a=1,b=4,c=3,则表达式 !(a

11有int x,y,z;且x=3,y=-4,z=5,则表达式(x&&y)==(x||z)的值为【 1 】 12若a=1,b=2,则表达式a

C语言(分支和循环结构)一 1.以下程序输出结果是( b ) main() { int m=5;

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

2以下程序的输出结果为( b ) # include main ( )

{ int i=0, j=0, a=6;

if ((++i>0)&&(++j>0)) a++;

printf (\

A) i=0, j=0, a=6 B) i=1, j=1, a=7 C) i=1, j=0, a=7 D) i=0, j=1, a=7 3有如下程序 main()

{ int a=2,b=-1,c=2; if(a

if(b<0) c=0; else c++;

printf(\}

该程序的输出结果是( c)

A) 0 B) 1 C) 2 D) 3

34

4若i为int型,且有程序如下,则输出结果是( c ) i=111; if(i%3==0)

printf(\ printf(\

A) #### B) **** C) ####**** D) 无输出结果

5若运行时x=12,则运行结果为( a ) {int x, y;

scanf(\ y=x>12 ? x+10:x-12; printf(\

A) 0 B) 22 C) 12 D) 10

6以下程序的输出结果是( c ) main()

{ int i=0, j=0, k=6;

if ((++i>0)||(++j>0)) k++; printf(\}

A) 0, 0, 6 B) 1, 0, 7 C) 1, 1, 7 D) 0, 1, 7

7若变量都已正确说明,则以下程序段输出为( c ) int a=1,b=2,c=3; if(a>b) a=b; b=c; c=a;

printf(\A)a=1 b=2 c=1 B)a=1 b=2 c=3 C)a=1 b=3 c=1 D)a=2 b=3 c=2

8当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是( b if(a

if(b

A) 1 B)2 C)3 D)6

35

) 9以下不正确的语句为( b ) A)if(x>y);

B)if(x==y)&&(x!=0)x+=y;

C)if(x!=y)scanf(\,&x);else scanf(\,&y); D)if(x

10有以下程序: #include\ main( ) {char i;

for (; (i=getchar ())!='\\n';) {switch (i-'a')

{case 0: putchar (i);

case 1: putchar (i+1);break; case 2: putchar (i+2); case 3: break;

default: putchar (i);break; } }

printf (\ }

输入下列数据后,程序的输出结果是( b ) abcde

A) abcde B) abcee C) abbde D) abccdd

11若a、 b、c1、c2、x、y、均是整型变量,正确的switch语句是( a ) A) switch(a+b); B) switch(a*a+b*b) { case 1:y=a+b; break; {case 3:

case 0:y=a-b; break; case 1:y=a+b;break; } case 3:y=b-a,break; }

C) switch a D) switch(a-b) { case 1 :y=a-b; break {

case 2: x=a*d; break case c1:case 4:x=a+b;break; default:x=a+b; case c2:case 11:y=a-b;break; } default:y=a*b;break; }

12写出下面程序输出结果( d ) {int x=1, y=0, a=0, b=0; switch(x) {case 1:

switch(y)

36

{case 0: a++; case 1: b++; } case 2: a++; b++; }

printf(\}

A) a=2, b=1 B) a=1, b=1 C) a=1, b=0 D) a=2, b=2

13C语言的for语句中的表达式可以部分或全部省略,但两个( c )不可省略。但当三个表达式 均省略后,因缺少判断条件,循环会无限制地进行下去,形成死循环。 A) < B) ++ C) ; D) , 14下面有关for循环的正确描述是(d )。

A) for循环只能用于循环次数已经确定的情况 B) for循环是先执行循环体语句,后判定表达式 C) 在for循环中,不能用break语句跳出循环体

D) for循环体语句中,可以包含多条语句,但要用花括号括起来 15以下程序段( d )。 x=-1; do

{ x=x*x;} while(!x)

A) 是死循环 B) 循环执行2次 C) 循环执行一次 D) 有语法错误 16如下的数组中,数组array占用的内存空间是( b )个字节。 char array[]={'c','h','i','n','a'};

A. 1 B. 5 C. 6 D. 不确定 17设有程序段 int k=10;

while(k=0) k=k-1;

则下面描述正确的是( c )。 A) while 循环执行10次 B) 循环是无限循环 C) 循环体语句一次也不执行 D) 循环体语句执行一次 18下列程序段的运行结果是( d ) int n=0;

while(n++<3); printf(\

A. 2 B. 3 C. 4 D. 以上都不对 19设有程序段 t=0;

while(printf(\ { t++;

if (t<3) break; }

下面描述正确的是( c )。

A) 其中循环控制表达式与0等价 B) 其中循环控制表达式与'0'等价

37

C) 其中循环控制表达式是不合法的 20下面程序的运行结果是( d )。 #include main() { int y=10;

do { y--;} while(--y); printf(\}

A) -1 B) 1 C) 8 D) 0

D) 以上说法都不对

21以下程序段的输出结果是( a ). main() { int i=5;

for ( ;i<=15; ) { i++;

if (i%4==0) printf(\ else continue;} }

A. 8 12 16 B. 8 12 C. 12 16 D. 8 22以下不是无限循环的语句为( a )。 A) for(y=0,x=1;x>++y;x=i++) i=x; B) for( ; ;x++=i); C) while(1){x++;}

D) for(i=10; ; i--) sum+=i; 23有如下语句 int x=3; do

{ printf(\

则上面程序段( b )

A. 输出的是1 B. 输出的是1和-2 C. 输出的是3和0 D. 是死循环 24以下不是无限循环的是( a ) A. for(y=0,x=1;x>++y;x=i++) i=x; B. for( ; ;x++=i); C. while(1) x++;

D. for(i=10; ;i--) s+=i;

25以下正确的描述是( b )。

A) continue语句的作用是结束整个循环的执行

B) 只能在循环体内和switch语句内使用break语句

C) 在循环体内使用break语句或continue语句的作用相同 D) 从多层循环嵌套中退出时,只能使用goto语句 26以下程序输出结果为( d ) #include \ main() {int i,b,k=0;

38

for(i=1;i<=5;i++) { b=i%2;

while (b-->=0) k++;} printf(\ }

A. 3,-1 B. 8,-1 C. 3,0 D. 8,-2 27以下程序段中循环体总的执行次数是( a ) int i,j;

for(i=7;i;i--)

for(j=0;j<6;j++) {......} A) 42 B) 21 C) 13 D) 36

28以下不正确的描述是( b ) A. break 语句不能用于循环语句和switch语句外的任何其他语句 B. 在switch语句中使用break语句或continue语句的作用相同 C. 在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环的执行 D. 在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环 1else语句总是和靠它最近的if匹配。 错 2switch语句中一定有default分支 错 3case后只能跟常量,不能跟变量 对 4break语句的作用就是结束本层循环。 错 5do-while语句构成的循环不能用其它语句构成的循环来代替。 对 6用do-while语句构成循环时,只要while后的表达式为0时就结束循环。 错

7for(表达式1;表达式2;表达式3)中,表达式1和表达式3不能同时都是逗号表达式。 错 8for循环中,如果表达式2为空,则该循环一定是死循环。 错 9while循环的while()后没有分号,而do-while循环的while()后一定要有一个分号。错 10for(i=0,j=10;i<=j;i++,j--) k=i+j;执行完后,k的值为50。 错 1若a、b均为int型变量,且a=100,则以下的for循环是死循环. 错 for (b=100;a!=b;++a,b++) printf(\

执行语句:for(i=1;i++<4;++i);后;变量i的值是5。 错 2以下程序的运行结果是【 1 1 】 main()

{int x,y,z; x=1;y=2;z=3; x=y--<=x||x+y!=z;

printf(\,%d\,y); }

3以下程序的运行结果是【 1 0 】 main() {int x,y,z; x=1;y=1;z=0; x=x||y&&z;

printf(\,%d\,x&&!y||z); }

39

4以下程序的运行结果是【 2 main() {int a,b,c; int s,w=0,t; a=-1;b=3;c=3; if(c>0)s=a+b; if(a<=0) {if(b>0)

if(c<=0)w=a-b; }

else if(c>0)w=a-b; else t=c;

printf(\}

0 随机值 】

5阅读下面程序: main()

{ int s, t, a, b;

scanf(\ s=1; t=1;

if(a>0) s=s+1; if(a>b) t=s+t;

else if (a==b) t=5; else t=2*s;

printf(\}

6为了使输出结果t=4, 输入量a和b应满足的条件是【a0 】 7下面程序的功能是在输入的一批整数中求出最大者,输入0结束循环。 #include main() { int a,max=0; scanf(\

while(【 a 】){ if (max

printf(\}

8执行下面的程序段后,k值是【 36 】。 k=1; n=263;

do { k*=n; n/=10; } while(n);

9等差数列的第一项a=2,公差d=3,下面程序的功能是在前n项和中,输出能被4整除的所有的和。请填空。 #include main()

{ int a,d,sum;

40

a=2;d=3;sum=0; do { sum+=a; a+=d;

if (【sum%4==0】) printf(\} while(sum<200); }

10鸡兔共有30只,脚共有90个,下面程序段是计算鸡兔各有多少只,请填空。 for(x=1;x<=29;x++) { y=30-x;

if (【x*4+y*2==90】) printf(\}

11写出下面程序的运算结果【 7 】。 # include main ( )

{ int a=14, b=63; while (a!=b)

{while (a>b) a-=b; while (a

printf (\ }

12下列程序的输出为【6 】。 #include main() {

int i,j,x=0;

for(i=0;i<3;i++) { if(i%3==2) break; x++;

for(j=0;j<4;j++) { if(j%2) break; x++; } x++; }

printf(\}

C语言(分支和循环结构)二 以下程序的输出结果是( c ) main( )

{ int a=-1,b=1,k;

41

if((++a<0)&&!(b--<=0))

printf(\,a,b); else

printf(\,b,a); }

A) -1 1 B) 0 1 C) 1 0 D) 0 0

与 y=(x>0?1:x<0?-1:0);的功能相同的if语句是( a ) A) if (x>0) y=1; B) if(x)

else if(x<0)y=-1; if(x>0)y=1;

else y=0; else if(x<0)y=-1; else y=0; C) y=-1 D) y=0; if(x) if(x>=0) if(x>0)y=1; if(x>0)y=1; else if(x==0)y=0; else y=-1; else y=-1;

若执行以下程序时从键盘上输入9,则输出结果是( c main() { int n;

scanf(\

if(n++<10) printf(\ else printf(\}

A) 11 B) 10 C) 9 D) 8

若i为int型,且有程序如下,则输出结果是( c ) i=111; if(i%3==0);

printf(\ printf(\

A) #### B) **** C) ####**** D) 无输出结果 请读下面程序: main()

{int x=1, y=2, z=3; x+=y+=z;

printf(\ printf(\}

程序输出结果为( d )

A) 5 4 B) 4 5 C) 5 6 D) 6 5

在C语言的if语句中,用作判断的表达式为( d )

42

) A) 关系表达式 B) 逻辑表达式 C) 算术表达式 D) 任意表达式

若变量都已正确说明,则以下程序段输出为( d ) int a=1,b=2,c,d; if (a=b) c=d=a; else c=b;d=b;

printf(\

A)c=1,d=1 B)c=1,d=2 C)c=2,d=1 D)c=2,d=2

以下程序的输出结果是( d ) main()

{int a=100,x=10,y=20,a1=5,a2=0 if(x

if(y !=10) if(!a1) a=1; else

if(a2) a=10; a=-1;

printf(\

A)1 B) 0 C) 10 D)-1

若w、x、y、z、m均为int型变量,则执行下面语句后的m值是( a ) w=1;x=2;y=3; z=4;

m=(w

A)1 B)2 C)3 D)4

若有定义: float w; int a, b; 则合法的switch语句是( c ) A) switch(w) B) switch(a);

{ case 1.0: printf(\ { case 1 printf(\ case 2.0: printf(\ case 2 printf(\} }

C) switch(b) D) switch(a+b); { case 1: printf(\ { case 1: printf(\ default: printf(\ case 2: printf(\ case 1+2: printf(\ default: printf(\} }

若输入B,以下程序的运行结果为 ( c ) main()

43

{ char grade;

scanf(\ switch(grade)

{ case 'A': printf(\ case 'B':

case 'C': printf(\ case 'D': printf(\ default: printf(\}

A) >=85 B) >=60 C) >=60 D) error. <60 error.

选择出i的正确结果( d ) int i=10; switch(i) {

case 9: i++; case 10: i+=1; case 11:i++; default: i+=1; }

A) 10 B) 11 C) 12 D) 13

C语言的do_while循环中,循环由do开始,用while结束;而且在while表达式后面的( 不能丢,它表示d0_while循环的结束。 A) \\n B) ; C) % D) , 以下程序的输出结果是( b )。 #include main() {

int num=0; while(num<=2) {

num++;

printf(\} }

A) 1 B) 1 C) 1 D) 1 2 2 2 3 3 4

以下程序的输出为( d ) # include main( )

44

b) { int y=10; while (y--);

printf (\

A. y=0 B. 无限循环,无结果输出 C. y=1 D. y=-1 设有程序段 int x=0,s=0;

while(!x!=0) s+=++x; printf(\

则( d )。

A) 运行程序段后输出0 B) 运行程序段后输出1 C) 程序段中的控制表达式是非法的 D) 程序段执行无限次 下面程序段的运行结果是( a )。 a=1;b=2;c=2; while(a

{t=a; b=a; a=t; c--; }

printf(\

A) 1,1,0 B) 2,1,0 C) 1,2,1 D) 2,1,1

以下能正确计算1×2×3×4...×10的程序段是( c )。 A) do {i=1; s=1; s=s*i; i++; } while(i<=10) B) do {i=1; s=0; s=s*i; i++; } while(i<=10) C) i=1; s=1;

do {s=s*i; i++; } while(i<=10) D) i=1; s=0;

do {s=s*i; i++; } while(i<=10)

下面程序的运行结果是( )。 #include main()

{ int a=1,b=10;

do {b-=a; a++;} while(b--<0); printf(\}

A) a=3,b=11 B) a=2,b=8 C) a=1,b=-1 D) a=4,b=9 若i为整型变量,则以下循环执行的次数是( c )。 for(i=2;i==0;) printf(\

A) 无限次 B) 0次 C) 1次 D) 2次 下面程序段的运行结果是( c )。 for(y=1;y<10;) y=((x=3*y, x+1), x-1); printf(\

A) x=27,y=27 B) x=12,y=13 C) ) x=15,y=14 D) x=y=27 以下的for循环( b ) for(x=0,y=0;(y!=123)&&(x<4);x++); A. 执行3次 B. 执行4次 C. 循环次数不定 D. 是无限循环

45

下列程序段不是死循环的是( )。 A) int i=100;

while(1) {i=i0+1; if (i>100) break;} B) for( ; ; ); C) int k=0;

do { ++k;} while(k>=0); D) int s=36; while(s) ;--s; 下面程序段( d )。 for(t=1;t<=100;t++) {scanf(\ if (x<0) continue; printf(\ }

A) 当x<0时整个循环结束 B) x>=0时什么也不输出 C) printf函数永远也不执行

D) 最多允许输出100个非负整数 以下为死循环的程序段是( c )。 A) for(i=1; ; )

{if (++i%2==0) continue; if (++i%3==0) break; } B) i=32767;

do { if (i<0) break;} while(++i); C) for(i=1; ; ) if (++i<10) continue; D) i=1; while(i--);

若有如下程序段 int m=15; while(!m==0)

{m+=m; printf(\以下说法中正确的是( b )。 A) 循环体语句执行一次。 C) 循环体语句一次也不执行 下面程序的运行结果是( d ). #include main()

{ int i,b,k=0;

for(i=1;i<=5;i++) { b=i%2;

while(b-->=0) k++; }

printf(\

B) 循环执行无限次 D) 循环执行两次

46

}

A) 3,-1 B) 8,-1 C) 3,0 D) 8,-2 语句if(a) x=1;与 if(a==0)x=1;等价

switch语句中的default分支一定放在最后 错 while语句do-while语句无论什么情况下,二者的执行结果都一样。 错 C语言的while、do-while和for几个循环语句,可以进行相互嵌套。 对 do-while语句构成的循环只能用break语句退出。 错 for( ; ; ) {循环体} 永远是一个死循环。 错 要使for(表达式1;表达式2;表达式3){循环体}不形成死循环,表达式2一定不能为空。错 while循环和do-while循环的while()后一定要有一个分号。 C语言程序的三种基本结构是嵌套结构、递归结构、顺序结构。 C语言中while与do-while语句的主要区别是do-while的循环体至少无条件执行一次。语句 x=3; do {printf(\ while(!x); 的执行结果是3。 以下循环for (i=0; i<10;printf(\ i++;

printf(\是死循环。

以下程序的运行结果是【 1 1 】

main() {int a,b;

int i=5,j=7,k=0; a=!k; b=i!=j;

printf(\,a,b); }

以下程序的运行结果是【** 】 main()

{if(2*1==2<2*2==4) printf(\; else

printf(\; }

以下程序的运行结果是【 20 】 main()

{int a,b,c,d; a=c=0; b=1; d=20; if(a)d=d-10; else if(!b)

if(! c)d=15; else d=25;

printf(\,d); }

47

对 错

对 对 对

若运行时输入:3 5 /<回车>,则以下程序的运行结果是【0.600000】 main()

{float x,y; char o; double r;

scanf(\,&x,&y,&o); switch(o)

{case '+':r=x+y;break; case '-':r=x-y;break; case '*':r=x*y;break; case '/':r=x/y;break; }

printf(\}

当运行下面程序时,从键盘键入right?<回车>,则下面程序的运行结果是【sjhiu 】。#include main() { char c;

while((c=getchar())!='?') putchar(++c); }

下面程序段的运行结果是【** 】。 x=2;

do { printf(\

当运行以下程序时,从键盘键入1 2 3 4 5 -1 <回车>,则下面程序的运行结果是【14 -1#include main() { int k=0,n;

do { scanf(\ printf(\ n=%d\\n\ }

下面程序段的运行结果是【 -1 】。 for( a=1,i=-1;-1<=i<1;i++) { a++;

printf(\ }

printf(\

以下程序输出结果为【-3 】。 main() {

int x=-5; do

{ printf(\ while (!(x++)); }

48

。 】 设x和y均为int型变量,则执行下的循环后,y值为【 6 】。 for(y=1,x=1;y<=50;y++) { if(x>=10)break; if (x%2==1)

{ x+=5; continue;} x-=3; }

C语言(分支和循环结构)三

若 w = 1, x = 2, y=3, z=4, 则条件表达式 w>x? w : y

{ float x=2.0,y; if(x<0.0) y=0.0;

else if(x<5.0) y=1.0/x; else y=1.0;

printf(\}

该程序的输出结果是( c )

A) 0.000000 B) 0.250000 C) 0.500000 D) 1.000000

若i为int型,且有程序如下,则输出结果是( a ) i=322;

if(i%2==0) printf(\else printf(\

A) #### B) **** C) ####**** D) 有语法错误, 无输出结果

有程序如下,若由键盘输入70,则输出结果是( a ) {int n;

scanf(\ if(n<=90) printf(\

else if(n<=80) printf(\ else if(n>=60) printf(\ else printf(\}

A) A B) B C) C D) D

选择运行结果为4的表达式( 题目有错 ) A) int i=0, j=0;

49

(i=3,(j++)+i); B) int i=1, j=0; j=i=((i=3)*2); C) int i=0, j=1;

i=(j==1)?(i=1):(i=3); D) int i=1,j=1; i+=j=2;

以下程序段输出为( a ) int a=1,b=2,c=3; if(a>b)a=b, b=c; c=a;

printf(\A)a=1 b=2 c=1 B)a=1 b=2 c=3 C)a=1 b=3 c=1 D)a=2 b=3 c=2

请问读以下程序: main()

{int a=5,b=0,c=0;

if(a=b+c)printf(\ else printf(\}

以上程序( d )

A)有语法错不能通过编译 B)可以通过编译但不能连接 C)输出&&& D)###

以下程序的输出结果是(c ) main()

{ int x=2,y=-1,z=2; if(x

if(y<0) z=0; else z+=1; printf(\\n\

A)0 B)1 C)2 D)3

以下程序的运行结果是( b ) main()

{int x,y,z; x=0;y=1;z=3; x=++y<=x||x+y!=z; printf(\,%d\,y); }

A)0,1 B)1,2 C)0,2 D)1,1

50