【问题标题】:boolean data type random integer布尔数据类型随机整数
【发布时间】:2019-05-01 03:09:13
【问题描述】:

我试图创建一个随机数生成器并使用 srand 调用和布尔值判断随机整数奇数或偶数,但我不知道如何让它正确区分奇数和偶数。

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <time.h>

int i;
int num1;
int num2;

bool isOdd (int num1, int num2);

int main(void)
{
srand(time(NULL));


for (i=1; i <= 10; ++i) {
 num1 = rand() % 10 + 1;
 num2 = rand() % 10 + 1;
printf("The two random numbers are %u and %u\n", num1, num2);


bool valueIsOdd = isOdd(num1, num2);

if (valueIsOdd) {
    printf("one of these numbers, %u and %u, isOdd.\n\n", num1, num2);
}
else {
    printf("Both of these numbers, %u and %u, are even.\n\n", num1, num2);
    }
}
}

bool isOdd(int num1, int num2)
{
if (num1 % 2 != 0) {
    return true;
}
else {
    return false;
    }

}

【问题讨论】:

  • 你的程序会发生什么?对于一些示例数字,预期输出是多少,实际输出是多少?请花一些时间阅读有关 how to ask good questionsthis question checklist 的信息。
  • 您的打印没有明确涵盖两个数字都是奇数的情况。你可以说“这些数字中至少有一个是奇数”。或者换一种方式处理。
  • 请注意,您的 printf 语句似乎无法处理两个数字都是奇数的情况。
  • 当只有一个会被检查时,为什么要将两个数字传递给isOdd()

标签: c random boolean


【解决方案1】:

您只检查函数isOdd 中的一个数字。您需要检查这两个数字。

if ((num1 % 2 != 0) || (num2 %2 !=0)) {
   return true;
}
else {
   return false;
}

或者,您可以同时检查两者并使代码更简洁。

if ((num1 % 2 == 0) && (num2 %2 ==0)) {
   return false;
}
else {
   return true;
}

【讨论】:

  • 或普通return num1 % 2 != 0 || num1%2 !=0;
【解决方案2】:

我明白你的问题。 您要求将其与奇数的两个数字区分开来。 bool 的主要目的是表示 1 或 0 为什么要使用 char 由 8 位组成。 如果您想检查 1 个数字,请使用 bool 数据类型。 否则,如果您想知道所有可能结果中的两个数字,最好使用 char 数据类型。

这里有两个数字。4 种可能性。

        number 1         number 2
1         odd              even
2         even             odd
3         even             even
4         odd              od


         if ((num1 % 2 != 0) && (num2 % 2 == 0)) {
                return 1;
         }
        else if ((num1 % 2 == 0) && (num2 % 2 != 0)) {
                return 2;
        }
        else if ((num1 % 2 == 0) && (num2 % 2 == 0)) {
                return 3;
        }
        else {
           return 4;
        }

【讨论】:

    猜你喜欢
    • 2019-10-01
    • 2016-04-08
    • 2017-01-30
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多