习题

一、选择题

2.1 下列不合法的数值常量是(  )。

A)011

B)1e1

C)8.0e0.5

D)0xabcd

2.2 下列定义变量的语句中错误的是(  )。

A)int_int;

B)double int_;

C)char For

D)float US$

2.3 以下选项中正确的整型常量是(  )。

A)12.

B)-20

C)1,000

D)4 5 6

2.4 以下选项中正确的实型常量是(  )。

A)0

B)3.1415

C)0.234*102

D).456

2.5 以下选项中不正确的实型常量是(  )。

A)1.369E-2

B)0.1234e 2

C)-23.67

D)234e-2

2.6 下列选项中,合法的一组C语言数值常量是(  )。

A)028

 .5e-3

 0xf

B)12.

 0xa23

 4.5E0

C).177

 4e1.5

 0abc

D)0x8A

 10,000

 3.e5

2.7 下列选项中,合法的一组字符常量是(  )。

A)'AB'

 "a"

 'N'

B)'\\'

 '\'

 '\xaf'

C)'A'

 '\n'

 '\123'

D)'\r'

 '\018'

 '\Xag'

2.8 以下选项不合法的用户标识符是(  )。

A)abc.c 

B)file 

C)Main  

D)PRINTF

2.9 以下选项不合法的用户标识符是(  )。

A)_123

B)printf

C)A$   

D)Dim

2.10 C语言中运算对象必须是整型的运算符是(  )。

A)% 

B)/   

C)!   

D)**

2.11 可在C程序中用作用户标识符的一组标识符是(  )。

A) void  

define 

WORD

B)as_b3    

 _123

 If

C)For      

 -abc 

 case

D)2c

 DO

 SIG

2.12 若有定义:int x,*p;则正确的赋值表达式是(  )。

A)p=&x

B)p=x  

C)*p=&x 

D)*p=x

2.13 若有定义:float x;则下列对指针变量p进行定义且赋初值的正确语句是(  )。

A)float *p=1024;

B)int *p=(float)x;

C)float p=&x;

D)float *p=&x;

2.14 若有定义:int n1=0,n2,*p=&n2,*q=&n1;以下赋值语句中与n2=n1;语句等价的是(  )。

A)*p=*q;

B)p=q;

C)*p=&n1;

D)p=*q;

2.15 若有以下程序:

#include<stdio.h>

void main(  )

{ int k=2,m=4,n=6,*pk=&k,*pm=&m,*p;

  *(p=&n)=*pk*(*pm);

  printf("%d\n",n);

}

程序的输出结果是(  )。

A)4

B)6

C)8 

D)10

2.16 若指针p已正确定义并指向如图2.10所示的存储单元,则表达式*++p的值是(  )。

图2.10 指针p指向示意图

A)20

B)30

C)21

D)31

2.17 若指针p已正确定义并指向如图2.10所示的存储单元,则表达式++*p的值是(  )。

A)20

B)30

C)21  

D)31

2.18 若指针p已正确定义并指向如图2.10所示的存储单元,则表达式(*p)++的值是(  )。

A)20

B)30

C)21  

D)31

2.19 有以下程序:

#include<stdio.h>

void main()

{ char x=040;

 printf("%d\n",x=x<<1);

}

程序的输出结果是(  )。

A)100

B)160

C)120  

D)64

2.20 有如下定义语句:

char a=3,b=6,c;

则执行赋值语句c=a^b<<2;后变量c中的二进制数是(  )。

A)00011011

B)00010100

C)00011100  

D)00011000

2.21 有以下程序:

#include<stdio.h>

void main()

{ short int x=35;char z='A';

 printf("%d\n",(x&15)&&(z<'a'));

}

程序的输出结果是(  )。

A)0

B)1 

C)2   

D)3

2.22 变量a中的数据用二进制表示的形式是01011101,变量b中的数据用二进制表示的形式是11110000,若要求将a的高4位取反,低4位不变,所要执行的运算是(  )。

A)a^b

B)a|b 

C)a&b   

D)a<<4

2.23 下列选项中,当x为大于1的奇数时,值为0的表达式是(  )。

A)x%2==1

B)x/2 

C)x%2!=0

D)x%2==0

2.24 下列能正确定义且赋初值的语句是(  )。

A)int n1=n2=10;  

B)char c=32;

C)float f=f+1.1;  

D)double x=1.23E2.5;

2.25 变量x、y已正确定义并赋值,下列符合C语言语法的表达式是(  )。

A)++x,y=x--   

B)x+1=y

C)x=x+10=x+y     

D)double(x)/10

2.26 若变量已正确定义并赋值,符合C语言语法的表达式是(  )。

A)a=a+7; 

B)a=7+b+c,a++

C)int(12.3%4) 

D)a=a+7=c+6

2.27 以下叙述正确的是(  )。

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

2.28 以下叙述正确的是(  )。

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

B)C程序由主函数组成

C)C程序由若干函数组成

D)C程序只允许包含一个函数

2.29 VC6.0中int类型变量所占字节数是(  )。

A)1 

B)2   

C)3  

D)4

2.30 合法的八进制数是(  )。

A)0  

B)028 

C)-077   

D)01.0

2.31 不合法的十六进制数是(  )。

A)oxff 

B)0Xabc 

C)0x11     

D)0x19

二、填空题

2.32 若k为int型变量且赋值1,请写出运算k++后表达式的值    和变量k的值    。 

2.33 若x为double型变量,请写出运算x=3.2,++x后表达式的值    和变量x的值    。 

2.34 表达式3.6-5/2+1.2+5%2的值是    。 

2.35 设有定义:float x=123.4567;则执行下列语句后的输出结果是    。 

printf("%f\n",(int)(x*100+0.5)/100.0);

2.36 在C语言程序中,用关键字    定义基本整型变量,用关键字    定义单精度实型变量,用关键字    定义双精度实型变量,用关键字    定义字符型变量。 

2.37 把a1、a2定义成双精度实型变量,并赋初值1的定义语句是    。 

2.38 C序中定义的变量,代表内存中的一个    。 

2.39 对数学式,写出三个等价的C语言表达式            。 

2.40 表达式a=10应当读作    。 

2.41 写出下面表达式的值(设a=10,b=4,c=5,d=1,x=2.5,y=3.5)。

(1) a%=(b%=3)

(2) a+=a-=a*=a

(3) (float)(a+c)/2+(int)x/(int)y

(4) a*=b-c;

(5) ++a-c+b++

(6) a+b,18+(b=4)*3,(a/b,a%b)

(7) x+a%3*(int)(x+y)%2/4

(8) a=b==c

(9) b++==d

2.42 若有定义:char ch;

(1)使指针p可以指向字符型变量的定义语句是    。 

(2)使指针p指向变量ch的赋初值语句是    。 

(3)使指针p指向变量ch的赋值语句是    。 

(4)写出两种使变量ch的值等于字符'A'的赋值语句        。 

(5)写出两种输出变量ch的输出语句        。 

2.43 以下程序段的输出结果是    。 

int *m,a;

a=100;

m=&a;

a=*m+10;

printf("%d\n",*m);

2.44 设变量a的二进制数是00101101,若想通过运算a^b使a的低4位取反,高4位不变,则b的二进制数是    。 

2.45 a为任意整数,能将变量a清0的表达式是    。 

2.46 能将两字节变量x的高8位置1,低8位保持不变的表达式是    。 

2.47 运用位运算,能将字符型变量ch中的小写字母转换成大写字母的表达式是    。