C++的问题:int a=1,b=2;则(++a/)*b--的值怎么算出来?我执行了一下,结果是2。

抱歉,朋友们,是这样的:(++a/b)*b--... 抱歉,朋友们,是这样的:(++a/b)*b-- 展开
 我来答
手机用户25838
2011-08-22 · TA获得超过171个赞
知道小有建树答主
回答量:663
采纳率:0%
帮助的人:447万
展开全部
在这个表达式中,三目运算符的执行顺序是从左往右的
但整个表达式的执行顺序是从右向左执行的
初始值a=1,b=2,c=3,d=4
先执行--a和--d,得到a=0,d=3
再判断c<d是否为真,因为c=3=d=3
所以表达式c<d?--a:--d的值是3
此时a的值是0
则原表达式简化为 a++<b?a:3
对于a++<b是先判断a<b的真值,然后a再增1
由于a=0<b=2,且a++之后a=1
最终的运算结果是1

希望回答对你有帮助!

jxfnx257ipu
2011-08-23 · TA获得超过210个赞
知道小有建树答主
回答量:873
采纳率:0%
帮助的人:504万
展开全部
26. 下列程序段的输出结果是____C___.(知识点6.4)
int x=3;
do
while(!(——x));
A)1 B)3 0 C)1 -2 D)死循环
为什么输出-2就停止了呀??不明白,帮解释哈
---------------------------------------------------------------------
“!”表示非的意思,while()括号中为-2时为真,加个“!”为“非真”即为“假”
---------------------------------------------------------------------
27. 有以下程序,其中x、y为整型变量;
for(x=0,y=0;(x<=1)&&(y= 1);x++,y——);
printf(“x=%d,y=%d”,x,y);
该程序的输出结果是_A____.
A)x=2,y=0 B) x=1,y=0 C) x=1,y=1 D) x=0,y=0
这题答案是怎么算滴呀??说一下过程
---------------------------------------------------------------------
程序第一行(y= 1)这是一个赋值表达式,值为1,就是说它始终为真,并且它还执行给y赋值为1.for语句循环体为空语句,因为后面有一个分号,所以只有当x不满足(x<=1)时结束循环,即为2时。这里还涉及一个逻辑表达式中并不是所有运算符都被执行的问题,也就是说当x为2时,(x<=1)为假,这时不用执行(y= 1)就可以判断逻辑表达式(x<=1)&&(y= 1)为假所以(y= 1)并不被执行,所以由于上一个循环的y——得出y为0,即得出答案x=2,y=0
---------------------------------------------------------------------
24. 若x是int型变量,且有下面的程序片段: (知识点6.5)
for(x=5;x<8;x++)
printf((x%2)?(“**%d”):(“##%d\n”),x);
该程序片段的输出结果是 _A______.
A)**5##6 B)##5 C)##5**6##7 D)**5##6**7 **7 **6##7
当x=7时,为什么不见输出捏??答案是怎么得呀??
---------------------------------------------------------------------
答案应该有问题吧?应该是第一行输出**5##6然后换行在输出**7
---------------------------------------------------------------------
17. 语句:printf(“%d”, !9);的输出结果是___A___.(知识点5.2)
A) 0 B) 1 C) 有语法错误 ,不能执行 D) -9
怎么知道答案是输出0呀??
---------------------------------------------------------------------
这个和判断真假一样,如果一个变量x,未给x赋值时,系统认为是真,这时!x值为0即为假,同理!9值为0.
---------------------------------------------------------------------
5. 若有定义:int a,b;char x,y;并有以下输入数据: 14 22 XxYy (回车)
则能给a赋整数14,给b赋整数22,给x赋字符x,给y赋字符y的正确程序段是_C_______. (知识点4.2)
A) scanf(“%d %d”,&a,&b);
x=getchar();y=getchar();
B) scanf(“%d%d %c %c”, &a, &b,&x,&x,&y,&y);
C) scanf(“%d %d %c%c%c %c”, &a,&b,&x,&x,&y,&y);
D) scanf(“%d%d %c %c”, &a, &b,&x,&y);
这题是怎么算滴呀??分析一下...
---------------------------------------------------------------------
scanf输入多个数据可以用一个或多个空格将各个数据隔开,至于%c一次只能接收一个字符,并且scanf函数是从左向右扫描所以x和y分别取的第二个%c和第四个%c。还有就是%c之间的空格我不是很清楚,我试了一下它似乎没有影响!!!SORRY
---------------------------------------------------------------------
29. 在下述程序中,if (i>j) 语句共执行的次数是_D____.(知识点6.5)
main()
{ int i=0,j=10,k=2,s=0;
for(;;)
{ i+= k ;
if(i>j)
{ printf(“%d”,s);
break ;
}
s+=i ;
}
}
A)4 B)7 C)5 D)6
这题我怎么算得执行了4次也..6次是怎么得滴呀??
---------------------------------------------------------------------
第一次循环时i等2,第二次……第五次i等10,第六次i等12,满足if(i>j)执行break语句跳出循环。至于 s+=i ;语句应该没什么用吧?
---------------------------------------------------------------------
30. 以下程序的功能是:按顺序读入10名学生和4门课程的成绩,计算出每位学生的平均分进行输出,但运行结果不正确。
main()
{ int n,k;float score,ave;
ave=0.0;
for(n=1;n<=10;n++)
{ for(k=1;k<=4;k++)
{ scanf(“%f”,&score);
ave+=score/4 ;}
printf(“NO%d:%f\n”,n,ave);}
}造成程序计算结果错误的语句行是____A_.(知识点6.6)
A)ave=0.0; B)for(n=1;n<=10;n++)
C)ave+=score/4 ; D)printf(“NO%d:%f\n”,n,ave);
错误在ave=0.0;??讲一下错滴原因。。。
---------------------------------------------------------------------
这个程序段只能正确计算第一名学生的平均成绩,因为得出第一名学生成绩后ave的值不是0而是第一名学生的平均成绩,这时再计算第二个学生时它的平均值是加上第一名学生平均值后的结果。所以应该把ave=0.0;语句放到for(n=1;n<=10;n++)的循环体里面和for(k=1;k<=4;k++)是并列的,这样没算完一个同学的平均成绩后进行一次ave赋值为0.0。
---------------------------------------------------------------------
要是哪不懂发信息,要是写的不明白不好意思哈~~~~~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e43033c
2011-08-22 · TA获得超过1130个赞
知道小有建树答主
回答量:933
采纳率:100%
帮助的人:919万
展开全部
执行过程如下:
1: a/b=0
2: ++a/b=1
3: (++a/b)*b=2
因为--是后缀运算符,输出时,并没有执行,所以输出2
对于 这个表达式输出之后变成1
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sun_siliang
2011-08-22 · TA获得超过2.6万个赞
知道大有可为答主
回答量:9913
采纳率:100%
帮助的人:4425万
展开全部
(++a/)*b--
改为
(++a)*b--
=2*2
=4
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lixuejieyx
2011-08-22 · TA获得超过305个赞
知道答主
回答量:358
采纳率:100%
帮助的人:207万
展开全部
++a先自增后使用a=2
++a/b=2/2=1
b--先使用后自减1
(++a/b)*b--=1*2=2
然后b=1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式