1#include"stdio.h"main(){int n;printf("please input an interger:\\n");scanf("%d,&n");while(n--){...}}2 #include"stdio.h"main(){int i=0;for(;;)printf("%d\\n",i); 3main(){intx=3;do{printf("%d",x++);}while(x);}
没有对循环变量设终值。
提问者对答案的评价:
while(条件)----你的程序是什么??
1 #include"stdio.h"main(){int n;printf("please input an interger:\\n");scanf("%d,&n");
/*这条语句有问题,请自己检查,下面按此句正确回答*/while(n--) /*如果你在上一条语句中对于n,给的是一个大于0的数,那么这个循环是可以结束的,原因:括弧中的表达式如果为0的话,就结束循环,如果为非0的话就执行循环,我想现在你应该明白了吧?*/{...}}2 #include"stdio.h"main(){int i=0;for(;;)
/*缺少循环判断条件,如果在两个分号之间加一个表达式,其实值趋向于0,那么这个循环是可以结束的*/printf("%d\\n",i);3 main(){int x=3;do {printf("%d",x++);}while(x);
/*经过循环,变量x的值一直在增长,最终并不会得0,所以此语句为死循环*/}
第一题:如果用户输入负整数,那么就为死循环。否则就不为死循环。第二题:for 的条件永为正确的,所以是死循环。第三题:0为真,你的条件语句不能变为0,所以为死循环。
for(;;)是死循环
1 #include"stdio.h"main(){int n;printf("please input an interger:\\n");scanf("%d,&n");while(n--)
//说实在的没有死,只不过n为负值是循环次数太多了吧.负到不能再负时变成正最大值,再减小到0..看你编译器才能决定循环多少次{...}}2 #include"stdio.h"main(){int i=0;for(;;)
//这里没有话说了,怎么不给循环继续的条件呢printf("%d\\n",i);3 main(){int x=3;do {printf("%d",x++);}while(x);
//与第一题相反 ..算错误,由于系统执行printf速度比较慢,这样写跟死循环也没什么两样}
1 #include"stdio.h"main(){int n;printf("please input an interger:\\n");scanf("%d,&n");---这里出错应该为scanf("%d",&n);while(n--)--------这里的---没有说明会出错{...--------------这里的..........又算什么又会出错}}2 #include"stdio.h"main(){int i=0;for(;;)------------这里出错for(i=0;i<=100;i++)以这种写法printf("%d\\n",i);3 main(){int x=3;do {printf("%d",x++);}while(x);---------经过循环,变量x的值一直在增长,最终并不会得0,所
以语句为死循}
1和3应该不会出现死循环,到一定的情况下就会溢出,总会使条件不成立。不过你得等会,在32位的windows下很慢,可能要循环4294967296次以上。16位的DOS环境下应该很快。2死循环的原因是没有中止条件。 |