第二章 数据类型、运算符与表达式

一.选择题

1、若numabc都是int型变量,则执行表达式num=(a=4,b=16,c=32)num的值为(  )。

A4        B16        C32 C          D52

【答案】C

2、若有变量说明:int a=0,b=0,c=0;,以下符合C语言语法的赋值表达式是(  )。

Aa=9+b+c=a+9                 Ba=9+b;c=a+9;

Ca=(9+b,b++)                 Da=9+b++=a+7

【答案】C

3、若有以下类型说明语句char a; int b;float c; double d; 则表达式a*b-2*d+c的结果类型为 

Afloat       Bchar          Cint              Ddouble

【答案】D

4、下面四个选项中,均是合法浮点数的选项是(  )。

A+1e+1  5e-9.4  03e2          B-.60  12e-4  -8e5

C123e  1.2e-.4  +2e-1          D-e3  .8e-4  5.e-0

【答案】B

5、下面四个选项中均是合法转义字符的选项是(  )。

A'\''  '\\'  '\n'                B'\'  '\017'  '\"'

C'\018'  '\f'  'xab'             D'\\0'  '\101'  'xlf'

【答案】A

6、下面正确的字符常量是 

A'\X17'      B'\80'          C'\\'              D"\n"

【答案】C

7、下面四个选项中,均是正确的数值常量或字符常量的选项是(  )。

A0.0  0f  8.9e  '&'            B"a"  3.9E-2.5  1e1  '\"'

C'3'  011  0xFF00  0a         D+001  0xabcd  2e2  50.

【答案】D

8、已知字母AASCII码为(65)10,变量ch1为字符型,则执行语句ch1='A'+'6'-'3';后,ch1中的值为(  )。

    AD          B68             C、一个不确定的值    DC

【答案】A

9、若有定义:int x=7;float a=2.5,b=4.7;则表达式a+x%3*(int)(a+b)%2/4的值是(  )。

A2.500000                     B2.7500000

C3.500000                     D0.000000

【答案】A

10sizeof(float)是(  )。

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

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

【答案】B

11、设int类型的数据长度为2个字节,则unsigned int类型数据的取值范围是(  )。

A0255                       B065535

C-32768+32767                  D-256+255

【答案】B

12、若有以下定义:int m=7,n=12;则能得到值为3的表达式是(  )。

An%=(m%=5)                   Bn%=(m-m%5)

Cn%=m-m%5                    D(n%=m)-(m%=5)

【答案】D

13、若有说明int a=1,b=2,c=3,d=4;则表达式a<b?a:c<d?c:d的值是 

A4            B3         C2             D1

【答案】D

14putchar函数可以向终端输出一个(  )。

A、整型变量值                     B、实型变量值

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

【答案】D

15、若运行以下程序时,从键盘输入25,13,10<回车>,则输出结果为(  )。

main(  )

{

  int a1,a2,a3;

  scanf("%d%d%d",&a1,&a2,&a3);

  printf("a1+a2+a3=%d\n",a1+a2+a3);

}

Aa1+a2+a3=48                    Ba1+a2+a3=25

Ba1+a2+a3=10                   D、不确定值

【答案】D

16若有定义int a=2,b=9,k;k=a+b++/a++k的值是   

A6.5           B7              C6              D8

【答案】C

17.标有/*  */语句的输出结果为(   

   int x=20;

   printf(%d,%o,%x,x,x,x);/*               */

A20,20,20         B20,24,14      C20,14,24    D20,024,14

【答案】B

18. xfloat型变量,则以列程序段结果是(   )。

x=1234.6789;

printf(%-2.1f,x);

A、输出格式描述符的域宽度不够,不能输出      B、输出为1234.7

C、输出为1234.6                              D、输出为-1234.6

【答案】B

19. 下列语句中,符合语法的语句式(   )。

    Aa+b=3      Ba=7      Ca=c+b+3=6;      Da=8,b=a+7;

【答案】D

20. C语言中,逻辑“真”等价于(   )。

   A、大于零的数      B、大于零的整数      C、非零的数      D、非零的整数

【答案】C

21. 已知字母aASC||的十进制代码为97,则执行下列语句后输出为(   )。

   Char a=a;

   a--;

   printf(%d,%c\n,a+2-0,a+3-0);

   Aa,c                      Ba—运算不合法,故有语法错误    

C98c                   D、)格式描述和输出项不匹配,输出无定值

【答案】C

22. 对于条件表达式(M?(a++):(a--),其中的表达式M等价于(   )。

   AM= =0       BM= =1      CM!=0      DM!=1

【答案】C

23. x值处于-2248时值为“真”,否则为“假”的表达式是(   )。

     A(2>x>-2)||(4>x>8)                 B((x<=-2)||(x>=2)||((x>4)||(x>=8))

C(x<2)&&(x>=-2)&&(x>4)&&(x<8)      D(x>-2)&&(x>4)||(x<8)&&(x<2)

【答案】D

24. 定义a为整型,下列表达式a=3>6的运行后,a的值为(   )。

     A0      B1      C3      D、表达式错误

【答案】A

25. 若使用下述程序段将整数12和浮点数13.6分别赋给变量ab,那么输入应该式(   )。

int a;

float b;

scanf(a=%d,b=%f,&a,&b);

A12  13.6      Ba=12,  b=13.6      C12,  13.6       Da=12   b=13.6

【答案】B

26. 以下程序段(   )。

int x=1,y=4;

  printf(x<y?x=%d:y=%d,x,y);

A、输出控制格式错误      B、输出:x=1      C、输出:y=1      D、输出:y=4

【答案】C

27. 下面程序的输出是(   )。

main()

  {

    int x=10,y=3;

    printf(%d\n,y=x%y);

   }

A0      B1      C3      D、不确定的值

【答案】B

二.填空题

1.若有定义int m=5,y=2;,则执行表达式y+=y-=m*=yy的值是____    __

【答案】-16.

2. 能表达“10<x<200x<0的C语言表达式是         

【答案】x>10&&x>200||x<0

3. 表达整型变量a能被3整除但不被5整除的表达式是____    __

【答案】a%3==0&&a%5!=0

4C语言中唯一的三元运算符是       

【答案】?

5设有:int a=1,b=2,c=3,则!(a>b&&!c||1的值为       

【答案】1

6 Sizeof (float)      

【答案】一个整型表达式

7. m=2,n=1,a=1,b=2,c=3时,执行完d = (m=a!=b) && (n=b>c)后;n的值为             m的值为           

【答案】0  1

8. IJKint型变量,且I=3J=4K=5,则表达式!((I<J)&&!K||1)的值是           

【答案】0

9. 判断char型变量c1是否为小写字母的正确表达式为     

【答案】(c1>= a) && (c1<= z)

10. a=5,b=2,c=1,则表达式a-b<c || b = = c的值是           

【答案】0

11.若aint型变量,且a的初值是6,则计算表达式a+=a-=a*aa的值__   ____   

【答案】-60

12. 假设x=5,y=6,则表达式x++*++y的值为______

【答案】35

13x2/(3x+5)C表达式为              

【答案】x*x/(3*x+5)

14.若有说明:int m=5,y=2;则执行表达式y+=y-+m*=y后的y值是     

 【答案】y=-16

15.在C语言中,表示逻辑“真”值用          

【答案】非0数字

16.若w=1,x=2,y=3,z=4,则条件表达式w<x?w:y<z?y:z的值是     

【答案】1

17.若aint型变量,则计算表达式a = 25/3%3a的值为     

【答案】 2

18C语言提供的三种逻辑运算符是                          

【答案】 &&  ||  !

19.设chchar类型变量,其值是A,则表达式ch=(ch>='A'&&ch<='Z')?(ch+32):ch的值是          

【答案】 a

20.若有定义:int a=8,b=5,c;,执行语句c=a/b+0.4;后,c的值为        

【答案】 2

21.a=3,b=4,表达式a>b?b:a的值是        

【答案】 3

22.表达式 (int)3.6*3的值为         

【答案】9

23.标有/*  */语句的输出结果为        

   int x=20;

   printf(%d,%o,%x,x,x,x);/*               */

【答案】20,24,14

24. 如果xijk都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为______

【答案】32

三.判断题:(正确:T;错误:F

1.当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值

【答案】F

2.在C程序中,逗号运算符的优先级最低

【答案】T

3. C程序中,APAapa是两个不同的变量

【答案】T

4.如果ab类型相同,在计算了赋值表达式a=bb中的值将放入a中,而b中的值保持不变。

【答案】T

5. C程序中,%是只能用于整数运算的运算符。

【答案】T

6. 代数式2lnxcosx/3x,正确的c语言表达式是2*log(x)*cos(x)/(3*x)

【答案】T

7sizeof(float)是一个整型表达式

【答案】T

8. 变量说明:int a=0,b=0,c=0;则表达式a=9+b++=a+7是符合c语言语法的赋值表达式。

【答案】F

四.简答-完善程序-分析程序

1、 c语言中不同数据类型的数据在运算是采用的规则是什么?

【答案】

c语言中,各类数值型数据在进行混合运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换的规则为:总是转换为精度更大的数据类型,字符数据转换为整数,short型转为int型,float型数据在运算时转换成双精度型,以提高运算精度。

2、字符(char)型数据在微机内存中以什么形式存储?

【答案】

将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中去,而是将该字符的ASCII码值放到存储单元中。

3、数据处理的最小单位是什么?

【答案】

数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。

4、若变量aint类型,分析在执行了语句:a='A'+1.056;后a的值多少?

【答案】

   在赋值表达式中,赋值符右边的值的类型会自动转换成赋值符左边的变量的类型。在本题中,先用"A"ASCII(65)值加上1.056得到66.056,将其强制转换成int型,实数的小数部分全部清除保留证书部分。所以a的值为66

5、 c语言的基本类型数据有哪几种?

【答案】

[signed]charunsigned char[signed]short[int]unsigned short[int][signed]long[int]unsigned long[int]floatdouble

6、分析下面程序的执行过程,给出输出结果。

main()

 {  int a=5b=4c=6d

printf("dn"d=a>c?(a>c?ac)(b))

  }
【答案】

本题最重要的语句在于d=a>c?(a>c?ac)(b)),首先运算括号内的式子a>c?ac,它的值是c的值6,即式子化成d=a>c?64。显然a=c,所以将4赋给d

7、分析下面程序的执行过程,给出输出结果。

main()

{  int a=4b=8c

c=("b==a)&&(a+b!=20)

printf("d,%d,%dn"abc)

}

【答案】

如果在表达中出现多种运算符时,一定要按照他们的优先级别进行运算,否则其结果可能会产生错误。本题中,由于赋值表达中式c=(ab==a)&&(a+b!=20)中有两个括号,而且两个括号是进行逻辑与运算。当第1个括号内的值为假时,不管后面括号内的值是否为假,两个括号内的值进行逻辑与(&&)运算时,其结果肯定为假。所以结果为:480