do while的问题

来源:百度知道 编辑:UC知道 时间:2024/05/04 22:46:51
有以下程序段:
int n=0,p;
do
{
scanf("%d",&p);
n++;
while(p!=12345&&n<3);
此处do while循环的结束条件是:p的值等于12345或者n的值大于等于3
明明是p的值不等于12345且n的值小于3啊,怎么回事呢???详细点说哟。
偶是刚学的。不太懂呀!

int n=0,p; //定义变量 n,p 同时初始化n为0
do
{
scanf("%d",&p); //从键盘输入字符转化为整形(%d),存放在P里面(&p)
n++; //变量n+1,(n=n+1),每循环一次+1
} //这行少了
while(p!=12345&&n<3); //如果输入字符转换为整形后等于12345停止循环,并且如果n>=3也停止循环.

这段程序跑3次就会停了,是因为n=3

加油~

想一下:

与条件成立时,可是左右两边都成立才行,但是不成立时,只需要一个条件不满足就足矣,故P==12345,或者n>=3,就退出了。你要是是在想不明白 那这样
对条件求反,试一下,就是P==12345||n>=3.
希望能帮到你。