Heim > Fragen und Antworten > Hauptteil
Ich weiß nicht, wo ich einen Fehler gemacht habe, bitte geben Sie mir einen Hinweis. Ich habe mir das schon lange angesehen und denke, dass es ein Problem mit den Klammern ist, aber ich weiß nicht, wie ich es ändern kann
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
main()
{
int rollDice();
void delay();
int i,result = 0 ,result1 = 0;
printf("Game Start!!!!\n");
result = rollDice();
printf("%d\n",result);
delay();
if ((result == 7 )||(result == 11))
{printf("Y\n");break;}
else if ((result == 2) || (result == 3)|| (result == 12))
{printf("N\n");}
else
printf("C\n");
for (i = 0;i<7;i++)
{result1 = rollDice();
printf("%d\n",result1);
if (result1==result)
{printf("Y\n");break;}
else if ((result1!=result)&&(i==6))
printf("N\n");
}
return 0;
}
int rollDice()
{
void delay();
int a,b,c;
srand((unsigned)time(NULL));
a= rand()%6 + 1;
delay();
b= rand()%6 + 1;
c = a + b;
return c;
}
void delay()
{
long t;
for (t=0;t<50000000;t++)
{
}
}
巴扎黑2017-06-22 11:55:37
第一个break使用不恰当,必须在循环里面才能使用break。第二个break就可以。建议你代码格式统一,有花括号就统一加花括号。代码改成这样:
int rollDice();
void delay();
int i,result = 0 ,result1 = 0;
printf("Game Start!!!!\n");
result = rollDice();
printf("%d\n",result);
delay();
if ((result == 7 )||(result == 11))
{printf("Y\n");}
else if ((result == 2) || (result == 3)|| (result == 12))
{printf("N\n");}
else
{printf("C\n");}
for (i = 0;i<7;i++)
{result1 = rollDice();
printf("%d\n",result1);
if (result1==result)
{printf("Y\n");break;}
else if ((result1!=result)&&(i==6))
printf("N\n");
}
return 0;
三叔2017-06-22 11:55:37
break语句有两种用途:
1.用于switch语句中,从中途退出switch语句。
2.用于循环语句中,从循环体内直接退出当前循环。
题主的第一个break语句,这两种用法都不属于。
phpcn_u15822017-06-22 11:55:37
你的代码有三处问题:
1,main()函数无返回值类型
2,rollDice()、delay()这两个函数未事先声明就调用
3,break使用错误
以上三点任意一点都足以导致该程序直接报错。
另外,我劝你先打好语言基本功,然后多调试。