while括号里面是循环的控制条件啊,!x当x等于0时为真,当x不为0时为假,while(!x){x=x*x;}是先判断x为0,然后让x自乘,然后继续判断x是否为0;而do{x=x*x;}while(!x)是先让x自乘,然后判断x是否为0,不为0则退出循环