如何正确使用布尔函数?

时间:2014-02-06 16:08:37

标签: c++

我在完成以下任务时遇到了问题,主要是因为我不了解布尔函数的工作原理。 "编写一个名为Divisible的函数,它将两个数字作为参数。如果第一个数字是,则返回True 第二个数字均匀可分(无余数)。否则返回False。提示:使用%"

目前我所拥有的是:

int Divisible()
{
     int firstNum;
     int secondNum;
     int result;
     cout << "Please enter any integer: ";
     cin >> firstNum;
     cout << "Please enter another integer: ";
     cin >> secondNum;
     result == firstNum%secondNum;
}

我不知道该怎么做。我以为我可以将bool = 0指定为true,但事实并非如此。我对C ++仍然很陌生,所以任何帮助都会受到赞赏。

7 个答案:

答案 0 :(得分:3)

这个问题要求你编写一个方法,将数字作为参数,而不是让你从标准输入中输入它们。

Boolean是c ++中它自己的一种类型,所以你希望该方法返回bool而不是int。 易于阅读的解决方案:

bool Divisible(int a, int b) {
    int remainder = a % b; // Calculate the remainder of a and b.

    if(remainder == 0) {
        return true; //If the remainder is 0, the numbers are divisible.
    } else {
        return false; // Otherwise, they aren't.
    }
}

或者更简洁:

bool Divisible(int a, int b) {
    return (a % b) == 0;
}

更简洁:

bool Divisible(int a, int b) {
    return !(a % b);
}

答案 1 :(得分:1)

在返回布尔值的方法中,您希望首先确定方法返回true时结果的值是什么,然后使用==运算符来评估针对可接受结果得到的任何结果。< / p>

因此,在您的情况下,您正在尝试确定是返回true还是false,具体取决于第一个数字是否可被第二个数字整除。

你做的第一件事是你采取一个应该有效的案例,例如:

  • 4, 2

您如何知道4可以被2整除?这意味着如果我将4除以2,则余数应为零。这是%运算符返回的内容。如果您执行4 % 2,则值为零。

好的,现在你得到了正确的结果,所以你现在简单地做的就是评估你得到的任何结果,如下所示:

int isDivisible(int a, int b)
{
    const int acceptedAnswer = 4 % 2;
    if ( a % b == acceptedAnswer )
        return 1;
    return 0;
}

如果你拥有它,你获得的任何价值都不等于你接受的答案将返回0not equal (!=),任何其他答案将返回1equal (==)

答案 2 :(得分:1)

创建功能或使用它们时,请务必记住以签名开头。

想想这个函数需要使用什么,以及它将返回什么。如果某些内容为true或false,则需要返回,这些值是数据类型bool的值。就像在条件这样的if语句中一样,您可以使用==!=等布尔运算符。

所以你需要返回一个bool并检查两个数字是否可以被整除。因此:

bool Divisible(int a, int b){

          // == boolean operator that will return true if a%b evaluates to 0
          // false if not
          return (a % b) == 0 
}

一旦你开始以这种方式思考功能,每个程序都会成为一个很棒的难题!

答案 3 :(得分:0)

你不回来;或者分配结果......

result = firstNum%secondNum;
return (result == 0); // Assuming you want 0 as true.

通常,值0为false,任何非(!0)的值为true。按照惯例,即1

答案 4 :(得分:0)

你所做的是正确的,但在最后一行你要比较一个未初始化的整数和结果(除法的余数)。

设置int result=0; 然后这样做:

return result==firstNum%secondNum; // checks if remainder is zero (true if zero)

你也可以做return (firstNum%secondNum)==0

此外,您的赋值要求一个函数,它接受两个数字作为参数(输入参数)。 所以你的函数原型应该是这样的:

bool Divisible(int a, int b);

你应该在函数中使用a和b,而不是像现在一样从stdin中获取输入。

答案 5 :(得分:0)

在赋值中明确写出该函数必须有两个参数。因此该函数可以采用以下方式(C ++)

inline bool Divisible( int n, int m ) { return ( n % m == 0 ); }

或(C)

inline _Bool Divisible( int n, int m ) { return ( n % m == 0 ); }

在最后一种情况下,您可以将返回类型_Bool替换为int。在使用C ++的第一种情况下,最好使用返回类型bool。 输入两个数字的请求应在函数之外。该功能仅允许确定一个数字是否可被其他数字整除。

答案 6 :(得分:0)

bool是一种只能包含两个值的类型:truefalse。你用它来表达真值,就像一个数字是否除以另一个。

在您的情况下,该功能可以按如下方式实施:

bool is_divisible(int a, int b)
{
    return a % b == 0;
}