C程序不进入循环内部以猜测数字

时间:2016-11-19 15:46:46

标签: c loops switch-statement

我已经为计算机编写了以下代码来猜测我的数字是什么,我在这里使用了switch case语句,这里面是do while循环。

当我尝试运行程序时,程序不会进入我的循环,我不知道如何解决它,有人可以帮我吗?

#include<stdio.h>

void main()

{

printf("\n Grenze 1 - Obergrenze. ");

int min=1;

int max;

printf("\n Was ist Obergrenze? ");

scanf("%i",max);

int try=max;

int correct;

int input,i=0;


do{

    correct=max/2;
    printf("Low(1) High(2) oder Correct(3)? \n >");
    start: 
    scanf("%i",input);
    i++;
    switch (input)
    {
       case(1):
       {
        min=min;
        max=max/2;
       } break;


        case(2):
        {
        min=max/2;
        max=max;

        }break;

        case(3):
        {

        goto gotcha;
        }break;

        default:
        {
        printf("\n >");
        goto start;
        }break;

    }



}
while(i<try);



gotcha:

printf("\n Wieder gewonnen!!! Versuche - %i",i);

}

1 个答案:

答案 0 :(得分:0)

您正在调用未定义的行为,方法是在scanf("%i",max);中传递非指针并使用具有自动存储持续时间的未初始化变量的值,这是不确定的。

同样的问题出在scanf("%i",input);

使用一元&运算符将地址传递到类似scanf("%i",&max);scanf("%i",&input);的数据。

另请注意,您应该在托管环境中使用标准int main(void)而不是void main(),这在C89中是非法的,在C99或更高版本中是实现定义的,除非您有一些特殊原因要使用非标准签名。