c - 我怎样才能找到任何字符的立即重复?

标签 c if-statement char

我希望我的程序找到任何字符的所有立即重复。例如,如果输入是“APAMMANNA”,我希望程序计算立即重复字符出现的次数。所以对于给定的例子,输出应该是“2”

这段代码是我写的

#include<stdio.h>
int main()
{
    char input[51];

    int n, i, count=0;

    scanf("%d",&n);

    for(i=0;i<n;i++)
    {
        scanf("%c",&input[i]);
    }

    for(i=0;i<n;i++)
    {
        if(input[i]==input[i+1]);
            count++;
    }

    printf("%d\n",count);
}

但是我这个程序似乎不工作,谁能告诉我为什么这个程序不能比较以下条件?

if(input[i]==input[i+1]);

那么,谁能帮我找出我哪里出错了?

最佳答案

问题在这里

if(input[i]==input[i+1]);
    count++;

这总是会增加计数。这是因为那个分号。相反,它应该是:

if(input[i]==input[i+1])
    count++;

它不起作用的原因是因为有了分号,分号(什么都不做)是 if 语句的整个主体。这就是为什么计数总是增加的原因,因为 count++; 不是 if 的一部分。

For example if input is "APAMMANNA"

实际上,它需要像“10 APAMMANNA”这样的东西,因为你首先要读入 n,即便如此,它也有点难看,因为数字后面的空格将成为你的一部分字符串。

关于c - 我怎样才能找到任何字符的立即重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53653588/

相关文章:

c - C 中的反转字符串函数?

javascript - 如果检查通过,为什么会这样?

vb.net - Visual Basic .NET 中多行 IF 语句缩进的编码风格

char - 为什么换行符在 BTreeMap 中算作两个键?

c - 将一个字符添加到c中的字符串

java - SML、Java、C、Pascal 中的垃圾收集

C 程序将厘米转换为英寸和英尺

c - 为什么实现文件中的C结构体定义不可用?

c++ - “回复”未在此范围内声明 C++

c++ - 文件读写的同时逐行读取文件