变量不变c
嗨,我是一个begginer c程序员,我试图做一个过滤器应该改变一个变量取决于其他变量,但它似乎并没有改变变量g1出于某种原因。我真的很喜欢我能得到的任何帮助,因为我现在被困在这里。谢谢变量不变c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int car;
int g1;
int g2;
int sel1;
unsigned int iseed = (unsigned int)time(NULL);
srand (iseed);
g1 = 0;
car = rand() % 3 + 1;
printf("%d\n",car);
printf("select a door beetween 1 and 3\n ");
scanf ("%d",&sel1);
if (sel1 < 0)
{
printf("Invalid selection!\n");
return 0;
}
if (sel1 > 3)
{
printf("Invalid selection!\n");
return 0;
}
if (sel1 == 1)
{
if(car == 1)
{
g1 = 2;
g2 = 3;
}
if (car == 2);
{
g1 = 3;
g2 = 1;
}
if (car == 3);
{
g1 = 2;
g2 = 1;
}
}
if (sel1 == 2)
{
if(car == 1)
{
g1 = 3;
g2 = 2;
}
if (car == 2);
{
g1 = 1;
g2 = 3;
}
if (car == 3);
{
g1 = 1;
g2 = 2;
}
}
if (sel1 == 3)
{
if(car == 1)
{
g1 = 2;
g2 = 3;
}
if (car == 2);
{
g1 = 1;
g2 = 3;
}
if (car == 3);
{
g1 = 1;
g2 = 2;
}
}
printf("Behind door %d is a goat\n",g1);
return 0;
}
Appetintly我没有足够的细节,所以忽略这个即时通讯只是增加一些随机的细节。在初等数学中,变量是表示数字的字母字符,称为变量的值,可以是任意的,不完全指定的或未知的。
我注意到你不指定的话sel1==0
你spesified它sel1>3
和sel1==3
和sel1==2
和sel1==1
和sel1<0
应该发生什么,但你不指定的话sel1==0
我想,如果SEL1是G1不改0,但是改变,否则 可能像下面
scanf ("%d ",&sel1);
输入SEL1当条件后,你应该把一个空间并删除;
if(car==2)
和if(car==3)
您是否阅读过bluepix的评论?你明白吗? –
是@PeterA。Schneider –
我问,因为未指定的sel1 == 0不是'printf'格式中缺少的空格是OP程序无法运行的原因。它是空的,如果块。 –
首先,如@BLUEPIXY建议,您应该删除;
。
我会改变前两个SEL1条件仅有一个,比如这个:
if (sel1 < 1 || sel1 > 3)
printf("Invalid selection!\n");
然后我会用一个switch
情况和if
声明:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int car;
int g1;
int g2;
int sel1;
unsigned int iseed = (unsigned int)time(NULL);
srand(iseed);
g1 = 0;
car = rand() % 3 + 1;
printf("Car= %d\n", car);
printf("Select a door beetween 1 and 3:\n");
scanf("%d", &sel1);
if (sel1 < 1 || sel1 > 3)
printf("Invalid selection!\n");
switch (sel1)
{
case 1:
if (car == 1)
{
g1 = 2;
g2 = 3;
}
else if (car == 2)
{
g1 = 3;
g2 = 1;
}
else if (car == 3)
{
g1 = 2;
g2 = 1;
}
break;
case 2:
if (car == 1)
{
g1 = 3;
g2 = 2;
}
else if (car == 2)
{
g1 = 1;
g2 = 3;
}
else if (car == 3)
{
g1 = 1;
g2 = 2;
}
break;
case 3:
if (car == 1)
{
g1 = 2;
g2 = 3;
}
else if (car == 2)
{
g1 = 1;
g2 = 3;
}
else if (car == 3)
{
g1 = 1;
g2 = 2;
}
break;
}
printf("Behind door, %d is a goat\n", g1);
getchar();
getchar();
return 0;
}
例子:
'if(sel1 3)'只允许有三种可能性。应该是'if(sel1 3)' –
我已经编辑了答案。谢谢! –
非常感谢Cecho这个完美的作品。 –
'if(car == 2);':Remove ';' – BLUEPIXY
一般来说,调试会很好。使用Visual Studio,在那里很容易。如果你在linux上,使用gdb,但对于初学者来说这很难。 (尽管如此。)但是,你总是可以分散'printf'并在这么小的一段代码中看到控制流。 (bluepix是对的,你明白为什么吗?) –
程序是*不是数学世界。它有一些*改变*内部状态。阅读关于[语义](https://en.wikipedia.org/wiki/Semantics_(computer_science)) –