数据类型、运算符与表达式练习题

更新时间:2023-09-17 12:35:01 阅读量: 幼儿教育 文档下载

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

第三章 运算符与表达式练习题

一、单项选择题

1.下列数据中属于“字符串常量”的是( )。

A.”a” B. {ABC} C. ?abc\\0? D. ?a? 2.下列数据中属于“字符串常量”的是( )。

A.ABC B. “ABC” C. ?abc? D. ?a? 3. 在PC机中,?\\n?在内存占用的字节数是( )。 A. 1 B. 2 C. 3 D. 4 4. 在PC机中,”a\\xff” 在内存占用的字节数是( )。 A. 5 B. 6 C. 3 D. 4 5.字符串”\\”ABCD\\””在内存占用的字节数是( )。 A. 4 B. 6 C. 7 D. 8 6. 在C语言中,合法的长整型常数是( )。 A. 0L B. 49627 C. 0.054838743 D. 2.1869e10 7.在C语言中,合法的短整型常数是( )。 A. OL B. 0821 C. 40000 D. 0x2a 8.下列数据中不属于“字符常量”的是( )。 A. ?\\a? B. ?\\160? C. ?070? D. 070 9.char型常量在内存中存放的是( )。 A. ASCII代码值 B. BCD代码值 C. 内码值 D. 十进制代码值 10. int a=4,b=3,c=-2,d=2; 逻辑表达式a>0&&b&&c<0&&d>0的值是( )。 A. 1 B. 0 C. -1 D. 出错 11.在以下一组运算符中,优先级最高的运算符是( )。 A. <= B. = C. % D. &&

12.设整型变量i的值为3,则计算表达式i---i后表达式的值为( )。 A. 0 B. 1 C. 2 D. 表达式出错 13.设整型变量i,j=3; 则计算表达式i=j+++j后i,j的值为( )。 A. 4,4 B. 6,6 C. 4,6 D. 6,4

14.设整型变量a,b,c均为2,表达式a+++b++c++的结果是( )。 A. 6 B. 9 C. 8 D. 表达式出错

15.设整型变量i,j值均为3,执行了“j=i++,j++,++i”后,i,j的值是( )。 A. 3,3 B. 5,4 C. 4,5 D. 6,6 16.sizeof(double)的结果值是( )。 A.8 B. 4 C. 2 D. 出错 17. 表达式“1?(0?3:2):(10?1:0)” 的值是( )。 A. 3 B. 2 C. 1 D. 0 18.int a=0; if(a=1) a+=10; 结果的值是( )。

A. 0 B. 11 C. 10 D. 出错 19.下列表达式中符合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 20.下列表达式中,不正确的表达式是( )。 A. a=1,b=1 B. y=int(x) C. a=b=5 D. i++

1

21.int n; float f=13.8; 执行“n=((int)f)%3”后,n的值是( )。 A. 1 B. 4 C. 4.333333 D. 4.6

22.用十进制数表示表达式“12|012”的运算结果是( )。 A. 1 B. 0 C. 14 D. 12

23.设有整型变量a=35,表达式“(x&15)&&(x|15)” 的值是( )。 A. 0 B. 1 C. 15 D. 35

24.设a,b和c都是int型变量,且a=3,b=4,c=5,则下面的表达式中值为0的是( )。 A. ?a?&&?b? B. a<=b C. a||b+c&&b-c D. !((a

A. 32L B. 510000 C. -1.00 D. 0568 28.以下选项中, 是不正确的 C 语言字符型常量。

A. 'a' B. '\\x41' C. '\\101' D. \ 29. 字符串的结束标志是 。

A. 0 B. '0' C. '\\0' D. \ 30. 逻辑运算符中,运算优先级按从高到低依次为 。

A. &&,!,|| B. ||,&&,! C. &&,||,! D. !,&&,|| 31.表达式!x||a==b 等效于 。

A. !((x||a)==b) B. !(x||y)==b C. !(x||(a==b)) D. (!x)||(a==b) 32. int b=0,x=1;执行语句 if(x++) b=x+1; 后,x,b 的值依次为 。

A. 2,3 B. 2,0 C. 3,0 D. 3,2 33.设ch是 char型变量,其值为 'A',则下面表达式的值是 ch=(ch>='A'&& ch<='Z')? (ch+32):ch A. A B. a C. Z D. Z 34.字符串\在内存占用的字节数是

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

35.要为字符型变量 a赋初值,下列语句中哪一个是正确的

A. char a=3; B. char a=”3”; C. char a=%; D. char a=*; 36.下列不正确的转义字符是

A. \\\\ B. \\' C. 074 D. \\0

37.下面四个选项中均是合法整型常量的选项是( )

A.160 -0xffff 011 B.-0xcdf 01a 0xe C.-01 986,012 0668 D.-0x48a 2e5 0x 38.下面四个选项中均是不合法整型常量的选项是( )

A.-0f1 -0xffff 0011 B.-0xcdf 017 12,456 C.-018 999 5e2 D.-0x48eg -068 03f 39.下面四个选项中,均是不合法的浮点数的选项是( ) A.160 0.12 e3 B.123 2e4.2 e5 C.-18 123e4 0.0 D.-e3 234 1e3 40.下面四个选项中,均是合法的浮点数的选项是( ) A.+1e+1 5e-9.4 03e2 B.-60. 12e-4 -8e5

2

C.123e 1.2e-4 -8e5 D.-e3 8e-4 5.e-0 41.下面四个选项中,均是合法转义字符的选项是( ) A.'\\\ ?\\\\' ?\\n' B.?\\' ?\\017' ?\\\C.'\\018' ?\\f' ?xab' D.'\\\\0' ?\\101' ?x1f'

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

A.?c\ B.'\\\\\ C.'w' D.\

44.下面四个选项中,均是正确的数值常量或字符常量的选项的是( ) A.0.0 0f 8.9e ?&' B.\ 3.9E-2.5 1e1 ?\\\C.'3' 011 0xFF00 0a D.+001 0xabcd 2e2 50 45.下面不正确的字符串常量是( )

A.'abc' B.\ C.\ D.\ \

46.已知各变量的类型说明如下:int k,a,b; unsigned long w=5; double x=1.42;则以下不符合C语言语法的表达式是( )

A.x%(-3) B.w+=-2 C.k=(a=2,b=3,a+b) D.a+=a-=(b=4)*(a=3)

47.已知各变量的类型说明如下:int i=8,k,a,b; unsigned long w=5;double x=1.42,y=5.2;则以下符合C语言合法的表达式是( )

A.a+=a-=(b=4)*(a=3) B.a=a*3=2 C.x%(-3) D.y=float(i) 48.以下不正确的叙述是( )

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

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

C.若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中 的值不变

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

49.以下正确的叙述是( )

A.在C程序中,每行中只能写一条语句

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

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 51.表达式18/4*sqrt(4.0)/8值的数据类型为( )

A.float B char C.double D.不确定

52.若有以下定义,则能使值为3的表达式为3的表达式是( ) int k=7,x=12; A.x%=(k%=5) B.x%=(k-k%5) C.x%=k-k%5 D.(x%=k)-(k%=5) 53.设以下变量均为int类型,则值不等于7的表达式是( ) 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)

54.C语言并不是非常严格的缩放语言,在以下关于C语言的不严格的叙述中,错误的说法是( )。

A)任何不同数据类型都不可以通用

3

B)有些不同类型的变量可以在一个表达式中运算

C)在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型 D)同一个运算符号在不同的场合可以有不同的含义

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

56.下列常数中不能作为C语言的数据类型是( )。 A)0xa5 B)2.5e-2 C)3e2 D)0582

57.设int类型的数据长度为2字节,则unsigned int类型数据的取值范围是( )。 A)0至255 B)0至65535 C)-256至255 D)-32768至32767 58.在C语言中,数字029是一个( )。

A)八进制数 B)十六进制数 C)十进制 D)非法数 59.下列可以正确表示字符型常数的是( )。 A)”a” B)'\\t’ C)”\\n” D)297 60.以下错误的转义字符是( )。

A)'\\\\’ B)'\\'’ C)'\\81’ D)'\\0’ 61.C语言中整数-8在内存中的存储形式是( )。 A)1111 1111 1111 1000 B)1000 0000 0000 0000 C)0000 0000 0000 1000 D)1111 1111 1111 0111 62.已知 int i; float f; 正确的语句是( )。

A)(int f)%i B)int(f)%i C)int(f%i) D)(int)f%i

63.已知:char a; int b;float c; double d; 执行语句c=a+b+c+d; 后,变量c的数据类型是( )。

A)int B)char C)float D)double

64.已知:int i,a;执行语句“i=(a=2*3,a*5),a+6;后,变量i的值是( )。 A)6 B)12 C)30 D)36

65.已知:int i=5;执行语句i+= ++i;i的值是( )。

A)10 B)11 C)12 D)A,B,C答案都不对 66.字符串”\\\\ \\22a,0\\n”的长度是( )。 A)8 B)7 C)6 D)5

67.已知:char c='A';int i=1,j;执行语句j=!c&&i++;则i和j的值是( )。 A)1,1 B)1,0 C)2,1 D)2,0

68.已知:int x=1,y=2,z;则执行z=x>y?++x:++y;则z的值为( )。 A)1 B)2 C)3 D)4

69.为了求出s=10!的值,则变量s的类型应当为( )。(10!=3628800) A)int B)unsigned C)long D)以上三种类型均可以 70.已知:int x=1,y;则 y=++x* ++x的结果为( )。 A)y=9 B)y=6 C)y=1 D)表达式是错误的 71.已知“int a=4,b=5,c;”,则执行表达式“c=a=a>b”后变量a的值为( )。 A)0 B)1 C)4 D)5

72.选出使变量i的运行结果为4的表达式( )。 A) int i=0,j=0; B) int i=1,j=0; (i=3,(j++)+i) j=i=((i=3)*2); C) int i=0,j=1; D) int i=1,j=1;

4

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

73.已知:int x;则使用逗号运算的表达式“(x=4*5,x*5),x+25”的结果为( ),变量x的值为()。

(1)A)20 B)100 C)表达式不合法 D)45 (2)A)20 B)100 C)125 D)45 74.执行下面的语句后x的值为( )。 int a=14,b=15,x; char c='A';

x=((a&b)&&(c<'a'));

A)TRUE B)FLASE C)0 D)1

75.若定义了int x;则将x强制转化为双精度类型应该写成( )。 A)(double)x B)x(double) C)double(x) D)(x)double

76.要判断char型变量m是否是数字字符,可以使用下列表达式(A)0<=m&&m<=9 B)'0'<=m&&m<='9'

C)“0”<=m&&m<=“9” D)前3个答案都是错误的 77.以下可用作用户标识符的是:( )

A) 12_a B) signed C) t-o D) _if 78.以下不是关键字的标识符是:( )

A) continue B) char C) If D) default 79.C语言提供的合法的关键字是:( )

A) swicth B) cher C) Case D) void 80. 以下选项中不合法的int整型常数是( )

A) 32768 B) -56 C) 03 D) 0xAF 81. 以下不合法的长整型常量是( )

A) 2L B) 49627 C) 34566666 D) 213 82.以下正确的实型常量是( )

A) 1.2E B) .579899 C) 1.2e0.6 D) 8 83.以下选项中合法的实型常数是( )

A) 5E2.0 B) E-3 C) .2E0 D) 1.3E 84.以下合法的八进制数是( )

A) 0135 B) 068 C) 013.54 D) o7 85. 以下合法的十六进制数是( )

A) 0x B) 0x4de C) 0x1h D) ox77 86.以下选项中非法的数值常量是( )

A) 019 B) 0L C) 0xff D) 1e1

87.若变量已正确定义,以下合法的赋值表达式是( ) A) a=1/b=2 B) ++(a+b) C) a=a/(b=5) D) y=int(a)+b 88.若变量已正确定义,以下非法的表达式是( ) A) a/=b+c B) a%(4.0) C) a=1/2*(x=y=20,x*3) D) a=b=c

89.设x为int类型,其值为11,则表达式(x++*1/3)的值是: A) 3 B) 4 C) 11 D) 12 90. 设a,b均为double型,且a=5.5;b=2.5;则表达式

)。 5

(int)a+b/b的值是( )

A) 6.500000 B) 6 C) 5.500000 D) 6.000000

191.若a,b,c均被定义成整型并已赋大于1的值,能正确表示代数式a?b?c的C语言表达式

是( )

A) 1/(float)a*b*c B) 1/(a*b*c) C) 1.0/a/b/c D) 1/a/b/(float)c

x92. 以下变量x,y,z均为double型且已正确赋值,不能正确表示代数式y?z的C语言表

达式是( )

A) x/y*z B) x*(1/(y*z)) C) x/y*1/z D) x/y/z 93. 若题中变量已正确定义并赋值,下面符合C语法的表达式是( )

A) a%=7.6 B) a++,a=7+b+c C) int(12.3)%4 D) a=c+d=a+7 94. 若t已定义为double型,则表达式:t=1,t++,t+5的值为( ) A) 7 B) 7.0 C) 2.0 D) 1.0

95.下面四个选项中,均是不合法的用户标识符的选项的是:( )

A. A p_o do B. float lao _A C. b-a goto int D._123 temp INT

二、填空题

1.符号常量的定义方法是 。

2、双精度实数的表示范围是___________,其有效位数是________。 3、关系表达式的运算结果是________。

4、逻辑运算符!是________运算符,其结合性是由______。 5、表达式的运算对象可以是常量、变量和________。

6、已知char c;表达式(c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122)&&c<=98的值为1,则变量c的值是_____________。

7、已知:a=15,b=240;则表达式(a&b)&b||b的结果为______。 8、负数在计算机中是以______形式表示。

9、在内存中存储“A”要占用 个字节,存储‘A’要占用 个字节。 10、设a,b,c为整型数,且a的值为2,b的值为3, c的值为4,表达式:a*=16+(b++)-(++c)

的值为______。

11、已有定义:int x=0,y=0;,则计算表达式:(x+=2,y=x+3/2,y+5)后,表达式的值是___,变

量x的值是___,变量y的值是____

12、定义变量的完整语句格式是 。

13、设下列运算符:<<、+、++、&&、<=,其中优先级最高的是 ,优先级最低

的是 。

14、已有定义:int x=110,y=017;,则计算表达式:(x++,++y)后,按十进制表示,变量x的

值是_____,变量y的值是_____。

15、C语言中运算结果可以当成逻辑值使用的表达式有: 表达式、 表达式、

表达式、 表达式、 表达式和 表达式。

16、若已有定义语句:int k=3,j=4;,运行表达式(k+=j,j/=4.0,++j,j+2)后,表达式的值是_____,

变量k的值是_____,变量j的值是_____。

17、若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x))

6

的值为 。

18、若有定义:int e=1,f=4,g=2;float m=10.5,n=4.0,k;则计算赋值表达式 k=(e+f)/g+sqrt((double)n)*1.2/g+m后k的值是 。

19、表达式8/4*(int)2.5/(int)(1.25*(3.7+2.3))值的数据类型为 。 20、表达式pow(2.8,sqrt(double)(x)))值的数据类型为 。

21、假设m是一个三位数,从左到右用a、b、c表示各位的数字,则从左到右各个数字是bac

的三位数的表达式是 。

22、已有定义:float f=13.8;,则表达式:(int)f%3的值是______. 23、已有定义:int x=3;, 则表达式:x=x+1.78的值是______. 24、已有定义:double x=3.5; 则表达式:x=(int)x+1的值是___.

25、已有定义:int x=10,y=3,z;, 则表达式:z=(x%y,x/y) 的值是_____.

三、操作题

1.写出以下程序运行的结果: main()

{ char c1='a',c2='b',c3='c',c4='\\101',c5='\\116'; printf(\printf(\}

2. 分析以下程序能否正常运行。 main()

{ int c1,c2; c1=97; c2=98; printf(\printf(\}

3. 写出以下四个程序运行的结果: main() {

int i=6;

printf(\}

main() {

int i=6,j;

j=(i++)+(i++)+(i++); printf(\}

main() {

int i=6,j;

j=(++i)+(++i)+(++i); printf(\}

7

4. 写出以下程序运行的结果: (1)main() { float f; int i=4; f=10/i;

printf(\}

(2)main() { float f; int i=4; f=10.0/i;

printf(\

5. 分析下面程序执行后的结果 。 main() { int a=3,b=7;

printf(“%d\\n”,a++ + ++b); printf(“%d\\n”,b%a); printf(“%d\\n”,!a>b); printf(“%d\\n”,a+b); printf(“%d\\n”,a&&b); }

四、简答题

(1)用户标识符在命名时,应注意哪几个方面?

(2)C语言中,怎样区分求负与减法运算?怎样区分取地址运算和按位与运算?

五、求下面算术表达式的值

(1)设x=2.5, a=7, y=4.7,x+a%3*(int)(x+y)%2/4

设a=2, b=3, x=3.5, y=2.5, (float)(a+b)/2+(int)x%(int)y

(2)设 int i=1,j=2,k=3;,请写出以下表达式的值及计算后变量 i、j、k 的值。

① ( ++i ) * ( ++j ) * ( ++ k) ②( i++ ) * ( ++j ) * (k++) ③i=i+j,j=j+k,k=k+i ④! ( i = j ) && ( j = k )

六、 编程题:

1. 要将“China”翻译成密码。密码规律是:用原来字母的后面第4个字母代替原来的字母。 请编写一程序实现。并输出结果。(Glmre)

2. 设长方形的高为 1.5,宽为 2.3,编程求该长方形的周长和面积。 参考答案: 一、选择题

1-5 ABACC 6-10 (AB)DCAA 11-15 CADAB 16-20 ABBCB 21-25 ACBDC 26-30 DDDCD 31-35 DABBA 36-40 CADDB 41-45 AACDA 46-50 AAADD

51-55 CDCAC 56-60 DBDBC 61-65 ADCCC 66-70 BBCCA 71-75 AD(DA)DA 76-80BDCDA 81-85 DBCAB 86-90 ACBAD 91-95 CABBC

8

二、填空题

1、 #define 标识符 字符串 2、 10-308~10+308 3、 0或1 4、 逻辑非、从右向左

5、 函数 6、 数字字符或大写字母或小写字母a和b 7、 1 8、 补码 9、 2、1 10、 4、7、2 11、 unsigned int、double、char 12、 数据类型 变量名[=表达式1][,变量名2[=表达式2],……]; 13、 ++、&& 14、 111、16 15、 算术、关系、逻辑、赋值、逗号

16、 4、7、2 17、 8.000000 18、 13.700000 19、 int 20、 double 21、 m+m/100*10+m0/10)*100

22、 1 23、 4 24、 4.000000 25、 3 26、 28 27、 2、3 三、操作题

1、 aa bb cc ab 2、 a b 3、 9,21,6 9,18 9,27 A N 97 98 4、(1)2.000000 (2)2.500000 5、 11

0 0 12 1 四、(2)区别是:求负:单目,右结合;减法:双目,左结合;

取地址:单目,右结合;按位与:双目,左结合;

五、(1)2.5、 3.5

(2)①24,i=2,j=3,k=4 ②9,i=2,j=3,k=4 ③6,i=3,j=5,k=6④ 0,i=2,j=3,k=3 六、编程题

1、#include void main()

{char c1=?c?,c2=?h?,c3=?i?,c4=?n?,c5=?a?;

c1=c1+4;c2=c2+4; c3=c3+4; c4=c4+4; c5=c5+4; printf(“%c%c%c%c%c\\n”,c1,c2,c3,c4,c5); }

2、#include void main()

{float x=1.5,y=2.3;

printf(“周长是: %6.2f,面积是: %6.2f\\n”,2*(x+y),x*y); }

9

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

Top