C++程序入门:为什么我的else不执行呢?

来源:百度知道 编辑:UC知道 时间:2024/05/30 23:15:08
int a=rand()%50,b=rand()%50;
if((a+b)<100)
{ a+=50;
b+=50;
}
else
{ a-=10;
b-=10;
printf("%d\n",b);
}
if((a+b)>=100)
printf("I'm angry!!!!\n");
}
我的程序是这样编的 找不到原因 但else不执行?
望高手能解决一下!!
a b 输出以后的值分别是91 和 67呀~
#include<stdio.h>
#include<stdlib.h>
void main(void)
{int a=rand()%50,b=rand()%50;
if((a+b)<100)
{ a+=50;
b+=50;
printf("a:%d\n,b:%d\n",a,b);}
else
{ a-=10;
b-=10;
printf("%d\n",b); }
if((a+b)>=100)
printf("I'm angry!!!!\n");
}

因为(a+b)<100一直为真
进入if以后,你的a和b不又各加了50嘛,也就是说,在进行判断的时候是41和17

因为a,b的取值范围是0-49,他们两个的和永远都不会大于100.
明白了吗?

int a=rand()%50,b=rand()%50
使a和b都小于50,所以a+b<100,所以会执行
{ a+=50;
b+=50;
}

随机数除以50取余数都不可能大于50,所以a+b<100因此程序不会走到ELSE里直接在前面的IF中走了