C语言出现了 死循环 !!!!!!!!!!!!!!!!!!!!!!!!!

供稿:hz-xin.com     日期:2024-05-18
C语言中死循环怎么解决?

C语言中死循环怎么解决?
首先应该将对应的退出条件置为恒为真,然后按照“while循环”“for循环 ”“do-while循环”三个循环模式分别描述。
在这个过程中,还要注意管理好循环控制变量,使while 的条件有机会为FALSE,或在循环体中加入break,并使它有机会执行。
另外,也可以设置循环计数变量。为了防止程序出现死循环,最好是自习检查程序,保证逻辑正确。如果不放心的话,可以设置循环计数变量,嵌入循环,当溢出上限时停止程序并报错。
需要说明的是,死循环尽量少用。如果一定要用死循环,也要在循环体内设置退出条件(break)。

测试下面的代码
#include
#include
int main()
{
char a[81];
int i=0,j=0;
while ((a[i]=getchar())!='
')
i++;
a[i]='\0';
printf("%d %d
%s
",i,j,a);
while (a[j]=='0'&&a[j+1]!='\0')
j++;
printf("%d %d
%s
",i,j,a);
if (j!=0)
for (i=0;i<=(strlen(a)-j);i++)/*不建议这样写i<=(strlen(a)-j),
因为这是个动态的字符串,最好先求出字符串的长度在放进去,
二来更有效率,不用每次都计算字符串的长度*/
a[i]=a[i+j];
printf("%d %d
%s",i,j,a);
fflush(stdin);//清除缓冲
getchar();
return 0;
}

运行结果


输入为第一行的数据
运行没异常!不知道你用的编译器是什么?绿色版精简版?我使用的是vs2010

你的死循环出现在你的while里面,只要用户输入不为10,就会一直运行下去.你设置的 i 值应该是用户输入次数,所以每次循环会减1,但是你的while循环判断里面没有加入判断 i 是否等于或小于0,所以 i 小于或等于0的时候就不会跳出循环了.修改的话只需要把while那一句改成:while(a != 10 && i > 0)即可.你可以试试

while(a!=10)
{
if(a>10&&i>1)
{
printf("gao");
}
else
{
printf("di");
}
i--;
}
结束是以a!=10来跳出循环的,但是,只要一开始a输入的不是10,那么循环就不会结束,跟i无关的

你这个代码 写的有点让人看不懂,这样吧,我重新给你写一个。
#include <stdio.h>
int main (void)
{
int a;//商品价格
int b=10;//用户输入
int c;//输入计数

for (c=0;c<3;c++)
{
scanf ("%d",&a);
if (a<b)
printf ("di\n");
else if (a>b)
printf ("gao\n");
else if (a=b)
{
printf("0k\n");
break;
}
}
return 0;
}

你的i--,最后再减也减不到10啊!肯定是死循环了!