【问题标题】:c ++程序检查用户输入的数字
【发布时间】:2022-01-23 13:49:46
【问题描述】:

我是编程新手,最近才开始接触 C++,我使用的是 CLion IDE。

我需要解决一些问题,但我不确定如何解决,我需要您帮助我完成一个基本的 C++ 控制台程序。

如果用户输入一个十位数的数字,而第五个数字是一,则输出应该是这个词 - “zadochno”。

如果用户输入一个十位数的数字,而第五个数字是二,则输出应该是这个词 - “redovno”。

预计用户输入 2101162235 或类似。 无论如何,第五个元素应该是 1 或 2。

例子:

选项1:输入> 2101162235 -> 输出字符串“zadochno”

选项2:输入> 2101262235 -> 输出字符串“redovno”

我只能部分创建程序:

#include<iostream>

int number;
cout << "Please, enter number: ";
cin > number;

//I believe there should be an if statement or for loop here:
if(){

}

你能帮帮我吗?

【问题讨论】:

  • 用户输入的总是一个 10 位数字吗?或者它可以是任何东西,你需要检查它是否是一个 10 位数字?
  • 请注意,int 通常不能表示所有 10 位数字,因为它通常是 32 位数字。
  • 是的,用户输入的总是一个 10 位数字。
  • 如果输入始终是 10 位数字,我认为您可以读取字符串而不是 int,例如string number;cin &gt; number,然后你可以检查 if (number[4] == '1') {}

标签: c++


【解决方案1】:

您可以将用户输入为std::string,然后检查索引4处的元素是1还是2,如下所示:

#include <iostream>
#include <string>
int main()
{
    std::string input;
    
    //take input from user 
    std::getline(std::cin, input);
    
    //check if the 5th letter(at index 4 since indexing starts with 0) is '1' or '2'
    if(input.at(4) == '1')
    {
        std::cout<< "zadochno"<<std::endl;
    }
    else if(input.at(4) == '2')
    {
        std::cout << "redovno"<<std::endl;
    }
    
    //this below shown for loop is optional. If you're sure that the user input contains only digits then you can skip/remove this for loop.
    for(int i = 0; i < input.size(); ++i)
    {
        //check if the all the characters are digits of a number 
        if(std::isdigit(input[i]))
        {
            ;//std::cout<<"yes digit";
        }
        else
        {
            std::cout<<"Please enter a valid number"<<std::endl;
        }
    }
    
    return 0;
}


以上程序的输出可见here

【讨论】:

  • 注意!您没有检查std::string 的长度。尽管at() 会这样做并且如果您越界则抛出异常(与operator[]() 不同!)。我强烈建议您自己检查一下并向用户打印有用的错误消息。
  • @DevilishSpirits 我正在考虑添加对字符串长度的检查,但后来我阅读了 OP 的评论,即输入始终是 10 位数字。所以不需要检查长度。另外,正如你所说,为了确保我们不会越界,我使用了at。如果用户(OP)想要检查长度,那么他/她可以添加它。这微不足道
【解决方案2】:

假设用户确实输入了一个 10 位数字(即您不需要检查他们是否输入了例如 "foo""bar3000"),您可以执行以下操作:

将输入读取为std::string,而不是int。用户输入始终是一串字符。只有当您需要它时,您才能将其转换为整数。你不需要它作为int。名为user_inputstd::string 的第n 个字符是user_input[n]。你只需要检查中间的字符是'1'还是'2'

如果您确实需要检查用户是否输入了数字,您可以使用std::isdigit

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-12
    • 2023-03-27
    相关资源
    最近更新 更多