检查字符是否属于数组(初学者 C++)

Checking if characters belong in an array (beginner C++)

提问人:Nancy Bun 提问时间:9/27/2022 更新时间:9/27/2022 访问量:84

问:

我需要编写一个程序,要求输入三个字符,然后依次检查第一个、第二个和第三个字符是否属于字母表(小写或大写)。 到目前为止,我所拥有的就是这个

char v1, v2, v3;
cout << "Enter 3-character identifier: ";
cin >> v1 >> v2 >> v3;

if ((v1 != 'a')&&(v1!='b'))
    cout << v1 << v2 << v3 <<" is an invalid input, check first character\n";
else if (v2 != 'a')
    cout << v1 << v2 << v3 << "Invalid input, check second character\n";
else (v3 != 'a');
    cout << v1 << v2 << v3 << "Invalid input, check third character\n";

我正在测试我是否可以将字符与字母表进行比较,询问它是否不等于每个大小写字母,但这听起来很糟糕,所以我停在“b”处。我似乎无法将字符与数组或字符串进行比较(显示错误),这是我的 C++ 知识范围。我似乎也无法将“else”函数用于仅在前两个条件为假时适用。非常感谢任何帮助!

C++ 数组 字符串 比较 字符

评论

0赞 Sam Varshavchik 9/27/2022
您熟悉 ASCII 字符集吗?它是什么,它的特性是什么?你熟悉 C 库中的函数吗?isalpha
0赞 Nancy Bun 9/27/2022
@SamVarshavchik我还没有学会这些,你介意解释一下“isalpha”函数如何为我的问题工作吗?
0赞 Sam Varshavchik 9/27/2022
我希望这种家庭作业或课堂作业只有在介绍这些相关概念并讨论它们之后才能给出。对于C++教科书或您的课堂教师来说,在不教授需要知道什么的情况下分配此任务是没有意义的。你能解释一下你的任务背景吗?您用来学习 C++ 的教科书中给出此编程任务的章节的主题是什么,或者之前在课堂上讨论了什么?不幸的是,Stackoverflow 不是 C++ 教程站点,我们只回答特定问题。
0赞 Nancy Bun 9/27/2022
@SamVarshavchik 在今天的讲座中,我们讨论了“while”函数。到目前为止,我们已经了解了“if/else”函数和非常通用的信息,如数据类型。这项作业将在一周后到期,届时只有一堂课,所以这个难度级别对我来说比对你来说更没有意义。但是,如果您无法回答我的一般问题,请继续感谢。
0赞 Sam Varshavchik 9/27/2022
在这里,循环唯一有意义的上下文是一次读取一个字符。如果是这样:是的,可以使用循环来读取每个字符;然后附加代码检查它是否是字母;并以这种方式确定是否所有字符都“属于字母表”。也许你的导师还打算让你把整个字母表放在一个数组中,然后使用另一个循环将每个读取的字符与数组中的每个字符进行比较,并以这种方式实现这个任务?不可能权威地说明你是如何编写程序的。whilewhilewhile

答:

0赞 Epsit 9/27/2022 #1

您可以将该功能用于相同的目的。由于您提到您只了解了诸如 if/else 之类的基本概念,因此您可以尝试这种方式,其中我只使用带有函数的 if/else 条件来连续检查提供的输入是否分别是字符。isalpha()isalpha()

#include<iostream>
#include<cctype>

using namespace std;

int main()
{
    char a,b,c;

    cin>>a>>b>>c;

    if(isalpha(a) && isalpha(b) && isalpha(c) == 1)
    {
        cout<<"All of them are characters."<<endl;
    }
    else if(isalpha(a) == 1 && isalpha(b) ==1 && isalpha(c) == 0)
    {
        cout<<"The third input is not a valid alphabet.";
    }
    else if(isalpha(a) == 0 && isalpha(b) == 1 && isalpha(c) == 1)
    {
        cout<<"The first input is not a valid alphabet.";
    }
    else if(isalpha(a) == 1 && isalpha(b) == 0 && isalpha(c) == 1)
    {
        cout<<"The second input is not  valid alphabet.";
    }
    else if(isalpha(a) == 0 && isalpha(b) == 0 && isalpha(c) == 1)
    {
        cout<<"The first and second inputs are not valid alphabets.";
    }
    else if(isalpha(a) == 0 && isalpha(b) == 1 && isalpha(c) == 0)
    {
        cout<<"The first and third inputs are not valid alphabets.";
    }
    else if(isalpha(a) == 1 && isalpha(b) == 0 && isalpha(c) == 0)
    {
        cout<<"The second and third inputs are not valid alphabets.";
    }
    else if(isalpha(a) == 0 && isalpha(b) == 0 && isalpha(c) == 0)
    {
        cout<<"All of them are not valid alphabets.";
    }
    return 0;
}

不要忘记包含头文件。在此处查看输出文件。<cctype>

评论

0赞 Nancy Bun 9/28/2022
非常感谢。我是新贡献者,所以我还不能投赞成票,但你是救命稻草。我尝试了您的建议,但只向 isalpha 询问单个变量,而不是一次询问一个 a 是真/假、b 是真/假、c 是真/假等。我这样做是因为如果 a simple 是假的,那么 cout 将是角色 1 的失败消息,依此类推。你的回复结束了三天的痛苦,你得到了我所有的感谢!