第二章数据类型,运算符与表达式
一.选择题
1.不合法的字符常量是( B)。
A)‘ \t ’B) “ A” C )‘ a’ D)’ \x32 ’
2、合法的字符常量是( D)。
A)‘ \084 ’B)‘ \84 ’ C )‘ab’ D)’ \x43 ’
2.( B)是 C 语言提供的合法的数据类型关键字。
A) Float B) signed C) integer D)Char
3.在以下各组标识符中,合法的标识符是( 4)。
(1) A) B01 B )table_1C) 0_t D) k%
(2) A) Fast_ B) void C)pbl D) <book>
(3) A) xy_ B ) longdouble C)*p D) CHAR
(4) A) sj B)Int C)_xy D)w_y23
4.属于合法的 C 语言长整型常量的是( B)。
A) 5876273B) 0L C) 2E10D) (long)5876273
5.下面选项中,不是合法整型常量的是( B)。
A) 160B)- 0xcdg C)- 01D)- 0x48a
6.判断 int x = 0xaffbc;x 的结果是( B)(turbo c版本)。
A)赋值非法 B )溢出C)为 affb D)为 ffbc
7.下面选项中,均是合法浮点数的是( B)。
A)+ 1e+ 1 B)- .60 C) 123e D )- e3
A)5e -B)12e-4C)- .4 D).8e- 4
A)03e2B)-8e5C)+ 2e-1D) -0
8.在 C 语言中,要求参加运算的数必须是整数的运算符是( C)。
A) / B) * C ) % D) =
9.在 C 语言中,字符型数据在内存中以( D)形式存放。
A)原码 B ) BCD码C)反码D) ASCII 码
10.下列语句中,符合语法的赋值语句是( 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;
11.( B)是非法的 C 语言转义字符。
A)‘ b’B)‘ 0xf ’ C )‘037’ D )‘’’
12.对于语句: f=,,,,,;的判断中( B),是正确的。
A)语法错误B)f 为 5.0C)f为 D) f 为
13.与代数式 (x*y)/(u*v)不等价的 C语言表达式是( A)。
A) x*y/u*v B) x*y/u/v C) x*y/(u*v) D) x/(u*v)*y
14.在 C 语言中,数字029 是一个( D)。
A)八进制数 B )十六进制数 C )十进制数 D )非法数
15. C语言中( Turbo C 环境)整数-8 在内存中的存储形式为( A)。
A) 000B) 00
C) 000000000001000D)111
16.对于 char cx= ’039’; 语句,正确的是(A) 。
A)不合法 B ) cx 的 ASCII 值是 33
C) cx 的值为四个字符D)cx 的值为三个字符
17.若 int k=7,x=12;则能使值为 3 的表达式是 (D) 。
A) =(x%=(k%=5)B) x%=(k- k%5)
C) x%=k- k%5 D) (x%=k) - (k%=5)
18.为了计算 s=10! (即 10 的阶乘 (24320)),则 s 变量应定义为 (D) 。
A) int B) unsigned C ) long D)以上三种类型均可
19.以下所列的 C 语言常量中,错误的是(B)。
A) 0xFF B) 0.5C)2L D )’ 72’
20.假定 x 和 y 为 double 型,则表达式x=2, y=x+3/2 的值是 (D)。
A) B )3C)D)
21.以下合法的赋值语句是(A)。
A) x=y=100B)d――C) x+y D) c=int(a+b)
22.以下选项中不属于 C 语言的类型是 (D)。
A) signed short int B)unsigned long int
B) unsigned int D)long short
23.设以下变量均为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)
24.在 16 位 C 编译系统上,若定义 long a;,则能给 a 赋 40000的正确语句是 (D) 。
A) a=20000+20000 ; B) a=4000*10 ;
C) 30000+10000;D) a=4000L*10L ;
二.填空题
1.在 C 语言中(以 16 位 PC机为例),一个 char 数据在内存中所占字节数为1,其数值范围为 -128~127;一个 int 数据在内存中所占字节数为2,其数值范围为
-32768~32767 ;一个 long 数据在内存中所占字节数为4,其数值范围为-48~47;一个 float数据在内存中所占字节数为4,其数值范围为 ~。
语言的标识符只能由大小写字母,数字和下划线三种字符组成,而且第一个字符必须为字母或下画线。
3.字符常量使用一对引号界定单个字符,而字符串常量使用一对双引号来界定若干个字符的序列。
4.设 x,i,j,k都是 int型变量,表达式x=(i=4,j=16,k=32)计算后, x 的值为 32 。
5.设 x=,a=7,y=,则 x+a%3*(int)(x+y)%2/4为。
6.设 a=2,b=3,x=,y=,则 (float)(a+b)/2+(int)x%(int)y为。
7.已知: char a= ’a’,b= ’b’,c= ’c’,i;则表达式i=a+b+c的值为38。
8.已知 int a=12,n=5;则:表达式运算后 a 的值各为 0。
a+=a
a-=2
a*=2+3
a/=a+a
n%=(n%=2)
a+=a-=a*=a
9. 设 int a; float f; double i ;则表达式10+’a’+i*f
10. 若 a 为 int型变量,则表达式(a=4*5,a*2) , a+6的值为
11. 假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)
值的数据类型是
26。
的值为9。
double。
12.已知 a,b,c 是一个十进制数的百位,十位,个位,则该数的表达式是a*100+b*10+c 。
13.定义: double x=,y=;则表达式 (int)x*的值是,表达式 y+=x++的值是。
14.定义: int m=5, n=3;则表达式 m/=n+4的值是 0,表达式m=(m=1,n=2,n-m) 的值是1,表达式 m+=m-=(m=1)*(n=2) 的值是 -2。
15.表达式 5%(-3) 的值是2,表达式-5%(-3)的值是 -2 。
16.若 a 是 int 变量,则执行表达式 a=25/3%3 后, a 的值是 2。
三.判断题
1. 在 C 程序中对用到的所有数据都必须指定其数据类型。
【√】
2. 一个变量在内存中占据一定的存储单元。
【√】
3.一个实型变量的值肯定是精确的。
【×】
4. 对几个变量在定义时赋初值可以写成:int a=b=c=3;【×】
5.自增运算符 (++) 或自减运算符 (--) 只能用于变量,不能用于常量或表达式。
【√】
6. 在 C 程序的表达式中,为了明确表达式的运算次序,常使用括号“()”。
7.%运算符要求运算数必须是整数。
【√】
8. 若 a 是实型变量, C程序中允许赋值a=10, 因此实型变量中允许存放整型数。
语言不允许混合类型数据间进行运算。
【×】【√】【×】
四.简答题
1.为什么 C语言的字符型可以进行数值运算?
2.简述‘ a’和“ a”的区别。
3. 程序: int m=12; m=15;为什么整型变量m的值在运算后不是当初的12,而是 15?
五.程序阅读题
1.写出以下程序运行的结果。
main ( )
{
char c1= ’a’,c2= ’b’,c3= ’c’,c4= ’101’,c5= ’116’;
printf(“a%c b%c n”,c1,c2,c3);
printf(“b%c %c”,c4,c5);
}
2.写出以下程序运行的结果。
main ( )
{
int i,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf( “%d,%d,%d,%d”,i,j,m,n);
}
输出结果: 9, 11, 9, 10
六.编程题
1.假设 m是一个三位数,则写出将m的个位,十位,百位反序而成的三位数(例如:123 反序为 321)的 C 语言表达式。
2.已知 int x=10,y=12;写出将 x 和 y 的值互相交换的表达式。