关于C语言死循环赛问题的一个问题

c语言程序出现死循环_百度知道
c语言程序出现死循环
程序出现问题部分如下:
int main()
char a[81];
int i=0,j=0;
while ((a[i]=getchar())!='\n')
a[i]='\0';
while (a[j]=='0'&&a[j+1]!='\0')
for (i=0;i&=(strlen(a)-j);...
我有更好的答案
可以设置循环计数变量为了防止程序出现死循环,最好的办法当然是自习检查程序,保证逻辑正确就好了。如果不放心可以设置循环计数变量,嵌入循环,当溢出上限时停止程序并报错即可。
采纳率:56%
测试下面的代码#include&stdio.h&#include&string.h&int&main(){& & char&a[81];& & int&i=0,j=0;& & while&((a[i]=getchar())!='\n')& & & & i++;& & a[i]='\0';printf(&%d&%d&\n&%s\n&,i,j,a);& & while&(a[j]=='0'&&a[j+1]!='\0')& & & & j++;printf(&%d&%d&\n&%s\n&,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&\n&%s&,i,j,a);fflush(stdin);//清除缓冲getchar();return&0;}运行结果输入为第一行的数据运行没异常!不知道你用的编译器是什么?绿色版精简版?我使用的是vs2010
本回答被提问者采纳
  对于死循环程序,只能强制退出。  1、控制台程序中的死循环程序,一般按CTRL+C直接中断程序即可。比如下面的死循环控制台程序。  int main(){
while (1) ; ;
return 0;}  按CTRL+C即可中断程序。在控制台下会显示为^C。  2、图形界面中的死循环程序,可以使用进程管理工具来强制结束,比如windows上的任务管理器。当然控制台死循环程序,也可以使用此种方法结束。以win7为例,在任务栏上右键,在弹出菜单中选择“任务管理器”。  在任务管理器中找到要结束的进程,右键选择“结束进程”即可。
i&=(strlen(a)-j)
超出范围了,不是死循环,是崩溃了。
改成i&(strlen(a)-j)。
a[j] == '0' && a[j+1]!='\0' 当&&前面的表达式为假的话就不会判断后面的表达式,所以当前面的表达式永远为假时就一直循环下去。
while (a[j]=='0'&&a[j+1]!='\t')
怎么可能呢?我认为不是这原因
其他4条回答
为您推荐:
其他类似问题
您可能关注的内容
c语言程序的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。豆丁微信公众号
君,已阅读到文档的结尾了呢~~
广告剩余8秒
文档加载中
c语言死循环占用cpu 在C语言中,只有在使用时才占用内存单元的变量,其存储类型是 A) au
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
c语言死循环占用cpu 在C语言中,只有在使用时才占用内存单元的变量,其存储类型是 A) au
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口C语言中的死循环是什么意思?_百度知道
C语言中的死循环是什么意思?
我有更好的答案
无论怎么如何运行都不能跳出的循环即为死循环。例如while(1){
NULL;}for(;;){
NULL;}以下循环并非死循环while(1){
int i = 0;
if(i == 5)
对i操作;//伪代码}
采纳率:50%
死循环是循环条件永远能够得到满足,循环永远进行下去。这种循环一旦进入就出不来了
所以要设置跳出条件 例如for(i=0;i&100;i++)if(i&=50)i=0;在这个循环中i永远无法达到100,故循环永无止境,这个循环就是死循环。
程序永不停的重复代码,比方说while(1){printf(&我是死循环&);}这里while的条件永远为真,程序一直不停的循环打出
我是死循环
为您推荐:
其他类似问题
您可能关注的内容
死循环的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。c语言编程死循环? - 知乎1被浏览13分享邀请回答暂时还没有回答,开始写第一个回答下次自动登录
现在的位置:
& 综合 & 正文
【C语言天天练(一)】while(1)死循环与for(;;)死循环的区别
单片机的编程中经常用到while(1)死循环来进行轮寻操作,但分析Linux内核源代码时却经常见到for(;;)作为死循环的条件。
两者区别:
for(;;)死循环里的两个;;代表两个空语句,编译器一般会优化掉它们,直接进入循环体。
while(1)死循环里的1被看成表达式,每循环一次都要判断常量1是不是等于零。
同样的代码,编译出的程序代码大小不同。
示例分析:
for.c源码:
#include &stdio.h&
int main(void)
printf("123\n");
while.c源码:
#include &stdio.h&
int main(void)
printf("123\n");
汇编上面的两个程序发现它们的汇编源码完全相同:
.file "while.c"
.section .rodata
.string "123"
.globl main
.type main, @function
pushl %ebp
movl %esp, %ebp
andl $-16, %esp
subl $16, %esp
movl $.LC0, (%esp)
.size main, .-main
.ident "GCC: (Ubuntu 4.4.1-4ubuntu8) 4.4.1"
.section .note.GNU-stack,"",@progbits
这样看来两者似乎没有任何区别,其实不然,编译生成程序的大小不同:
-rwxr-xr-x 1 book book
-rwxr-xr-x 1 book book <span style="color:#98
22:33 while
【上篇】【下篇】}

我要回帖

更多关于 hashmap死循环问题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信