如何解决这个C代码?
当我尝试运行输出中有问题的代码。如何解决这个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;
}
if(s == 1,m == 1)
此代码不会做你认为它确实。了解operators of the C language,特别是logical operators和the comma operator。
更新
另一个错误是,%d
不会与bool
工作。其实没有scanf
格式。所以你必须坚持int
(这是一个完美的布尔运算符类型),或者编写自己的函数来从流中读取bool
。
一个例子如下:
if(s == 1,m == 1)
取而代之的是,你可能想
if (s == 1 && m == 1)
是的,我做了&&功能, 但输出是“没有权力”的所有情况下(1,1),(1,0),(0,1),(0,0)。 这是不正确的。 – lokesh 2012-02-19 06:38:42
**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
Thx回复发表ddacot, 如果你真的不介意,你可以使用逻辑运算符编译并运行代码。 而且,这是我以前做过的,分配了另一个布尔变量t, t = s && m,那么我已经去了,如果(t == 1){执行}。 但结果是所有情况下“没有力量”。 – lokesh 2012-02-19 06:48:27
如果(一个或多个== 1,米== 1)
这是错误 你需要WIRTE
如果(S == 1 & &米== 1)
& &此operato r检查是否s == 1和m == 1 如果是,则条件为true或转到elseif块
您是否可以真正格式化代码以便读取它? – 2012-02-19 06:36:46
除了格式化之外,你能否给你的问题一个标题,它实际上告诉我们关于你所问的问题的一些问题? “如何用C代码解决这个问题”可能与任何事情有关。 – Bart 2012-02-19 06:41:14