C语言 查找输入字符的两个之间最大间距的程序



所以我做了一个程序,但它不能正常工作,我想看看是否有人可以帮助我。也许连这个想法都不对,我不确定。它应该找到所提供字符的两个出现之间的最大空格,并打印它,或者如果该字符没有出现至少 2 次,则打印 0。

 #include <stdio.h>
main()
{
int i=0,k=0,max,a[50],j;
char n,c;
printf("Insert the character:n");
scanf("%c",&n);
while ((c=getchar()) != EOF)
{
 if (c==n)
        {
         c=getchar();
         while (c != n)
                 {
                  k++;
                  c=getchar();
                 }
         a[i]=k;
         k=0;
         i++;
        }
}

max=a[0];
for (j=1; j<i; j++)
        if (a[j]>max) max=a[j];

if (max>=2) printf("%dn",max);
else printf("0n");
}
  1. 初始化maxa[0]
  2. 检查内部 while 循环中的EOF

    #include <stdio.h>
    int main()
    {
        int i=0,k=0,max,a[50],j;
        char n,c;
        a[0] = 0;                                     // Initialize a[0]
        max  = 0;                                     // Initialize max
        printf("Insert the character:n");
        scanf("%c",&n);
        int end_reached = 0;
        while ((c=getchar()) != EOF)
        {
            if (c==n)
            {
                c=getchar();
                while (c != n)
                {
                    if(c == EOF) {                     // Check for EOF
                        end_reached = 1;
                        break;
                    }
                    k++;
                    c=getchar();
                }
                if(!end_reached) {                     // Store k in a only if end was not reached.
                    a[i]=k;
                    k=0;
                    i++;
                }
            }
        }
        max=a[0];
        for (j=1; j<i; j++)
            if (a[j]>max)
                max=a[j];
        if (max>=2) 
            printf("%dn",max);
        else 
            printf("0n");
    }
    

最新更新