第一个循环用作无限循环
first loop use as an Infinite loop
为什么第一个循环用作无限循环?这里的int t
始终是一个正数。z
的值每次迭代都在增加,之后,它将等于 t,循环将终止。但在运行时,循环用作无限循环。
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int t; /// t always a positive number
scanf("%d",&t);
int z=0;
while(z!=t) ///first loop
{
string s;
int r,n;
cin>>s>>r>>n;
int l=0,i,j,k=0;
while(s[l]!=' ')
l++;
for(i=0;i<r;i++)
{
l=l*2;
char a[l];
for(j=0;j<l/2;j++)
{
if(s[j]=='1')
{
a[k]='1';
a[k+1]='0';
}
else
{
a[k]='0';
a[k+1]='1';
}
k+=2;
}
int m=0;
while (a[m]!=' ')
{
s[m]=a[m];
m++;
}
}
cout<<s[n]<<endl;
z++;
}
return 0;
}
我的猜测是,无限循环可能不是外部循环while(z!=t)
,而是内部循环
while (a[m]!=' ')
{
s[m]=a[m];
m++;
}
因为您检查 NUL 字符,但从不将任何a[]
字符设置为