立即重复的字符查找程序

时间:2018-12-06 15:48:18

标签: c arrays char

我的程序是确定输入中是否有任何字符立即重复。例如

  

输入::

     

5

     

RRRRR

     

预期输出::

     

4

R重复4次

但给定的输出为2

我尝试了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=1;i<n;i++)
    {
        if(input[i]==input[i-1])
            count++;
    }

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

第二次尝试程序

#include<stdio.h>
int main()
{
    char a, b;

    int n, i, count=0;

    scanf("%d",&n);
    scanf("%c",&a);

    for(i=1;i<n;i++)
    {
        scanf("%c",&b);
        if(a==b)
            count++;
        else
            a=b;
    }

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

这里是要输入的字符数。那么有人可以帮我找出我要去哪里的错误吗?

1 个答案:

答案 0 :(得分:1)

我明白了,每当我们使用scanf并在最后输入时,我们使用“ ENTER” 但是第二个scanf中的“%c”会将其作为输入 .so在上一个问题中我的程序应该是 第一个程序

#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=1;i<n;i++)
    {
        if(input[i]==input[i-1])
            count++;
    }

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

第二程序

#include<stdio.h>
int main()
{
    char a, b;

    int n, i, count=0;

    scanf("%d",&n);
    scanf(" %c",&a);

    for(i=1;i<n;i++)
    {
        scanf(" %c",&b);
        if(a==b)
        {
            count++;
        }
        else
            a=b;
    }

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

在所有程序通知中,%c均带有标题空间。