c++基础技术问题,int数组内元素判断是否==1是什么意思

请问以下代码什么意思,试着运行了一下,虽然能跑通,但不知道什么意思,结果怎么出来的


```c++
using namespace std;
int main() {
    int a[1005];
    string s1,s2,s3;
    cin>>s1>>s2;
    s3=s1+s2;
    for(int i=0;i<=s3.length();i++)
    {
        a[s3[i]]++;
        if(a[s3[i]]==1)
        {
             cout<<s3[i];
        }
    }
    
    return 0;
}


![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/147729609286158.png "#left")

a[s3[i]]==1
的含义是,先取s3这个字符串的[i]元素,然后将其ascii作为下标索引,取a数组里的对应元素,并且判断其是否等于1

之前看错了,这段代码的作用是将输入的两个字符串 s1 和 s2 进行拼接,并输出拼接后的字符串中所有不同的字符。

数组 a 是用来记录每个字符出现的次数。对于拼接后的字符串 s3 的每一个字符,如果它之前没有出现过,那么就输出它,并将对应的数组元素 a[s3[i]] 标记为 1,表示该字符已经出现过。如果该字符之前已经出现过,那么不需要重复输出。

应该是字符串去重吧,保留每个字符第一次出现的顺序

打印数组值为1时的字符串此位置的元素

  • 这篇博客: C++语句复习题以及知识讲解中的 1.5 下面显示的每个程序都有一个常见的编译错误,指出错误在哪里,然后修改它。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • unsigned evencnt=0,oddcnt=0;
    int digit = get_num()%10;
    switch(digit)
    {
        case 1,3,5,7,9:
            oddcnt++;
            break;
        case 2,4,6,8,10;
            evencnt++;
            break;
    }

    上述代码错误在一个case只可以对于一个值,不可以一个对应多个值

    更改后的代码如下所示:

    unsigned evencnt=0,oddcnt=0;
    int digit = get_num()%10;
    switch(digit)
    {
        case 1:
        case 3:
        case 5:
        case 7:
        case 9:
            oddcnt++;
            break;
        case 2:
        case 4:
        case 6:
        case 8:
        case 10:
            evencnt++;
            break;
    }
    unsigned ival=521, jval=1024,kval=1225;
    unsigned bufsize;
    unsigned swt = get_bufCnt();
    switch(swt)
    {
        case ival:
            bufsize = ival*sizeof(int);
            break;
        case jval:
            bufsize = jval*sizeof(int);
            break;
        case kval:
            bufsize = kval*sizeof(int);
            break;
    }

    上述代码错误在使用变量作为case标签内容,C++规定,case标签的内容只能是整型常量表达式。修改后的程序如下所示:(只需将变量更改为常量即可用const)

    const unsigned ival=521, jval=1024,kval=1225;
    unsigned bufsize;
    unsigned swt = get_bufCnt();
    switch(swt)
    {
        case ival:
            bufsize = ival*sizeof(int);
            break;
        case jval:
            bufsize = jval*sizeof(int);
            break;
        case kval:
            bufsize = kval*sizeof(int);
            break;
    }