【问题标题】:Issue in writing logic into syntactical code将逻辑写入语法代码的问题
【发布时间】:2019-05-25 14:50:50
【问题描述】:

在索引处检查它是辅音还是元音,并且在句法形式的逻辑编写上有一点问题?

尝试运行它,但计数变量没有增加。

if (s[i]!= ('a' || 'e' || 'i' || 'o' || 'u') && s[i+1] == ('a' || 'e' || 'i' || 'o' || 'u'))

它一直给出 0 ,即初始化值作为输出。

【问题讨论】:

  • 您可以声明一个包含所有元音的字符串和另一个包含辅音的字符串,然后使用标准 C 函数 strchr。
  • 解释行为:char 不会重载operator||,因此它们都转换为布尔值。所以s[i]!= ('a' || 'e' || 'i' || 'o' || 'u')变成s[i]!= (true || true || true || true || true),变成s[i]!=true

标签: c++ arrays string


【解决方案1】:

写一个函数。例如:

bool isvowel( char c ) {
    return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u';
}

那么你可以简单地说:

if ( !isvowel( s[i] )  && isvowel( s[i+1] )  )  {
      // do something
} 

【讨论】:

  • 谢谢。绝对有很大帮助。但是如果我想以某种方式使用原始代码中使用的 if 语句,你能告诉我吗?我只是想让我的概念得到澄清。提前致谢。
【解决方案2】:

编写一个单独的函数来检查给定字符是否是元音。例如

#include <iostream>
#include <string>
#include <cstring>
#include <cctype>

bool is_vowel( char c )
{
    const char *vowels = "aeiou";

    return c != '\0' && std::strchr( vowels, std::tolower( ( unsigned char )c ) );
}

int main( void )
{
    std::string s( "Hi" );

    if ( not is_vowel( s[0] ) && is_vowel( s[1] ) ) std::cout << s << '\n';
}

程序输出是

Hi

【讨论】:

    猜你喜欢
    • 2017-11-15
    • 2020-10-31
    • 2010-10-08
    • 2021-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多