如何返回一串字母数字字符中的最大值(例如-1A003B3)?



考虑例如,输入是1A003B3。在这种情况下,程序必须返回 66,即 B 的 ASCII 值。

我已经尝试过这种方式,但没有得到正确的输出。

for(int d=0;d<str.length();d++)
{
if(str[d]>max)
max=str[d];
}

您可以使用标准算法std::max_element.例如

#include <iostream>
#include <string>
#include <iterator>
#include <algorithm>
int main() 
{
std::string s( "1A003B3" );
auto it = std::max_element( std::begin( s ), std::end( s ),
[]( char c1, char c2 )
{
return ( unsigned char )c1 < ( unsigned char )c2;
} );
std::cout << "The maximum value is " 
<< static_cast<int>( static_cast<unsigned char>( *it ) ) << 'n';
return 0;
}

程序输出为

The maximum value is 66

至于你的代码片段,那么它应该看起来像这样

unsigned char max = ( unsigned char )str[0];
for( std::string::size_type i = 1; i < str.length(); i++ )
{
if ( max < ( unsigned char )str[i] ) max = ( unsigned char )str[i];
}

要输出值,请使用表达式

std::cout << static_cast<int>( max ) << 'n';

相关内容

  • 没有找到相关文章

最新更新