Лучший способ распечатать результат bool как ' false 'или' true 'в c?

Мне нужно написать программу, в которой main вызывает другие функции, которые проверяют ряд чисел, если они меньше числа, все ли числа ряда находятся между двумя пределами и если какие-либо из них отрицательны.Мой код возвращает значения 1 для истинных и 0 для ложных, но присваивание требует, чтобы они были напечатаны как «истина» или «ложь». Я не уверен, как получить ответы типа bool для печати в виде строки из printf. Я использовал if (atl == false) printf ("false"); в моем at_least.c и в main.c, но он возвращает только длинную строку истинного или ложного (например: истинно истинно ....). Я не уверен, что это правильный код, и я помещаю его не в то место, или был какой-то другой код, который мне нужно использовать.

Это мой main.c:

#include "my.h"

int main (void)

{
    int     x;
    int     count    = 0;
    int     sum      = 0;
    double  average  = 0.0;
    int     largest  = INT_MIN;
    int     smallest = INT_MAX;
    bool    atlst    = false;
    bool    bet      = true;
    bool    neg      = false;
    int     end;

    while ((end = scanf("%d",&x)) != EOF)
        {
            sumall(x, &sum);                           //calling function sumall
            count++;
            larger_smaller(x, &largest, &smallest);    //calling function larger_smaller
            if (atlst == false)
               at_least(x, &atlst);                    //calling function at_least if x < 50
            if (bet == true)
               between(x, &bet);                       //calling function between if x is between 30 and 40 (inclusive)
            if (neg == false)
               negative(x, &neg);                      //calling function negative if x < 0
        }
    average = (double) sum / count;         
    print(count, sum, average, largest, smallest, atlst, bet, neg);
    return;
 }

мои результаты для набора чисел:

The number of integers is:           15
The sum is               :         3844
The average is           :       256.27
The largest is           :          987
The smallest is          :          -28
At least one is <  50    :            1     //This needs to be true
All between  30 and  40  :            0     //This needs to be false
At least one is negative :            1     //This needs to be true

Это на языке C, по которому я, кажется, не могу найти много информации.

Заранее благодарим за помощь!

ПРИЛОЖЕНИЕ:

Это повторяется из ответа ниже.

Это работало для функций at_least и negative, но не для функции between. У меня

void between(int x, bool* bet) 
  { 
    if (x >= LOWER && x <= UPPER) 
        *bet = false; 
    return; 
  }

в качестве кода. Я не уверен, что случилось.

16
задан royhowie 17 February 2015 в 04:15
поделиться