资源描述
二、语法基础
14. C语言的下列运算符中,优先级最高的运算符是( A )。
A. ++ B. += C. || D. !=
课本P42
优先级别从低到高为: +=、||、!=、++
15. ( D )为正确的用户标识符。
A. Struct B. 5f C. _f0.6 D. _for
合法用户标识符是有字母、数字、下划线构成,且不能以数字开头。
另外C语言关键字(课本P301)不能作为用户标识符。
A Struct 为关键字 B 5f 数字开头 C _f0.6含有非法字符.
所以答案选D
16. C语言基本数据类型包括( B )。
A. 整型、实型、逻辑型 B. 整型、实型、字符型
C. 整型、字符型、逻辑型 D. 整型、实型、字符串型
课本P21
实型 即 浮点型
17. ( A )为合法的常量。
A. 52686L B. E-7 C. 1.2E-2.1 D. 'E12'
课本P22 3.2常量
A正确,52686L为长整型常量
以指数形式aEn表示实数时,a和n都不能省略,且n必须是整数。所以B和C都错
D 一个字符加单引号是字符常量,1个字或多个字符加双引号是字符串常量,所以D错
18. ( C )为正确的变量名。
A. -k15 B. Int C. k_5 D. k.jeep
见15题解释
19. ( D )为正确的字符常量。
A. ''\\'' B. "\24m" C. "c" D. 'M'
见17题解释
A,C表示错误,应该加单引号表示字符常量。B是字符串常量。
20. ( C )为非法的字符串常量。
A. " " B. "s" C. 'efg' D. "26'62"
1个字或多个字符加双引号是字符串常量,空格字符也是一个字符
21. C语言整型数据在内存中的代码是用( C )表示的。
A. 原码 B. 反码 C. 补码 D. BCD码
22. 以下选项中,合法的实型常数是( B )。
A. E-3 B. .2E1 C. 1E.5 D. 1.5E
以指数形式aEn表示实数时,a和n都不能省略,且n必须是整数
23. 下列C语言合法的数据类型关键字是( B )。
A. Double B. Unsigned C. Integer D. Char
这题答案错误,C语言大小写是有区别的,A,B,C,D都错,
double、unsigned、char 才是合法的数据类型关键字
24. Turbo C中,int型数据占用的字节数( B )。
A. 由用户自己定义
B. 为2个字节
C. 是任意的
D. 等于所用计算机的字长
见课本P28 表3-2
25. Turbo C中,基本数据类型存储空间长度的排列顺序是( A )。
A. char<int<long int<float<double
B. char=int<long int<float<double
C. char<int<long int=float=double
D. char=int=long int<float<double
见课本P28 表3-2
不同的编译系统规定基本数据类型存储空间长度是不同的,Turbo C规定:
char=1个字节
int=2个字节
long=4个字节
float=4个字节
double=8个字节
A. char<int<long int<float<double 应该改为 char<int<long int=float<double 才正确
26. 以下叙述中正确的是( A )。
A. 字符常量用一对单撇号' '作为单个字符的定界符
B. 字符常量和字符串常量一样,都是用双引号括起来
C. 字符常量存储时,自动在字符后加一个字符结束符号'\0'
D. 字符常量和字符串常量所分配的内存空间大小是一样的
B 错,一个字符加单引号是字符常量,1个字或多个字符加双引号是字符串常量。
C 错,应该是字符串常量存储时,自动在字符后加一个字符结束符号'\0'
D错,字符常量和字符串常量所分配的内存空间大小不是一样的
27. 已知'A'的ASCII码的十进制值为65,'0'的ASCII码的十进制值为48,则以下程序运行结果是( A )。
main( )
{ char ch1,ch2;
ch1='A'+'5'-'3';
ch2='A'+'6'-'3';
printf("%d,%c\n",ch1,ch2);
}
A. 67,D B. C,D C. C,68 D. 67,68
ch1='A'+'5'-'3'='A'+2 所以ch1以%d 格式输出是67 , 以%c输出是C
ch2='A'+'6'-'3'='A'+3 所以ch2以%d 格式输出是68, 以%c输出是D
所以答案选A
28. 若有定义 int m=6; 则正确的赋值表达式是( C )。
A. m*7 B. m*5=8 C. m-=m*6 D. double(-m)
A 、D 不是赋值表达式,且D语法错误,应该改为(double)(-m)
赋值运算符左边不能是常量或表达式,B =左边是表达式,所以B错误
29. 语句 k=(m=5,n=++m); 运行之后,变量k、m、n的值依次为( D )。
A. 5,5,6 B. 5,6,5 C. 6,6,5 D. 6,6,6
n=++m 即m先自增1,再赋值给n,所以m=6,n=6
逗号表达式的值等于其中最后一个表达式的值,所以
k=(m=5,n=++m)=(5,6)=6
30. 语句 x=5%4+(4/5); 运行之后,整型变量x的值为( A )。
A. 1 B. 2 C. 3 D. 0
x=5%4+(4/5)=1+0=1
31. (B )语句符合C语言语法。
A. float z=28,int x,y=18;
B. int x=25,y=25,z=25;
C. int x=25:y=25:z=25;
D. int x+y=z;
32. 若有定义 int a,x; 则语句 a=(x=8,x+8); 运行后,变量a、x的值依次为(A )。
A. 16, 8 B. 8, 8 C. 16, 16 D. 8, 16
x=8
a=(x=8,x+8)=(8,16)=16
33. 若变量 m, n, t已定义且赋予初值,则正确的表达式是( B )。
A. m=m+1=t-n B. m=6+n+t,m++ C. m=m\2 D. m=int(5.6%4)
赋值运算符左边不能是表达式,所以A错
\不是运算符,/才是除法运算符 ,所以C错
D 有2处错误:
1. 模运算%,左右操作数只能是整型数据,
2..强制类型转换的一般形式:(类型名)表达式;详细见课本P47
34. 若有定义:int a,b; float x,则以下不符合C语言语法的表达式是( A )。
A. x%7 B. x/=a-b C. a=b=2 D. x=(float)a/b
模运算%,左右操作数只能是整型数据,所以A错
35. 若有定义:int m=4,n=5;float k;,则以下符合C语言语法的表达式是( B )。
A. (m+n)*=k B. m=(n==5) C. k=float(n)/m D. n%2.5
赋值运算符左边不能是表达式,所以A错
强制类型转换的一般形式:(类型名)表达式;详细见课本P47,所以C错
模运算%,左右操作数只能是整型数据,所以D错
36. 若有定义:int a=6; 则语句 a*=a-=a/=3; 运行后,a的值是( B )。
A. 10 B. 0 C. 34 D. 24
1. a/=3 → a=a/3=6/3=2
2. a-=2 → a=a-2=2-2=0
3. a*=0; → a=a*0=0*0=0
37. 下面关于C语言变量的叙述中,错误的是( A )。
A. 可以用define关键字定义变量
B. 变量名用大小写字母是有区别的
C. C语言允许不同基本类型的变量之间进行混合运算
D. C语言中要求对变量作强制定义的主要理由是:便于确定类型和分配空间
可以用define关键字定义常量,不可以用define关键字定义变量
38. 若有定义:int a=5,b=2; 则表达式b= (a!=5)的值为( B )。
A. 5 B. 0 C. 3 D. 2
b= (a!=5)=0
39. 逗号表达式 (a=15,a*4),a+15 的值为( B )。
A. 15 B. 30 C. 75 D. 60
(a=15,a*4),a+15 →(15,60),30
逗号表达式(15,60),30的值为30
40. 下列语句中,符合C语言语法的赋值语句是( 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;
赋值运算符左边不能是表达式或常量,所以A,C,D都错
41. ( A )是正确的叙述。
A. (int)5.0/6 与 5/6 等价 B. 'G' 与"G" 等价
C. 5/6 与 5.0/6.0 等价 D. ++3与4 等价
B 'G'是字符常量,占1个字节;"G"是字符串常量,占2个字节,所以B错
C 5/6=0 5.0/6.0≈0.83 所以C错
D ++3 语法错误,常量不能进行++运算
42. 下面叙述中,错误的是( D )。
A. C语言中的表达式求值,是按其运算符的优先级先高后低的次序进行
B. 自增与自减运算符的结合方向为“自右至左”
C. 关系运算符的优先级低于算术运算符
D. C语言算术运算符不包含模运算符“%”
C语言算术运算符有5个:+ - * / %
43. ( C )是正确的叙述。
A. 表达式 "m"+"M" 是合法的
B. 若变量x, y为整型,则 (a+b)++是合法的
C. 强制类型转换运算的优先级高于算术运算
D. 表达式 'm' * 'n' 是不合法的
字符串常量不能进行算术运算,所以A错
++运算操作对象不能是表达式或常量,所以B错
字符常量可以进行算术运算,’m’*’n’合法,所以D错
44. 若有定义 int i=1,j=9; 则表达式 (++j)*(i--) 的值为( B )。
A. 0 B. 10 C. 9 D. 8
++j j先自增1,再参与其他运算
i-- i先参与其他运算,再自减1
所以(++j)*(i--)=10*1=10
45. 设整型变量x为7,使整型变量y不为2的表达式是( A )。
A. y=x%3 B. y = x/3
C. y =(++x)/3 D. y=8-(--x)
y=x%3=7%3=1
46. 若已定义 int a=3,b=2,c=1; 则语句 ++a||++b&&++c; 运行后b的值为( D )。
A. 0 B. 3 C. 1 D. 2
这题主要考逻辑运算中的“不完全计算”规则,详细见课本P51
&& 优先级别高于|| 所以++a||++b&&++c等价于++a||(++b&&++c)
a=3 → 4||(++b&&++c)
不管(++b&&++c)是真是假,我们都可以断定4||(++b&&++c)为真。根据“不完全计算”规则,不再执行++b&&++c。所以运行后b值不变
47. 若有定义:int i=5,j=4;则语句 i/=++j; 运行后i的值为( B )。
A. 10 B. 1 C. 1.25 D. 0
++j j先自增1,变为5,再参与其他运算, 所以i/=5 即i=i/5=5/5=1
48. 若已定义:int a=2,b=2; 则表达式 (a+(b++), b) 的值是( B )。
A. 2 B. 3 C. 4 D. 6
b++ 先参与其他运算,再自增1
所以(a+(b++), b)=(2+2,3)=3
49. 若有定义:int r,x=245; 则语句 r=x/100%9; 运行后r的值为( A )。
A. 2 B. 5 C. 0 D. 27
除法/和取模% 优先级别相同,结合方向从左到右 (详细见课本P42)
所以r=x/100%9= (x/100)%9= (245/100)%9=2%9=2
50. 若已定义:int i=6,t; 则语句 t=3+(--i); 运行后t的值为( C )。
A. 9 B. 7 C. 8 D. 5
--i先自减1,再参与其他运算
所以t=3+(--i)=3+5=8
51. C语言的 % 运算符按运算对象的个数属( C )。
A. 单目运算符 B. 四目运算符 C. 双目运算符 D. 三目运算符
52. 若已定义:int a=5,b=9,c=6; 则语句 b++; ++c; a=b-c; 运行后a的值为( B )。
A. 5 B. 3 C. 2 D. 4
执行b++;后 b值变为10,执行++c;后c值变为7
所以a=b-c=10-7=3
53. 以下程序运行时,若从键盘输入5,则输出结果是( D )。
main()
{ int a;
scanf("%d",&a);
if(a++>5) printf("%d\n",a);
else printf("%d\n",a--);
}
A. 7 B. 4 C. 5 D. 6
a++>5 a参与其他运算再自增1,即a先与5比较大小,然后a自增1,变为6
所以5>5 为假,执行else printf("%d\n",a--);先输出a,即6,然后a再自减1,a值变为5。
54. 若已定义 float x; 要从键盘输入数据36.582给变量x,则应选用( B )语句。
A. scanf("%2.3f",&x) ; B. scanf("%6f",&x) ;
C. scanf("%6.3f",&x) ; D. scanf("%5.3f",&x) ;
scanf函数不能指定输入小数位数
见课本P307-308
Scanf函数格式字符串的一半形式为:
%[*][输入数据宽度][长度]类型
例如
long b;
scanf(“%3ld”,&b); /*宽度为3,长度为l ,类型为d*/
printf(“%ld”,b);
输入:1234567 输出:123
55. 若已定义 double y; 拟从键盘输入一个值赋给变量y,则正确的函数调用是( C )。
A. scanf("%d",&y) ; B. scanf("%7.2f",&y) ;
C. scanf("%lf",&y) ; D. scanf("%ld",&y) ;
scanf函数不能指定输入小数位数
double------%lf
float--------%d
unsigned------------%u 无符号十进制整数格式输出
long ---------%ld
int----------%d
八进制-----%o
十六进制-------%x
char(字符变量)-------%c
字符串-----------%s
56. 已有定义 char s; 使用scanf( )函数输入一个字符给变量s,不正确的函数调用是( D )。
A. scanf("%c",&s) ; B. scanf("%d",&s) ;
C. scanf("%u",&s) ; D. scanf("%lf",&s) ;
字符 在内存中以ascii码的形式存储的,所以字符可以以%d,%u,%c的格式输入输出
57. 函数putchar( ) 的功能是向终端输出( A )。
A. 一个字符 B. 多个字符
C. 一个关系表达式 D. 一个实型变量值
详细见课本P34
58. 若已定义 int a=11; 执行以下语句后的输出结果是( B )。
printf("a=%d,a=%o,a=%x\n",a,a,a) ;
A. a=11, a=11, a=b B. a=11, a=13, a=b
C. a=11, a=13, a=c D. a=11, a=12, a=13
见55题解释
59. 若有定义 int m=4321,n=123,k=21; 语句printf("%4d+%3d+%2d",m,n,k); 执行后的输出结果是( C )。
A. 4321432143211231231232121 B. 432112321
C. 4321+123+21 D. 432+123+021
Printf中的格式控制字符串中字符分三种:格式字符、转义字符、普通字符
其中普通字符+原样输出。
60. 已有如下定义和输入语句,
char c1,c2;int x;
scanf("%c%d%c",&c1,&x,&c2);
若要求x、c1、c2的值分别为9、'K'和'H',正确的数据输入是( A )。
A. K9H B. K 9 H C. K9 H D. 9KH
字符 在内存中以ascii码的形式存储的,所以字符可以以%d,%u,%c的格式输入输出
字符ascii码值见课本300
61. 以下程序段的运行结果是( A )。
int a=1;
printf("%d, %d, %d\n", a, ++a, a++);
A. 3,3,1 B. 1, 2, 2 C. 1, 2, 3 D. 3, 2, 1
Printf函数中变量列表中如果有多个变量,计算顺序是从右到左,输出顺序是从左到右
62. 以下程序的运行结果是( D )。
void main()
{ int a=65;
char c='A';
printf("%d+%c=%d\n",a,c,a+c);
}
A. A+A=AA B. 65+A=65A C. 65+65=130 D. 65+A=130
字符以ascii码值参与算术运算。字符ascii码值见课本300
63. 若已定义:int x=7;float y=7.0; 以下语句中能输出正确值的是(B )。
A. printf("%d %d",x,y); B. printf("%d %.3f",x,y);
C. printf("%.3f %.3f",x,y); D. printf("%.3f %d",x,y);
见55题解释
64. putchar函数可以向终端输出一个( A )。
A. 字符或字符型变量值 B. 整型变量表达式值
C. 实型变量值 D. 字符串
详细见课本P34
65. 若已定义:int a=6;float b=1.5; 要求输出形式为: 6 * 1.50=9.00 ,应选用的正确输出语句是( B )。
A. printf("%d * %f=%f",a,b,a*b); B. printf("%d * %.2f=%.2f",a,b,a*b);
C. printf("%d * %d=%.2f",a,b,a*b); D. printf("%.2f * %.2f=%.2f",a,b,a*b);
int--------------%d
float----------%f
%.02f 以两位小数格式输出float变量值
*是普通字符原样输出
66. 有以下程序:
main()
{ int c;
while((c=getchar())!= '\n')
{ switch(c-'2')
{ case 0 :
case 1 : putchar(c+4);
case 2 : putchar(c+4); break;
case 3 : putchar(c+3);
default: putchar(c+2); break;
}
}
printf("\n");
}
当输入:247<回车>,程序的输出结果是(B )。
A. 689 B. 6689 C. 66778 D. 66887
c=getchar() 作用是从键盘输入流中获取一个字符,然后赋值给c.
switch语句 见课本P76.
第一次循环:
c=’2’ → c-‘2’=0
所以 从case 0:入口开始往下执行,一直语句break;才结束switch语句。
即执行以下语句:
case 0 :
case 1 : putchar(c+4);
case 2 : putchar(c+4); break;
输出:66
第二次循环:
c=’4’ → c-‘2’=2
所以 从case 2:入口开始往下执行,一直语句break;才结束switch语句。
即执行以下语句:
case 2 : putchar(c+4); break;
输出:8
第二次循环:
c=’7’ → c-‘2’=5
因为没有case值与5匹配,所以执行default分支。
即执行以下语句:
default: putchar(c+2); break;
输出:9
c=’\0’,结束循环。最后输出结果:6689
67. 若已定义 int x=5,y=9,z; 语句 z=x>=y; 运行后z的值为( C )。
A. 1 B. .t. C. 0 D. .f.
见课本P42,关系运算符优先级别高于赋值运算符,所以>=优先级别高于=
z=x>=y;等价于z=(x>=y);所以z=(x>=y)=(5>=9)=0
68. 判定逻辑值为“真”的最准确叙述是( C )。
A. 1 B. 大于0的数 C. 非0的整数 D. 非0的数
这个标准答案有错,正确应该选D
69. 若已定义 int x=-16,y=-12,z; 语句z=x<=y; 运行后z的值为( B )。
A. .t. B. 1 C. .f. D. 0
见67题解释:z=(x<=y)=(-16<=-12)=1
70. 能正确表示数学关系式 100≤s<300的表达式为( C )。
A. (s>=100) & (s<300) B. 100<= s<300
C. (s>=100) && (s<300) D. (s>=100) and (s<300)
见课本P51
71. 若定义 int a=2,b=3; 则表达式 !a||b 的值为( B )。
A. 0 B. 1 C. 2 D. 3
! 优先级别高于||
所以!a||b 等价于(!a)||b ,即0||3,所以值为1
72. 若定义 int a=-5,b=-8,c=-12; 则表达式 a>=b||b<c 的值为( D )。
A. 变量i的值 B. 变量j的值 C. 0 D. 1
关系运算符优先级别高于逻辑运算符,所以a>=b||b<c等价于(a>=b)||(b<c)
即(-5>=-8)||(-8<-12) 的值为1
73. 下列表达式( C)不能用来判断整型变量x中的值是否为奇数。
A. x%2==1 B. !(x%2==0) C. !(x%2) D. x%2
当!(x%2)为真时→x%2为假,即x%2==0 → x为偶数。所以选C
74. 若有定义:int a=3,b=2,c=3; 则值为0的表达式是(C )。
A. (a-b)==(c/b) B. a>=c
C. c-b||a+b&&(b*c-a-c) D. (b*c-a-c)&&(b*c-a-b)
见课本50面
75. 若已定义:int x=4,y=2,z=0; 则表达式 (x-y<=y)|| (y=z)的值是( A )。
A. 1 B. 0 C. 2 D. 4
(x-y<=y)|| (y=z)等价于((x-y)<=y)|| (y=z)即(2<=2)||(y=z) , 它的值为1
76. 若有定义:int a=3,b=2,c=1,k; 则表达式k=a>b>c的值是(A )。
A. 0 B. 1 C. 2 D. 3
>优先级别高于=,所以k=(a>b>c)
>的结合方向是从左到右,所以k=((a>b)>c)=((3>2)>1)=(1>1)=0
77. 以下运算符中优先级最高的是(D )。
A. <= B. && C. || D. !
优先级从高到低: ! <= && ||
78. 执行以下语句后,b的值是( A )。
int a=5,b=6,c=1,x=2,y=3,z=4;
(a=c>x) || (b=y>z);
A. 0 B. 1 C. -1 D. 6
(这题主要考逻辑运算中的“不完全计算”规则,详细见课本P51.)
如果||的左端为假,继续计算||的右端。
如果||的左端为真,不计算||的右端。
a=c>x →a=1>2 →a=0 所以a=c>x为假
b=y>z →b=3>4→b=0 所以b=y>z为假
79. 以下程序运行后,a的值是(C )。
main()
{ int a,b;
for(a=1,b=1;a<=100;a++)
{
if(b>=20) break;
if(b%3==1) { b+=3; continue; }
b-=5;
}
}
A. 101 B. 100 C. 8 D. 7
break语句作用是结束本层循环。
continue语句作用是不再执行本次循环中剩下的语句,直接进入下一次循环。
详细见课本P103
因为b=1 ,无论执行b+=3几次b%3==1恒成立。所以当b>=20或a>100时才结束for循环。
第1次循环:在执行if(b>=20) break;之前a的值为1,b的值为1
第2次循环:在执行if(b>=20) break;之前a的值为2,b的值为4
第3次循环:在执行if(b>=20) break;之前a的值为3,b的值为7
第4次循环:在执行if(b>=20) break;之前a的值为4,b的值为10
第5次循环:在执行if(b>=20) break;之前a的值为5,b的值为13
第6次循环:在执行if(b>=20) break;之前a的值为6,b的值为16
第7次循环:在执行if(b>=20) break;之前a的值为7,b的值为19
第8次循环:在执行if(b>=20) break;之前a的值为8,b的值为22
当b=22执行if(b>=20) break;结束for循环,这时候a的值为8
80. 已定义 double k=3.6; 则正确的赋值表达式是(D )。
A. k=double(-3.6) B. k%3
C. k=k*(-1.0)=-3.6 D. k+=k-=(k=1.2)*(k=3)
A 强制类型转换格式写错。应该是k=(double)(-3.6)
B不是赋值表达式
C 赋值运算符左边不能是表达式,所以C错
81. 已定义 char c = 'A' ; 则正确的赋值表达式是( B )。
A. c=\028 B. c=(c++)%4 C. c+1=66 D. c+=127—
A \028不是合法八进制数,八进制的数码只能是:0,1,2,。。,6.,7,所以A错
C 赋值运算符左边不能是表达式,所以C错
D 自减法运算符—的操作对象只能是变量,不能是常量和表达式,所以D错
82. 已定义 int m ='A'; 则正确的表达式是( C )。
A. 2*m=m++ B. m=int(-3.2) C. m%3 D. m=m-m=m-5
赋值运算符左边不能是表达式,所以A,D错
B强制类型转换格式写错。应该是m=(int)(-3.2)
83. 设已定义 float a=2.0,b=3.0; 使a值为5.0的表达式是( A )。
A. a+= b B. a*=b+2.0 C. a/=b+2.0 D. a-=b+2.0
A a+=b等价于a=a+b 所以a=a+b=2+3=5
因为加法运算符+优先级高于复合赋值运算符*=,/=.-=
所以
B .a*=b+2.0等价于a*=(b+2.0) 所以a=a*(b+2)=2*(3+2)=10
C. a/=b+2.0等价于a/=(b+2.0) 所以a=a/(b+2)=2/(3+2)=0.4
D. a-=b+2.0等价于a-=(b+2.0) 所以a=a-(b+2)=2-(3+2)=3
84. 若已定义 int m=7;float k=5.5; 则表达式 k+ m%2/4 的值为( D )。
A. 6.375 B. 6.75 C. 5.75 D. 5.5
/ 和%优先级相同,结合方向从左到右,且高于+,
所以k+ m%2/4等价于k+ ((m%2)/4)=5.5+((7%2)/4)=5.5+1/4=5.5+0=5.5
85. 若已定义 int a=3,b=3,x=1,y=2; 表达式 (a=y>x)&&(x=b>a) 的值是( B )。
A. 6 B. 1 C. 9 D. 0
>优先级高于=,所以(a=y>x)&&(x=b>a)等价于(a=(y>x))&&(x=(b>a))=(a=1)&&(x=(3>1))= (a=1)&&(x=1)=1
86. 若有定义:int a=2,b=3; float x=5; 则表达式x*b/a的值是( B )。
A. 7.5 B. 7 C. 6 D. 5
这题标准答案B有错,应该选A
*和/优先级相同,结合方向从左到右,所以x*b/a等价于(x*b)/a
又根据不同数据类型混合运算中的类型转换规则(课本P44)(x*b)/a的值为7.5
87. 若有定义:int x=8; float y=130;char z='A'; 则表达式x+z%(int)y的值是( C )。
[已知'A'的ASCII码的十进制值为65]
A. 运行时产生错误信息 B. 8 C. 73 D. 8.5
x+z%(int)y等价于x+(z%(int)y)=8+65%130=8+65=73
88. 若已定义:int m=7,n=4; float x=3.0,y=8.0,k; 则执行语句k=m/2+n*x/y;后,变量k的值是( C )。
A. 3 B. 4 C. 4.5 D. 5
k=m/2+n*x/y=7/2+12.0/8.0=3+1.5=4.5,所以答案选C
乘法运算*和除法运算/ 优先级别相同. 左结合性
注意 a/b 当a,b都是整型数据时,进行整除运算 例如 1/4=0
1.0/4=0.25 1/4.0=0.25
89. 若有定义:float x=2,y=4,h=3; 下列表达式中与(x+y)*h/2.0计算结果不相符的是( C )。
A. (x+y)*h/2 B. (x+y)*h*1/2 C. (1/2)*(x+y)*h D. h/2*(x+y)
(x+y)*h/2.0 =(2+4)*3/2.0=9
A 因为 x,y,h是double 型,所以(x+y)*h也是double型的,所以 (x+y)*h/2 =9
C (1/2)*(x+y)*h=0*(x+y)*h=0 ,所以答案选C
D 因为h是double 型,,所以h/2*(x+y)=1.5*6=9
90. 表达式2+sqrt(16.0)/4结果的数据类型是( A )。
A. Double B. int C. char D. Void
2+sqrt(16.0)/4
double
double
double
double
这题是考不同数据类型数据的混合运算(见课本P44-45,例3.10)
91. 若有定义:int a=4,b=5,c=6; 则表达式 (1.0*a+b)/c的值是( A )。
A. 1.5 B. 1 C. 4 D. 4.5
这个是考不同数据类型数据的混合运算(见课本P44-45,例3.10)
1.0 是double类型的数据 a ,b,c都是int类型数据
按照课本P45图3-5的转换规则,系统会自动将a,b,c转换为double类型,然后再参与运算
(注:专业文档是经验性极强的领域,无法思考和涵盖全面,素材和资料部分来自网络,供参考。可复制、编制,期待你的好评与关注)
展开阅读全文