2012-02-19 91 views
-2

当我尝试运行输出中有问题的代码。如何解决这个C代码?

当输入s = 1,m = 1时,能输出太阳能和主电源接触器。

当两个输入均为0,即S = 0和m = 0,则它给 “没有功率”。(正确的输出)

当s = 1时,m = 0时,应该说“有没有力量“。并能够得到正确的输出。

当s = 0时,m = 1,应该说“没有电力”,而是继续到太阳能接触器信息(不是正确的输出)。

那么,有什么可以解决我的问题吗?一个错误的

#include<stdio.h> 
#include<stdbool.h> 
#define TRUE 1 
#define FALSE 0 

int main() 
{ 
    bool s, m; //input parameters 
    bool a, b; 
    bool p, q; 
    bool t; //output parameters   

    printf("Enter the value of solar VMD : \n"); //scanning vmd values of solar 
    scanf("%d", &s); 
    printf("Enter the value of Mains VMD : \n"); //scanning vmd values of Mains 
    scanf("%d", &m);  

    if(s == 1,m == 1)    
    {     
     printf("Scan solar contactor : \n"); //scanning solar contactor 
     scanf("%d", &a); 
     printf("Scan Mains contactor : \n"); //scanning mains contactor 
     scanf("%d", &b); 

     if(a == 1, b == 1) //when solar & mains contactor are close 
     { 
      q = FALSE; 
      p = TRUE; 
      printf("Solar contactor and Mains contactor: %d %d", p, q); 
     } 
     else if(a == 0, b == 1) //when solar contctor is open and mains is closed 
     { 
      q = FALSE; 
      p = TRUE; 
      printf("Solar contactor and Mains contactor: %d %d", p, q); 
     } 
     else if(a == 1, b == 0) //when solar contactor is closed and mains is open 
     { 
      q = FALSE; 
      p = TRUE; 
      printf("Solar contactor and Mains contactor: %d %d", p, q); 
     }  
     else if(a == 0, b == 0) //when both solar and mains are open      
     { 
      q = FALSE; 
      p = TRUE; 
      printf("Solar contactor and Mains contactor: %d %d", p, q); 
     } 
     else 
     { 
      printf("Problem with contactors"); 
     } 
    } 

    else 
    { 
     printf("There is no power"); 
    }  

    getchar(); 
    getchar(); 
    return 0; 
} 
+1

您是否可以真正格式化代码以便读取它? – 2012-02-19 06:36:46

+0

除了格式化之外,你能否给你的问题一个标题,它实际上告诉我们关于你所问的问题的一些问题? “如何用C代码解决这个问题”可能与任何事情有关。 – Bart 2012-02-19 06:41:14

回答

3
if(s == 1,m == 1) 

此代码不会做你认为它确实。了解operators of the C language,特别是logical operatorsthe comma operator

更新

另一个错误是,%d不会与bool工作。其实没有scanf格式。所以你必须坚持int(这是一个完美的布尔运算符类型),或者编写自己的函数来从流中读取bool

+0

是的,我曾尝试使用逻辑的实现,但输出是“没有权力”的所有可能的4例。 这是不可取的。 – lokesh 2012-02-19 06:42:54

+0

然后检查你的输入和你的逻辑。 – Bart 2012-02-19 06:45:23

+0

布拉特,我给输入值或者逻辑1或者0. 所以确定输入不是问题。 – lokesh 2012-02-19 06:50:03

0

一个例子如下:

if(s == 1,m == 1)    

取而代之的是,你可能想

if (s == 1 && m == 1) 
+0

是的,我做了&&功能, 但输出是“没有权力”的所有情况下(1,1),(1,0),(0,1),(0,0)。 这是不正确的。 – lokesh 2012-02-19 06:38:42

0
**Instead of:**    **put:** 
    if(s == 1,m == 1)  - if(s == 1 && m == 1) 
    if(a == 1,b == 1)  - if(a == 1 && b == 1) 
    else if(a == 0, b == 1) - else if(a == 0 && b == 1) 
    else if(a == 1, b == 0) - else if(a == 1 && b == 0) 
    else if(a == 0, b == 0) - else if(a == 0 && b == 0) 

逻辑运算符& &和||在评估两个表达式以获得单个关系结果时使用。运算符& &对应于布尔逻辑运算AND。如果两个操作数都为真,则此操作结果为true;否则为false。下面面板显示操作符的结果& &计算表达式一个& & B:

a  b  a && b 
true true true 
true false false 
false true false 
false false false 
+0

Thx回复发表ddacot, 如果你真的不介意,你可以使用逻辑运算符编译并运行代码。 而且,这是我以前做过的,分配了另一个布尔变量t, t = s && m,那么我已经去了,如果(t == 1){执行}。 但结果是所有情况下“没有力量”。 – lokesh 2012-02-19 06:48:27

0

如果(一个或多个== 1,米== 1)
这是错误 你需要WIRTE

如果(S == 1 & &米== 1)

& &此operato r检查是否s == 1和m == 1 如果是,则条件为true或转到elseif块