请告诉我怎样判断c语言中的语气是否为死循环
- 提问者网友:轮囘Li巡影
- 2021-04-11 17:52
- 五星知识达人网友:何以畏孤独
- 2021-04-11 18:10
也是我自己的看法了,不足,见谅。
-----------1--------------
int a , b ;
while(1)
{
// 里面没有控制跳出语句
//输入两个数没有判断当什么时候跳出循环,其中一个如:
scanf("%d,%d",&a,&b);if(a== 0 && b == 0 )
//没有这句就会一直在while循环里面出不来。break ;
//也可以根据题目要求在程序块中设置跳出循环语句。那要具体题目要求了。
}
防止这种死循可以用一种可以while(scanf("%d,%d",&a,&b)!=EOF),具体题目具体分析。
------------------2-------------------
for(int i = 0 ;;i ++ )循环里面没有判断语句,循环体里面又没有控制语句本想在下面程序中控制跳出循环但是忘记了或是没有进行合适的控制,从而跳不出循环。
或者,
在你写for循环时,不小心写错了控制语句等。
如我曾写过的
for(int i = 0 ; i < row ; i ++ )
for( int j = i ; j < col ; j = j + i )
//这个循环是错误的!!
这是我曾经写的一个程序的题目。你可以看看全部程序:
狱吏问题:
#include<iostream>
using namespace std ;
int main()
{
int *a , i , j , n ;
cin>>n ;
a = new int [ n + 1 ] ;
for( i = 0 ; i < n ; ++ i )
a[i] = 1 ;//刚开始所有的门都是锁着的,记为1
for(i = 0 ; i < n ; i ++ )
for(j = i ; j < n ; j = j + i )
a[j] = 1 - a[j] ;
if(a[i] == 0 )
cout<<i<<" is free ! "<<endl;
cout<<"<<"<<endl;
return 0 ;
}
--------------------其实关于c/c++中的所有问题,包括死循环问题不是一下子能够全部了解的。因为题目是在变化的,你可能会在不同的程序中犯不同错误。所以你只有通过不断做题,不断在自己所做的题目中慢慢发现自己犯的错误,慢慢收集,总结自己所犯的错误。不会经过很长一段时间你就会很有收获的。你可以调试程序,一步一步验证。如果你不会调试,你可以在一些可能出现问题的循环语句里面写一些标示性的输出。如我在我犯的错误中写上:
for(i = 0 ; i < n ; i ++ )
for(j = i ; j < n ; j = j + i )
//这里你会看到
出现死循环。你在仔细检查一下循环语句,多推敲几番。
这是一个循序渐进的过程,急不了。呵呵~希望你有所进步!