c++ - 尝试使用数组在字符串中找到最短的句子
问题描述
我有在句子数组中查找最长句子的功能,我现在如何将其转换为最短的,然后将其复制到 char R[red]; 然后操纵最短的句子的最后一个单词,将第一个和最后一个字母变为大写
void longest (char SENTENCE[max][red],char R[red], int n){
int longest = 0;
for (int i = 0 ; i < n ; i++){
if(strlen(SENTENCE[i]) > longest){
longest = strlen(SENTENCE[i]);
strcpy_s(R,red,SENTENCE[i]);
}
}
解决方案
对于初学者来说,有一个标准算法std::min_element
,它返回一个指向容器中最小元素的迭代器。但是,将它与函数 strlen 一起使用不会很有效。
所以你确实可以自己编写这样的函数。它可以如下所示
void shortest( const char s[][red], char t[], size_t n )
{
t[0] = '\0';
if ( n != 0 )
{
size_t min_i = 0;
size_t min_len = std::strlen( s[0] );
for ( size_t i = 1; i < n; i++ )
{
size_t len = std::strlen( s[i] );
if ( len < min_len )
{
min_i = i;
min_len = len;
}
}
std::strcpy( t, s[min_i] );
}
}
推荐阅读
- swift - 运行 UITests 时重置 UserDefaults 并在完成时恢复
- css - 部署到 IIS 服务器系统时,URL 的路径不起作用
- android - SettingsClient.checkSettings 总是失败,状态为 LocationSettingsStatusCodes.RESOLUTION_REQUIRED
- javascript - 数据选项卡在 Internet Explorer 中无法正常工作
- javascript - 如何检查到期日期是否在一个月以下?
- android - 使用私钥解密时出现 InvalidKeyException
- keras - 在 epoch 结束时使层不可训练会改变下一个 epoch 的损失
- python - 未找到带有参数 '('',)' 的 'book-detail' 的反向操作。尝试了 1 种模式:['catalog/book/(?P
[0-9]+)$'] - google-cloud-platform - 谷歌部署管理器将命令行参数传递给 --config 文件,就像你可以使用模板一样
- r - 两个数据框,如果值在第二个 df 的范围内,则从一个 df 连接 ID 和位置