这个代码中,在while循环前面先读取了一个数,如果这个数在[0,1000]范围之内,while条件不成立,while就不会执行,sqrt也就不执行。但是当输入的x值在[0,1000]范围之外的时候,会进入while循环,提示让你重新输入数据,scanf读取数据后,立即执行了sqrt,然后再去判断while条件是否成立,所以,当第一次输入了[0,1000]范围之外的数时,不管后面输入什么数,sqrt都会被执行。
正确的逻辑应该是把 y = sqrt(x)放在while循环的外面。
为什么sqrt函数在while里也可以--->这句话你想表达什么意思呢?指编译能通过,还是程序也能得到正确的结果?
如果首次输入的x不是小于1000的正数,while条件是不成立的,sqrt不会执行,不知道这是“可以”还是“不可以”
如果第一次输入错误,那么会进行while循环,要求再次输入x值,这时候并不马上判断x的有效性,而是直接执行sqrt,这是有问题的,万一输入负数呢?所有sqrt正确用法应该是在while循环后面,而不能在里面
如果你直接输入的是大于1000的或者小于0的,程序根本不会进入while循环啊,自然不会执行sqrt函数