c语言程序的题。做的都不对求解答

 定义变量int a=12,表达式a+=a-=a*=12的结果为

   A.  12               B.   -264               C.  0                D.  264

10. 定义变量int x=15,表达式y = x>10 ? x/10 : x>0 ? x: -x结果为

A.  1                B.  2                  C.  5                 D.  10

11. 定义int a,b;执行b=(a=3*5,a*4),a+15;后,变量b的值

A.  15               B.  30                 C.  45                D.  60

12. 定义 int x=-2; 则-3<x<-1的值 。

A.  0                B.  1                  C.  2                 D.  -1

13.执行a = 0; b = 1; c = a++ && ( b = 3 );后变量a,b,c的值是

参考GPT和自己的思路:

  1. 表达式a+=a-=a*=12的结果为D. 264,按照运算顺序从右往左进行,先进行a*=12,a的值变为144,然后a-=144,a的值变为-132,最后a+=-132,a的值变为-264。
  2. 表达式y = x>10 ? x/10 : x>0 ? x: -x的结果为C. 5,按照条件运算符从左往右进行,首先判断x>10,由于x的值为15,所以满足这个条件,所以y的值为x/10,即1.5取整为1。
  3. 执行b=(a=35,a4),a+15;后,变量b的值为C. 45,按照逗号运算符从左往右进行,先计算a=35,a的值为15,然后计算a4,a的值乘以4得到60,最后将60赋值给b。a+15只是一个额外的表达式,不会对b产生影响。
  4. 对于定义int x=-2; 则-3<x<-1的值,为A. 0,-3<x<-1相当于-3<x且x<-1,因为x=-2,不满足这个条件,所以表达式的值为假,即0。
  5. 执行a = 0; b = 1; c = a++ && ( b = 3 );后,变量a的值为1,变量b的值为3,变量c的值为0。这是因为&&是逻辑与运算符,当左侧表达式为假时,右侧表达式不会进行计算,而左侧表达式a++返回的是0(假),所以b的值不会改变,c也不会被赋值为1。

参考GPT和自己的思路:

答案:

  1. D. 264
  2. A. 1
  3. B. 30
  4. A. 0
  5. 变量a=0,变量b=1,变量c=0

参考GPT和自己的思路:

  1. 表达式a+=a-=a*=12的结果为:D. 264。首先计算a*=12,a的值变为144;接着计算a-=144,a的值变为-132;最后计算a+=-132,a的值变为264。

  2. 表达式y = x>10 ? x/10 : x>0 ? x: -x的结果为:A. 1。首先判断x是否大于10,由于x等于15,因此x>10成立,所以计算x/10,值为1。

  3. 执行b=(a=35,a4),a+15;后,变量b的值为:B. 60。首先执行a=35,a的值为15;接着执行a4,得到60,将60赋值给b;最后执行a+15,但该语句没有产生任何输出,因此a的值仍为15。

  4. 表达式-3<x<-1的值为:A. 0。该表达式等同于(-3<x) && (x<-1),首先判断-3<x是否成立,x等于-2,因此成立;接着判断x<-1是否成立,也成立。两个条件都满足才返回1,否则返回0,因此表达式的值为0。

  5. 执行a = 0; b = 1; c = a++ && ( b = 3 );后,变量a,b,c的值分别为:a=1,b=3,c=0。首先计算a++,a的值变成1,然后执行b = 3,将3赋值给b。由于逻辑运算符&&是短路运算符,因此只要第一个操作数为false,就不会执行第二个操作数。由于a此时为1,而0被视为false,因此c的值为0。