C语言循环问题,为什么运行else这个环节时会无限循环。 else { printf("输入有误请重新输入:"); }

   更新日期:2024.05.22
你的程序是进制转换,其中while(1)就是个死循环,那么这个是你想要的吗?
你想什么时候退出这个循环?你可以在你想退出while(1)循环的地方加上break,或者return 0;
所以我觉得你出现死循环的原因不在于eles,而是在于while(1)无法正常退出,或者说你没有给出出口。
另外你可以在你的函数中给出出口,也就是说在函数比如:szr(long int *w,long int d)函数中的最后放上一个return,也可以。
当然最简单的方法就是主程序中,在每种情况后面放一个break或return,来跳出循环,你可以试试。
呵呵,我的一点分析,你可以参考一下,^_^

循环木有结束条件,自然就是无限循环,while(1)就是个杯具。

while(1){ };
这是个无限循环,你在这个循环体中没有跳出语句bracket,或者程序终止函数exit();所以会无限循环。

while(1)在这里是一个死循环,你没有设置跳出条件

  • 13749722176 :C语言 循环问题
    广爽义2095 :答:当i等于1,3,5时,b等于1,while执行2次;当i等于2,4时,b等于0,while执行1次;所以k=2*3+2*1=8 当i等于5时,b等于1,while执行一次后,b等于0。当b等于0时,while(b-->=0)为真,b自减后为-1,再执行一次while。 当b等于-1时,while(b-->=0)为假,但b还需自减1,因为是...
  • 13749722176 :c语言中的多重循环是怎么运行的
    广爽义2095 :答:C语言的多层循环是从最内的那个循环开始,最内的循环完成循环一次,表示它的外一层循环只步进了一次,依次类推,直到最外的那一层循环步进完成,整个多层循环就结束了。你可以参考一个二层循环的代码的实际运行来理解这个问题,用二层循环代码来理解就简单多了。
  • 13749722176 :C语言while循环后,while循环之后的FOR 循环为什么运行不了??_百度...
    广爽义2095 :答:你可以把while循环那部分代码改一下:int i=0, z = 0;while((z = scanf("%d",&arr[i++]))!=EOF)printf("[%d ][z:%d]",arr[i-1], z);看一下scanf的返回值z到底是啥,然后你就知道为啥在里面死循环了。scanf我用的不多,但判断scanf的返回值只能让你判断scanf这个函数是否执行成功...
  • 13749722176 :C语言问题
    广爽义2095 :答:else i--;//当i不等能整除10的时候i自减 } i+=11;// a+=i; } printf("%d\n",a);} //当i=0时,符合if。所以break for.往下走。i+=11.所以i=11.a=11.//当i=11时,没经过if.而是经过else.所以i=10.然后i=i+11=21.a=11+21=32 ,此时i=21>20,跳出循环。结束 ...
  • 13749722176 :C语言到#结束,但为什么我的程序会陷入死循环啊?
    广爽义2095 :答:因为是在while前输入的数据,循环过程中这个数据一直存在。把scanf("%f%c%f",&a,&b,&c); while(b!='#'){改成while(scanf("%f %c%f",&a,&b,&c)==3 && b!='#'){。把所有的continue;删除。
  • 13749722176 :c语言的条件循环的运行速度问题?
    广爽义2095 :答:正常情况下int m=55+9;for(int i=1;i<m;i++)这种效率是更高的;因为第二种m+9你的理解是对的,是会每次都都要+9再比较。可以这么理解,为了防止for语句中有代码改变m的值,这种编译模式是更好的。具体可以看图中的汇编代码。但是如果编译器打开了优化选项,那这两个代码可能最终是会优化成...
  • 13749722176 :c语言while()循环的问题,请各位大神将详细步骤说明一下。。。
    广爽义2095 :答:工程2 答案为54是因为你用了++n,注意是n自增之后再判断循环是否继续。从n=1开始分析,n=1时,n自增为2,此时sum=0+2=2;n=2时,n自增为3,此时sum=2+3=5;n=3时,n自增为4,此时sum=5+4=9;n=4时,n自增为5,此时sum=9+5=14;n=5时,n自增为6,此时sum=14+6=20;n=6时...
  • 13749722176 :c语言 while1 为什么是无限循环?
    广爽义2095 :答:在c语言的世界里除了0是false,其他的都是ture。while(1){ } 语句判断条件是死循环是没错,但也并非一定是死循环,也有可能运行到某个时刻就跳出while循环了。比如 while(1)里面运行到了break,或者return,那么就会终止当前的while语句,结束循环。上面说的中断,只是一时跳出while语句,执行其他语句...
  • 13749722176 :麻烦帮我解答一道C语言的循环问题!!!
    广爽义2095 :答:a=0;while(a=0){ printf("good");a--;} 循环0次,因为a=0不是真值表达式,而是赋值表达式,这里的表达式的真值为a的值。因为a的值为0,所以这里等效与while(0),0为假,所以不循环。把a=0换成a==0,循环1次,第一次循环a的值为0,所以a==0为真,在循环体内执行 a--,那么我的值...
  • 13749722176 :C语言问题,关于循环语句
    广爽义2095 :答:没有循环体?后面的“;”就是循环体,就一个语句,只不过没有“{}”而已。A中while后面有个;号,后以--x没有执行会造成死循环。B中while中的x=5一直是真所以会死循环。C中每一次x++自加,在循环体中x--又减少了,所以条件x<10一直为真,会死循环。D中do在前面,会先执行循环体中的一次...
  • 相关链接

    欢迎反馈与建议,请联系电邮
    2024 © 视觉网