C++ 检查是否有穿孔

C++ 检查是否有穿孔,c++,arrays,loops,for-loop,if-statement,C++,Arrays,Loops,For Loop,If Statement,因此,目标是检查C样式字符串是否以句号或感叹号结尾。然而,出于某种原因,我一直在撒谎 bool isItSentence(const char* s) { int x = strlen(s); for (int c = 0; s[c] != '\0'; c++) { if (!isupper(s[0])) return false; if (isupper(s[c]) && c > 0) return false;

因此,目标是检查C样式字符串是否以句号或感叹号结尾。然而,出于某种原因,我一直在撒谎

bool isItSentence(const char* s)
{
    int x = strlen(s);


    for (int c = 0; s[c] != '\0'; c++)
    {
        if (!isupper(s[0])) return false;
        if (isupper(s[c]) && c > 0) return false;
        if (s[x-1] != '.') return false;
        if (s[x-1] != '!') return false;
    }
    return true;
}
int main()
{
    std::string str = "Smelly.";
    reverse(str.c_str());

    std::cout << isItSentence(str.c_str()) << std::endl;
    std::cout << strlen(str.c_str()) << std::endl;
    system("pause");
bool-isitcontent(const-char*s)
{
int x=strlen(s);
对于(int c=0;s[c]!='\0';c++)
{
如果(!isupper(s[0])返回false;
if(isupper(s[c])&&c>0)返回false;
如果(s[x-1]!='。)返回false;
如果(s[x-1]!=“!”)返回false;
}
返回true;
}
int main()
{
std::string str=“难闻。”;
反向(str.c_str());

std::cout首先,注意
s[x-1]
是一个循环不变量,因此您最好将其移出
for
循环

    if (s[x-1] != '.') return false;
    if (s[x-1] != '!') return false;
这总是错误的(字符不能同时是点和解释标记)。 测试应该是

    if (s[x-1] != '.' && s[x-1] != '!') return false;

这是真的,但即使这是固定的,显示的代码仍然是错误的。答案不完整。