#include<bits/stdc++.h>
#include<cstring>
#define arraySize 10
using namespace std;
char returnMaxOccur(char *str);
int main()
{
char str[]="teet";
cout<<"The max occuring character is"<<" "<<returnMaxOccur(str)<<endl;
return 0;
}
char returnMaxOccur(char* str)
{
int high=-1;
char t;
int counter[arraySize]={0};
int len=strlen(str);
for(int i=0;i<len;i++)
{
counter[str[i]]++;
}
for(int i=0;i<len;i++)
{
if(high<counter[str[i]])
{
high=counter[str[i]];
t=str[i];
}
}
return t;
}
在下面的问题中,当包含
#include<bits/stdc++.h>
时,输入字符串的结果如下:1)teet: ans is t
2)eett: ans is e
3)ttee: ans is t
4)ette: ans is e
但是当我使用#include<iostream>
替代#include<bits/stdc++.h>
时,结果如下:
1)teet: ans is e
2)eett: ans is t
3)ttee: ans is t
4)ette: ans is e
这种行为的原因是什么,或者我做错了什么吗?
str[i]
比arraysize
(10)大得多,这将导致未定义行为。 - UnholySheep