c - if条件不成功

标签 c if-statement input while-loop off-by-one

我的函数在遇到任何时候都应该有一个成功的启动序列 0 0 0 0 1个 1个 0 但是当我输入这些数字时,成功启动序列的数量不会改变 然而,这并不能阻止它编译,我无法发现我犯的错误在哪里。

main()

{
    int i,num;
    int array[300];
    i=0;
    num=0;
    while(i<100)
    {
        scanf("%d",&array[i]); //input


        i++;
        //checks for start sequences while making sure there is atleast 8 numbers input
        if((i>=8)&&((array[i-1])==0)&&((array[i-2])==1)&&((array[i-3])==1)&&((array[i-4])==0)&&     ((array[i-5])==0)&&((array[i-6])==0)&&((array[i-7])==0))
        {
            num++;//counts the number of successful startsequences

        }
    printf("Number of valid start sequences is %d\n",num);
    }
}

最佳答案

你面对的是off-by-one错误。

请记住,数组中的元素编号nn-1 索引标记。

例如,

if((i>=8)&&((array[i-1])==0)&&((array[i-2])==1)&&((array[i-3])==1)&&((array[i-4])==0)&&     ((array[i-5])==0)&&((array[i-6])==0)&&((array[i-7])==0))

从不检查array[0] 元素,是吗?

也许,您想开始将 if((i>=8) 更改为 if((i>=7)

关于c - if条件不成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27265060/

相关文章:

将 ada 代码转换为其 C

php - 在 PHP 中导入 Javascript

Javascript 混淆输入框值

C 递归中使用if或while的区别

javascript - HTML 输入和 Javascript 不返回值

jquery - 使用 jquery/javascript 更改隐藏输入的值

c - 如何在库加载时将参数传递给构造函数?

无法退出 cmd 文本输入?

c++ - 使用多路复用搜索 C/C++ 网络库

java - 错误的测验结果