Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解决这个C代码?_C_Implementation - Fatal编程技术网

如何解决这个C代码?

如何解决这个C代码?,c,implementation,C,Implementation,当我试图运行代码时,输出中出现了问题 当输入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 #de

当我试图运行代码时,输出中出现了问题

当输入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
#定义FALSE 0
int main()
{
bool s,m;//输入参数
布尔a,b;
boolp,q;
bool t;//输出参数
printf(“输入solar VMD的值:\n”);//扫描solar的VMD值
scanf(“%d”和“&s”);
printf(“输入电源VMD的值:\n”);//扫描电源的VMD值
scanf(“%d”、&m);
如果(s==1,m==1)
{                
printf(“扫描太阳能接触器:\n”);//扫描太阳能接触器
scanf(“%d”和“&a”);
printf(“扫描电源接触器:\n”);//扫描电源接触器
scanf(“%d”和“b”);
如果(a==1,b==1)//太阳能和电源接触器闭合时
{
q=假;
p=真;
printf(“太阳能接触器和电源接触器:%d%d”,p,q);
}
否则,如果(a==0,b==1)//当太阳能接触器打开且电源关闭时
{ 
q=假;
p=真;
printf(“太阳能接触器和电源接触器:%d%d”,p,q);
}
否则,如果(a==1,b==0)//当太阳能接触器闭合且电源断开时
{  
q=假;
p=真;
printf(“太阳能接触器和电源接触器:%d%d”,p,q);
}      
else如果(a==0,b==0)//当太阳能和电源都打开时
{
q=假;
p=真;
printf(“太阳能接触器和电源接触器:%d%d”,p,q);
}
其他的
{
printf(“接触器问题”);
}   
}
其他的
{
printf(“无电源”);
}    
getchar();
getchar();
返回0;
}

一个错误示例如下:

if(s == 1,m == 1)               
相反,你可能想要

if (s == 1 && m == 1)
这段代码并不像你想象的那样。了解,尤其是和

更新

另一个错误是
%d
不能与
bool
一起使用。事实上,没有一种
scanf
格式可以满足这种需求。因此,您要么坚持使用
int
(这是执行布尔运算符的一种非常好的类型),要么编写自己的函数从流中读取
bool

   **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)

逻辑运算符&&和| |用于计算两个表达式以获得单个关系结果。运算符&&对应于布尔逻辑运算和。如果该操作的两个操作数都为true,则该操作的结果为true,否则为false。以下面板显示运算符对表达式a和b求值的结果(&a):

如果(s==1,m==1)
这是错误的 你需要做些什么

如果(s==1&&m==1)

&&此运算符检查s==1和m==1
如果是,则条件为true或转到elseif block

您是否可以对代码进行格式化以使其可读?除了格式化之外,您是否可以为您的问题提供一个标题,以实际告诉我们有关您所问问题的信息?“如何用C代码解决这个问题”可能是关于任何事情的。是的,我做了&函数,但是对于所有情况(1,1),(1,0),(0,1),(0,0),输出都是“没有电源”。这是不正确的。是的,我尝试过使用逻辑的实现,但是对于所有可能的4种情况,输出都是“没有电源”。这是不可取的。然后检查你的输入和逻辑。布拉特,我给输入值逻辑1或0。因此,我确信输入不是问题所在。您是否将其放入调试器并查看?这样做,并检查您看到的内容是否与您认为应该发生的内容相匹配。使用适当的逻辑运算符。只有一个你可以用。试着找出哪一个(提示:不是逗号)。然后,如果有什么东西不起作用,试着找出其他什么东西不起作用。Thx for reply to post ddacot,如果你真的不介意,请使用逻辑运算符编译并运行代码。这就是我之前做的,分配了另一个bool变量t,t=s&&m,然后我选择了,如果(t==1){execute}。但结果是所有情况下都“没有权力”。
   **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)
 a       b      a && b
true    true    true
true    false   false
false   true    false
false   false   false