c语言 3个人比饭量大小,3个人比饭量大小,每人说了2句话: A说:B比我吃得多;C和我吃得一样多。 B说:A比我吃得多;A也比C吃得多...

满意答案

02ae427d08e371d7e90d5b995e828d6d.png

czpcj2009

2013.04.22

02ae427d08e371d7e90d5b995e828d6d.png

采纳率:42%    等级:12

已帮助:20136人

楼主,建议你将for循环前面对a,b,c赋值的三条语句拿到循环内部去再试试。

出现这种情况其实是前面那三个赋值语句写的有问题。如果你是在vc++6.0下用debug模式,则未初始化的变量会具有统一的初值0xcccccccc,这样A==B==C,所以a值就是1,而b,c都是0。(其他的编译系统我不太清楚,有可能是随机的一个值吧,那样你的问题对三人的表述就变质了)然后带入循环体,虽然A,B,C的值一直在变化,但是始终没再同步更新a,b,c的值,而在这个范围内问题是无解的。循环结束是因为ABC的值到达了边界,然后程序就把结束时的BC值输了出来。

从输出上看,你的系统是把ABC变成C

怀疑楼主的复合语句没学好,按照你这个写法,if只和后面的第一个分号之前结合,一起作为循环体的内容(此时循环体马上要判断条件并跳出),那么后两个cout就被排挤出循环体了。

贴上这个程序,不知道是否符合你的意思:

#include

using namespace std;

int main(){

int A,B,C;

int a,b,c;

for(A=1;A<=3;A++)

for(B=1;B<4;B++)

for(C=1;C<4;C++){

a=((B>A)+(C==A));

b=((A>B)+(A>C));

c=((C>B)+(B>A));

if(((A>B&&ab))

+((A>C&&ac))

+((Bc)||(B>C&&b

cout<

cout<

cout<

}

}

return 0;

}

20分享举报

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值