我是编码的新手,如果您能帮助我解决这个问题,我将不胜感激。我无法找出为什么我的代码没有给我正确的结果。感谢您的时间!!

问:
使用一维数组,计算右括号和右括号的数量。输入必须在一行中。
例如输入:(()))
    输出:3 2

我使用一个数组在一行中接收输入,并使用for循环来计算打开/关闭括号的数量。

#include <stdio.h>

int main(){
char str[1000]; int l=0;r=0;

printf("Enter:\t");
gets(str);

int length=sizeof(str)/sizeof(str[0]);

for(int i=0;i!=EOF && i<length;i++)
{
    if(str[i]=='(')
    l++;
    else if(str[i]==')')
    r++;
}
printf("%d %d",l,r);
}


预期
输入:(())
输出:2 2

我得到什么
输入:(())
输出:6 2

最佳答案

您的循环是错误的(实际上是您的情况)

for(size_t i = 0; i < strlen(str);i++)
{
    if(str[i]=='(')
    {
        l++;
    }
    if(str[i]==')')
    {
        r++;
    }
}

关于c - 使用数组计算括号的数量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53982440/

10-15 02:13
查看更多