秦九域 发表于 2019-11-11 01:35:44

求各位大捞帮忙看看这个题的编程的错误出现在哪里?

1.编程输出下面各逻辑表达式的值,并分析结果。设a=3,b=4,c=5。
a+b>c && b= =c
②a||b+c && b-c
③!(a>b)&& !c ||1
④!(x=a) && (y=b)&& 0
⑤!(a+b)+c-1 && b+c/2



#include<stdio.h>
void main();
{
int a,b,c;
double d,e,f,g,h;

    a=3;
    b=4;
    c=5;
    d=a+b>c && b= =c;
    e=a||b+c && b-c;
    f=!(a>b)&& !c ||1;
    g=!(x=a) && (y=b)&& 0;
    h=!(a+b)+c-1 && b+c/2;
   
    printf"(a=%d,b=%d,c=%d,d=%lf,e=%lf,f=%lf,g=%lf,h=%lf",a,b,c,d,e,f,g,h);
   
    return0;

}

jackz007 发表于 2019-11-11 02:44:31

本帖最后由 jackz007 于 2019-11-11 02:49 编辑

      d、e、f、g、h 不应该是 double 型,而应该是 bool 型变量。
      下面是我修改的代码,请楼主参考
#include <stdio.h>

int main(void)
{
      int a = 3 , b = 4 , c = 5 , x , y                           ;
      bool d , e , f , g , h                                    ;
      d = a + b > c && b == c                                     ;
      e = a || b + c && b - c                                     ;
      f = ! (a > b) && ! c || 1                                 ;
      g = ! (x = a) && (y = b) && 0                               ;
      h = ! (a + b) + c - 1 && b + c / 2                        ;
      if (d) printf("a + b > c && b == c\t -> true\n")            ;
      else printf("a + b > c && b == c\t -> false\n")             ;
      if (e) printf("a || b + c && b - c\t -> true\n")            ;
      else printf("a || b + c && b - c\t -> false\n")             ;
      if (f) printf("! (a > b) && ! c || 1\t -> true\n")          ;
      else printf("! (a > b) && ! c || 1\t -> false\n")         ;
      if (g) printf("! (x = a) && (y = b) && 0\t -> true\n")      ;
      else printf("! (x = a) && (y = b) && 0\t -> false\n")       ;
      if (h) printf("! (a + b) + c - 1 && b + c / 2\t -> true\n") ;
      else printf("! (a + b) + c - 1 && b + c / 2\t -> false\n");
      return 0                                                    ;
}
         编译运行实况:
C:\Bin>g++ -o x x.c

C:\Bin>x
a + b > c && b == c      -> false
a || b + c && b - c      -> true
! (a > b) && ! c || 1    -> true
! (x = a) && (y = b) && 0      -> false
! (a + b) + c - 1 && b + c / 2   -> true

C:\Bin>
      如果使用 VC6 编译,应该把源代码文件的扩展名改为 .cpp,只有这样,才会支持 bool 型数据类型
页: [1]
查看完整版本: 求各位大捞帮忙看看这个题的编程的错误出现在哪里?