我已经为计算机编写了以下代码来猜测我的数字是什么,我在这里使用了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);
}
答案 0 :(得分:0)
您正在调用未定义的行为,方法是在scanf("%i",max);
中传递非指针并使用具有自动存储持续时间的未初始化变量的值,这是不确定的。
同样的问题出在scanf("%i",input);
。
使用一元&
运算符将地址传递到类似scanf("%i",&max);
和scanf("%i",&input);
的数据。
另请注意,您应该在托管环境中使用标准int main(void)
而不是void main()
,这在C89中是非法的,在C99或更高版本中是实现定义的,除非您有一些特殊原因要使用非标准签名。