如何解决这个C代码?
当我试图运行代码时,输出中出现了问题 当输入s=1,m=1时,则我能够输出,即太阳能和电源接触器的结果 当两个输入均为0,即s=0和m=0时,则表示“无电源”。(正确输出) 当s=1,m=0时,应表示“无电源”。并且我能够得到正确的输出 当s=0,m=1时,它应该说“没有电源”,但它继续向太阳能接触器发送信息(不是正确的输出) 有什么问题吗?有人能解释一下吗如何解决这个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
#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