C语语句问题

来源:百度知道 编辑:UC知道 时间:2024/05/17 14:56:54
从输入的若干个大于零的正数中选出最大值。用-1结束输入。
main()
{
int x,max,i;
printf("Enter x (-1 to end):");
do
scanf("%d",&x);
while(x<0&&x!=-1);
max=x;
while(x!=-1)
{scanf("%d",&x);
if(x>0&&x>max)max=x;
}
if(max!=-1) printf("max=%d\n",max);
}

问题:
1.有两个scanf输入语句,当输入一个数时符合do-while条件语句也就是(x<0&&x!=-1);一个负数
那么后面的max=x要执行把输入的x值赋给max,这时max应该为一个负数对吧,但是这个负数
的条件也符合whlie语句条件也就是(x!=-1)一个整形(整数和负数),那么后面还有scanf("%d",&x);
这个不明白该怎么执行???
2.一共有2个max=x,语句那么当输入的数值为负数时他执行了max=x;以后把x 的值赋给了max,
但后面的while语句执行后是if(x>0&&x>max)max=x;这时输入的数值是负数了那么x还把他的
值赋给max,不是要每次都改变max的值吗,这怎么能做到把最大的值赋给max啊??帮我解释一下

1.第一个scanf不可能使max得到一个不为-1的负数,就是说
当你输入一个不为-1的负数的时候,程序会让你继续输入数字,
直到你输入的数是个正数或者是-1。对吧?
2.等你把你提的第一个问题搞明白了,第二个问题也就不用我解释了