首页 > 电脑

c++在字符串中查找第一个不重复字符,没有的话就输出“no”

更新时间2018-12-03 04:40:46

这是我编的,不知道为什么无法输出“no”的

#include <iostream>

#include <stdio.h>

using namespace std;

 

 int main()

 {

        int i,j,j1,k,l=0;

        char a[50];

         for(i=0;i<50;i++)

         {

          scanf("%c",&a[i]);

         }

        for(j=0;j<i-1;j++)

          {

          for(k=j+1;k<i;k++)

            {

              if(a[j]==a[k])

              {a[k]='@';

              a[j]='@';}                          //让所有重复的字符变为“@”

            }

          }

        for(j1=0,l=0;j1<i;j1++)

          {

          if(a[j1]!='@')

          {printf("%c",a[j1]);

          l++;

          break;}

          }

        if(l==0)

        {

        printf("no");

        }

        return 0;

}


你的程序对于都有重复的字符不能打印 no 的问题已经解决了,见下面的运行结果。主要原因是i循环结束后的i值,你反复在用。改正以后的程序是用一个宏定义#define N 10(为了调试方便,把50改为10了)来解决的,整个程序见下:

#include <iostream>
#include <stdio.h>
using namespace std;
#define N 10
int main()
{
       int i,j,j1,k,l=0;
       char a[N];
        for(i=0;i<N;i++)
        {
         scanf("%c",&a[i]);
        }
       for(j=0;j<N-1;j++)
         {
         for(k=j+1;k<N;k++)
           {
             if(a[j]==a[k])
             {a[k]='@';
             a[j]='@';}   //让所有重复的字符变为"@"
           }
         }
       for(j1=0,l=0;j1<N;j1++)
         {
         if(a[j1]!='@')
         {printf("%c ",a[j1]);
         l++;
         break;}
         }
       if(l==0)
       {
       printf("no ");
       }
       return 0;
}

c++ 在字符串中查找第一个不重复字符,没有的话就输出“no”


上一篇:演讲语言有哪些特点

下一篇:输入若干正整数,0代表输入结束。将该组数据排序后去掉最大的两个数和最小的两个数后再求平均值