1.用C语言写一个最简单的死循环
在C语言的循环中,无论是何种循环结构,都会在循环中指明退出条件,这个条件会是一个逻辑运算表达式。 要做死循环,只需要把对应的退出条件置为恒为真即可。
while循环。while循环的判断条件是第一行while后面空格的内容,所以写成while(1){
//循环体},即可成为一个死循环。这个也是C语言中死循环最常见的模式。
for循环。for循环的判断条件,是for后面括号中的第二条语句。由于for的特殊性,以下两种方式,均可以构建死循环。(1) for(expr1; 1; expr2){//循环体},判断条件处写为1, 代表恒为真,与1中while的类似。
for(expr1; ; expr2),由于for允许括号中的三个表达式为空,所以判断部分留空,同样达到死循环的效果。
2.C语言中死循环怎么做
在C语言的循环中,无论是何种循环结构,都会在循环中指明退出条件,这个条件会是一个逻辑运算表达式。 要做死循环,只需要把对应的退出条件置为恒为真即可。
以下根据三种循环模式分别描述:
1、while循环。
while循环的判断条件是第一行while后面空格的内容,所以写成
while(1)
{
//循环体
}
即可成为一个死循环。这个也是C语言中死循环最常见的模式。
2、for循环。
for循环的判断条件,是for后面括号中的第二条语句。由于for的特殊性,以下两种方式,均可以构建死循环。
(1) for(expr1; 1; expr2)
{
//循环体
}
判断条件处写为1, 代表恒为真,与1中while的类似。
(2) for(expr1; ; expr2)
由于for允许括号中的三个表达式为空,所以判断部分留空,同样达到死循环的效果。
3、do-while循环。
do-while循环的判断条件为结尾while后的括号中内容。与1类似,do-while死循环可以写作:
do
{
//循环体
}while(1);
以上为三种死循环的构建,不过需要说明的是,死循环尽量少用。如果一定要用死循环,也要在循环体内设置退出条件(break)。
3.C语言中死循环怎么解决
C语言中死循环怎么解决?
首先应该将对应的退出条件置为恒为真,然后按照“while循环”“for循环 ”“do-while循环”三个循环模式分别描述。
在这个过程中,还要注意管理好循环控制变量,使while 的条件有机会为FALSE,或在循环体中加入break,并使它有机会执行。
另外,也可以设置循环计数变量。为了防止程序出现死循环,最好是自习检查程序,保证逻辑正确。如果不放心的话,可以设置循环计数变量,嵌入循环,当溢出上限时停止程序并报错。
需要说明的是,死循环尽量少用。如果一定要用死循环,也要在循环体内设置退出条件(break)。
4.我初学的C,怎么的就死循环了
else { printf("your number is mistake!\n"); printf("if you want to continue, please input 1 + enter.\n"); printf("if you want to exie this program,please enter 0 + enter.\n"); scanf("%d",&f); if(f==0) break; } } for(i=1;i<=50;i++) printf("-"); printf("\n"); printf("if you want to continue, please input 1 + enter.\n"); printf("if you want to exie this program,please enter 0 + enter.\n"); scanf("%d",&f);getchar();//在这个地方加一个getchar();就可以了。
输入字母出现了死循环是因为输入字母后,f 被设为 1,无论什么字母都为 1 。缓存在有输入的那个字母,所以后面的scanf();都接收了缓存的字母了,接收时没有操作刷新缓存,缓存中的字母一直影响着scanf()所以就出现死循环了。
5.c++死循环
sum没赋值,可能会输出很大很诡异的数
#include <iostream>
using namespace std;
void main()
{
int a,b,c,d,e,sum;
for(a=1;;a++)
for(b=1;;b++)
for(c=1;;c++)
for(d=1;;d++)
for(e=1;;e++)
if(a==(sum-1)/5&&b==(a-1)/5&&c==(b-1)/5&&d==(c-1)/5&&e==(d-1)/5)
{
cout<<sum;
goto l1;
}
l1:
cout<<"this is end"<<endl;
}
多层for循环里,在最里层的break只能跳出最里层的for循环,就是当前层的break只能跳出当前的循环。你只有一个break,跳出了e的循环,还有a,b,c,d的,所以会死循环。可以用goto语句,不过visual studio貌似不支持goto,也可以设置一个Boolean得变量,程序如下
#include <iostream>
using namespace std;
void main()
{
int a,b,c,d,e,sum;
bool x = true;
for(a=1;x;a++)
for(b=1;x;b++)
for(c=1;x;c++)
for(d=1;x;d++)
for(e=1;;e++)
if(a==(sum-1)/5&&b==(a-1)/5&&c==(b-1)/5&&d==(c-1)/5&&e==(d-1)/5)
{
cout<<sum;
x = false;
break;
}
}
6.c语言死循环
#include <stdio.h>
void main()
{
int m,n,a;
scanf("%d,%d",&m,&n);
if(m<n)
{
for(a=m;a>0;a--)
{
if(m%a==0&&n%a==0)
{
printf("%d",a);break;
}
}
}
else if(m>n)
{
for(a=n;a>0;a--)
{
if(n%a==0&&m%a==0)
{
printf("%d",a);break;
}
}
}
else
{
printf("%d",n);
}
}
你那个用while如果找不到最大公因数就一直没有break出不来,死循环。
而且你的scanf函数中取得数据有误,没有分隔符程序不知道你输入的数据如何分开,
再者输入数据不能是负数否则也死循环,改成上面的样子就可以了
7.C语言程序死循环
问题出在了这一句。
scanf("=%d",&b);
你之前输入了一个数字之后,有一个回车,在这里就永远匹配不到“=”了,所以死循环。改成
scanf(" %d",&b);
之前加一个空格来吸收回车就好了。
源码如下:
#include "stdio.h"
#define a 10
int main(void)
{
int b,c;
printf("请输入一个数\n");
scanf("%d",&b);
while(b>0)
{
c=b+a;
printf("你输入的数%d加十=%d\n",b,c);
scanf(" %d",&b);
printf("这玩神马点的\n");
}
printf("game ovre");
return 0;
}