C语言 计算求解

1、已知a = 0 ,表达式 a = 1?b = 1:b = 0; 执行后,b的值是 1
2、若定义int a=8; float b=4.5;执行a*=a/=a-b后,a的值为 4

1、 a = 1?b = 1:b = 0 的结果是b=1,因为在C语言中,条件运算符的优先级比赋值运算符的优先级高,所以运算顺序其实是:
a = ( 1?b = 1:b = 0 )
这样写就很清楚了:1显然是真值,所以结果就是 b = 1
这句执行之后,a同时也得到了1的值;

2、赋值运算符的结合性是从右到左的,因此:
a *= a /= a- b
计算顺序是
a *= (a /= a- b )
先计算 a /= a-b,得到 a=8/(8-4.5)=8/3.5=2 (因为a是int型,所以结果自动类型转换为int)
这时 a=2,再做 a*= 2,得到的a的值就等于4了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-12-02
1.小哥是不是想写a = =1?b = 1:b = 0; “="是赋值运算符哦~无论什么时候都a都是1;
2. 由于你没加"()",这里的顺序应该是这样的:
从右向左:

a-b=3.500000;

(int)a/=3.500000; => a=2

(int)a*=a; => a=4;
第2个回答  2012-12-02
1.因为a=1,所以三元运算符返回(b=1)从而有b=1
2.a=a-b=3.5; a= a/3.5=2.2; a=a*2.2=4.4(如果输出格式为%d,则a=4)追问

三元运算符 a不是等于0么 怎么会是1?

追答

"a=1“是赋值运算,也就是把1赋值给a,而不是关系运算,a==1是关系运算

第3个回答  2012-12-02
第一个b是0,第二个计算就是先从右边开始算

C语言 计算求解
1、 a = 1?b = 1:b = 0 的结果是b=1,因为在C语言中,条件运算符的优先级比赋值运算符的优先级高,所以运算顺序其实是:a = ( 1?b = 1:b = 0 )这样写就很清楚了:1显然是真值,所以结果就是 b = 1 这句执行之后,a同时也得到了1的值;2、赋值运算符的结合性是从右到...

C语言题求解。计算绝对值函数。 (if语句)?
int main(){ int a;scanf("%d",&a);if(a<0)a=-a;printf("%d\\n",a);return 0;}

C语言如何计算求解一元二次方程ax+bx+c=0的根
double a,b,c,d;double x1,x2;scanf("%lf%lf%lf",&a,&b,&c);d=b*b-4*a*c;\/\/b*b-4*a*c有3中情况,因此定义3个函数来计算3种情况;if(d>0)fun1(a,b,d);if(d==0)fun2(a,b,d);if(d<0)\/\/这种情况结果为复数;fun3(a,b,d);return 0;} ...

如何用C语言编程计算3个数的最大值?
1.用if else语句求解:include<stdio.h> int main(){ int a,b,c,x;scanf("%d %d %d",&a,&b,&c);if(a>b){x=a;a=b;b=x;} if(a>c){x=a;a=c;c=x;} if(b>c){x=b;b=c;c=x;} printf("%d %d %d\\n",a,b,c);return 0;} 2.用数组求解:include<stdio.h> in...

C语言二分法求解方程f(x)=0根
二分法是一种求解方程 $f(x) = 0$ 根的迭代算法,具体步骤如下:定义一个函数 $f(x)$;确定初始区间 $[a, b]$,使得 $f(a)$ 和 $f(b)$ 异号;在区间 $[a, b]$ 中取中点 $c = \\frac{a+b}{2}$,计算 $f(c)$;如果 $f(c) = 0$,则 $c$ 是方程的解,算法结束;...

怎样用c语言解一元二次方程
对于如下的一元二次方程:ax*x+bx+c=0设计C语言程序,输入一元二次方程的三个系数a、b、c,求解出该方程的两个根,并且允许用户在程序中多次输入不同的系数,以求解不同的一元二次方程的解。编程思路分析:对于该方程,令delta=b^2-4*a*c,从数学的角度来讲,我们需要根据delta的值来判断该...

用C语言怎么计算三个数的最大公约数?
用C语言计算三个数的最大公约数的方法如下:准备材料:Visual Studio 2019、电脑 1、首先打开Visual Studio,新建一个Win32控制台程序,2、然后在源文件夹下面新建一个C语言文件,3、接着在C语言文件中的顶部导入库stdio和stdlib,4、接下来输入如下图所示的代码进行最大公约数的求解,5、接着运行C...

c语言编程求解
deposit=capital*pow((1+rate),n); \/\/pow() 计算乘方的函数 printf("%d年后本利之和为:%.2lf\\n",n,deposit); \/\/%.2lf 保留2位小数 } 这里输入的利率是小数输入,如果想改成百分数输入也可以。添加语句rate = rate\/100;到计算本利和语句之前就可以了 rate = rate\/100;deposit=capital...

C语言计算,要计算过程
1、(x++>5)先判断x>5,然后x++ 所以:x=5时,x>5不成立(这时x=6),执行else语句,输出x=6,然后再执行x-- 最后结果是6.2、a=2,b=1 当x=1时,执行case1,这时y=0 执行case 0 a++ => a=1,然后遇break跳出内层switch 继续执行case2 a++ => a=2 b++ => b=1 遇...

c语言题目 求解 很基础的
28. C正确——因为b初值是10,>=8成立,所以break;跳出了循环体,由于{}把第一个if和第二个if语句括起来了,所以两个if语句都是for的“体”,break;后跳出“体”,其后的语句都不执行了。9. D正确——i++==1成立,由于是&&,所以还得计算&&右边的表达式,其中++j==3成立,后面是||,...

相似回答
大家正在搜