在C中,计数序列为1';s
给定一个二进制数,如“10000111111110000001”,其中每个位都放置在一个数组中,因此该数组如下所示: [1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1] 我想找到任何1序列的起始索引和结束索引 所需输出(从右向左读取): -起始索引=0 -结束索引=0 (获取此数字并相应地采取行动) 然后: -起始指数=7 -期末指数=15 (获取此数字并相应地采取行动) 最后发生- -起始指数=20 -期末指数=20 (获取此数字并相应地采取行动) 如何在C语言中实现所需的输出 附加我尝试过的代码:在C中,计数序列为1';s,c,algorithm,C,Algorithm,给定一个二进制数,如“10000111111110000001”,其中每个位都放置在一个数组中,因此该数组如下所示: [1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1] 我想找到任何1序列的起始索引和结束索引 所需输出(从右向左读取): -起始索引=0 -结束索引=0 (获取此数字并相应地采取行动) 然后: -起始指数=7 -期末指数=15 (获取此数字并相应地采取行动) 最后发生- -起始指数=20 -期末指数=20 (获取此数字并相应地采取行动) 如何在C语言
for (int i = 0; i< counter; i++) {
if (bitArray[i] == 0) {
while (bitArray[i] == 0) {
startP++;
endP++;
i++;
}
}
if(bitArray[i] == 1) {
startP++;
while(bitArray[i+1]==1) {
endP++;
i++;
}
}
if (endP == startP) {
//do something
} else if (endP == (startP + 1)) {
//do something
} else if (endP > (startP + 1)) {
// do something
}
endP++;
startP = endP;
}
for(int i=0;i(startP+1)){
//做点什么
}
endP++;
startP=endP;
}
*计数器=阵列的len
*endP和startP int,初始化
*bitArray按所述设置数组。我不知道您的代码应该做什么,但如果您只想打印1组的开始索引和结束索引,我对您的代码做了一些更改:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char msg[64];
int bitArray[] = {1,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1};
int inSet = 0;
int start;
int end;
for (int i = 0; i < sizeof(bitArray); i++) {
if (bitArray[i] == 1 && inSet == 0) {
inSet = 1;
start = i;
}
else if(bitArray[i] == 0 && inSet == 1) {
inSet = 0;
end = i - 1;
snprintf(msg, sizeof(msg), "-starting index = %d\n-ending index = %d\n", start, end);
printf(msg);
}
}
if(inSet == 1)
{
end = sizeof(bitArray) - 1;
snprintf(msg, sizeof(msg), "-starting index = %d\n-ending index = %d\n", start, end);
printf(msg);
}
}
#包括
#包括
int main()
{
char-msg[64];
int位数组[]={1,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1};
int inSet=0;
int启动;
内端;
对于(int i=0;i
您自己尝试过什么吗?是的,附加了代码,代码有什么问题?它打印什么?另外,您的代码不完整。修复一个可能需要在for
循环后面的语句,该循环设置end
ifinSet==1
。此外,在循环的每次迭代中,您都会不必要地测试bitArray[i]
两次。使用else
。我需要在过程中比较起始索引和结束索引,而不是打印它们,而是在迭代中检查起始索引是否等于结束,或者结束是否大于开始索引,根据这一点,做一些其他的事情。好的,你现在已经有了所有的代码来做了,您可以插入所需的任何语句,而不是printf语句。