说明下列程序出现死循环的原因

[复制链接]
查看11 | 回复0 | 2009-1-30 06:28:38 | 显示全部楼层 |阅读模式
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死循环的原因是没有中止条件。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行