请问以下代码什么意思,试着运行了一下,虽然能跑通,但不知道什么意思,结果怎么出来的
```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;
}

a[s3[i]]==1
的含义是,先取s3这个字符串的[i]元素,然后将其ascii作为下标索引,取a数组里的对应元素,并且判断其是否等于1
之前看错了,这段代码的作用是将输入的两个字符串 s1 和 s2 进行拼接,并输出拼接后的字符串中所有不同的字符。
数组 a 是用来记录每个字符出现的次数。对于拼接后的字符串 s3 的每一个字符,如果它之前没有出现过,那么就输出它,并将对应的数组元素 a[s3[i]] 标记为 1,表示该字符已经出现过。如果该字符之前已经出现过,那么不需要重复输出。
应该是字符串去重吧,保留每个字符第一次出现的顺序
打印数组值为1时的字符串此位置的元素
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;
}