求解C语言中的问题~~~~求高手回答..

打印菱形的星号,为什么用while会进入死循环,用if就不会~~~
#include<stdio.h>
int main()
{int n,i,j,k;
scanf("%d",&n);
while(0<n&&n<100)
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n-i;j++)
printf(" ");
for(k=1;k<=2*i-1;k++)
printf("*");
printf("\n");
}
for(i=1;i<=n-1;i++)
{
for(j=1;j<=i;j++)
printf(" ");
for(k=1;k<=2*(n-i)-1;k++)
printf("*");
printf("\n");
}

}
return(0);

}

while(0<n&&n<100)是循环语句,在{}内部函数体执行完毕后,再判断0<n&&n<100是否成立,如果成立,继续执行{}内部函数体,你的代码里0<n&&n<100始终成立,所以就一直死循环了
if语句不是循环的,执行一次就完毕,当然没问题啦
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-21
???