c - 变量不改变c

标签 c variables initialization int

嗨,我是一名初级 C 程序员,我正在尝试制作一个过滤器,该过滤器应该根据其他变量来更改变量,但由于某种原因它似乎没有更改变量 g1。我真的很感谢我能得到的任何帮助,因为我现在被困在这里。谢谢

#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;
}

显然我没有足够的细节,所以忽略这个我只是添加一些随机细节。在初等数学中,变量是表示数字的字母字符,称为变量的值,该值可以是任意的、未完全指定的或未知的。

最佳答案

首先,正如 @BLUEPIXY 建议的那样,您应该删除 ;

我将更改前两个 sel1 条件以仅设置一个,如下所示:

if (sel1 < 1 || sel1 > 3)
    printf("Invalid selection!\n");

然后我将使用 switch case 和 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;   
}

示例:

enter image description here

关于c - 变量不改变c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46017803/

相关文章:

c - 在系统调用包装器中查找进程的进程 ID

c - 用于所有分配变量名的空间

javascript - 数组变量中的 .length 属性是什么意思

java - Play框架,for循环内的动态语句

java - 最终变量和匿名类的变量可能尚未初始化

c++ - 为什么在同一个类上使用不同的(shared_ptr 和普通)指针构造函数会得到不同的结果?

c - 数组的值和地址是相同的,除了传递给函数时?

c - 在 linux C 中使用 Pthread 进行数组分区

c - 海湾合作委员会错误 : two or more data types in declaration specifiers

c++ - 在构造函数中引用未初始化的对象