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

(爱问答)

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

这是我编的,不知道为什么无法输出“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代表输入结束。将该组数据排序后去掉最大的两个数和最小的两个数后再求平均值

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

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?