程序出现问题部分如下:
int main()
{
char a[81];
int i=0,j=0;
while ((a[i]=getchar())!='\n')
i++;
a[i]='\0';
while (a[j]=='0'&&a[j+1]!='\0')
j++;
if (j!=0)
for (i=0;i<=(strlen(a)-j);i++)
a[i]=a[i+j];
程序的这一部分是想读入一个超长正整数,考虑到存在000000的情况,所以在while()里加了一个&&a[j+1]!='\0',但是改了以后变成一个死循环了,为什么?
求解释..百思不得其解咧..
测试下面的代码
#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
C语言中的死循环是什么意思
在编程中,一个靠自身控制无法终止的程序称为"死循环"。不存在一种算法,对任何一个程序及相应的输入数据,都可以判断是否会出现死循环。因此,任何编译系统都不做死循环检查。然而,在编程中死循环并不是一个需要避免的问题,相反,在实际应用中,经常需要用到死循环。例如,我们使用的电脑操作系统下的...
死循是什么意思
在编程中,一个靠自身控制无法终止的程序称为“死循环”。例如在C语言程序中,语句“while(1)printf("*");”就是一个死循环,运行它将无休止地打印*号。不存在一种算法,对任何一个程序及相应的输入数据,都可以判断是否会出现死循环。因此,任何编译系统都不做死循环检查。在设计程序时,若遇到死...
我的c语言程序没有报错为什么会执行不了?
1. 程序陷入死循环:程序在某个地方出现了死循环,使得程序无法继续向下执行。如果程序似乎无法结束,可以检查程序是否存在死循环。2. 内存泄露:程序在使用动态内存分配函数(如malloc、calloc)等开辟内存空间时,没有及时释放所分配的内存空间,导致内存泄露。内存泄露会导致系统内存资源的浪费,最终导致程序...
C语言到#结束,但为什么我的程序会陷入死循环啊?
因为是在while前输入的数据,循环过程中这个数据一直存在。把scanf("%f%c%f",&a,&b,&c); while(b!='#'){改成while(scanf("%f %c%f",&a,&b,&c)==3 && b!='#'){。把所有的continue;删除。
c语言,为何这是死循环?
while(1)表示无条件执行循环(因为1表示真),而它的循环体是后面跟着的那个语句:也就是printf("%d",k-=3);所以程序会一直运行printf("%d",k-=3); 永远出不来。这条语句就相当于 while(1){ printf("%d",k-=3);} 加上大括号里面可以加多个语句作为循环体,如果没加大括号就是while后面的...
C语言里死循环怎么结束
1、C语言中,强制终止死循环可以用CTRL+BREAK组合键或者CTRL+C组合键。2、命令解释:CTRL+BREAK 设置或清除 DOS 系统的扩展。CTRL+C 检测这个命令是为了与 DOS 系统的兼容而保留的,在 Windows里不起作用。如果命令扩展被启用,并且操作平台是Windows,BREAK 命令会在被调试程序调试时输入一个硬代码中...
C语言:为什么下面的程序段是死循环?手机党,原谅我没有排版
注意while里面的表达式:1<=x<=2,并不是判断x在区间[1,2]内,而是:首先计算1<=x的值,结果是真或者假,就是1或者0。然后判断这个值与2的大小关系,显然不论是1还是0,都小于等于2,所以永远是真的。从而使死循环。
c语言中一般运行后停止工作有哪些情况
只要编译通过,一般情况下C语言程序停止工作,多为输入输出格式不对,或计算陷入死循环。1、输入输出格式不对。最常见的就是&符号,该有的没有,不该有的打了&符号。例如:int n;scanf("%d",n);n前少打了&符号。编译能通过,执行时就会出现停止工作的情况。2、个别计算陷入死循环的情况,例如:i...
C语言死循环
1、if(k==0) continue;应该break而不是continue 2、while后边少了一个{ i++后也少了一个} 使得循环内i得不到变化,所以死循环。3、不应该那么打印。正确代码如下:include<stdio.h> void main(){ int i,j,k;i=1;while(i<=100){ for(j=2;j...
C语言死循环
for(i=1;;i++){ if(++i%2==0) continue;\/\/因为每次循环都执行这个语句,不执行下面语句,进而执行下一次循环 if(++i%3==0) break; \/\/这一句永远也不执行,所以跳不出循环,出现死循环了。}