suchen

Heim  >  Fragen und Antworten  >  Hauptteil

c++ – C-Sprach-Break-Anweisung meldet Fehler

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++)
    {

    }
}
ringa_leeringa_lee2719 Tage vor1501

Antworte allen(4)Ich werde antworten

  • 巴扎黑

    巴扎黑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;

    Antwort
    0
  • 三叔

    三叔2017-06-22 11:55:37

    break语句有两种用途:
    1.用于switch语句中,从中途退出switch语句。
    2.用于循环语句中,从循环体内直接退出当前循环。

    题主的第一个break语句,这两种用法都不属于。

    Antwort
    0
  • phpcn_u1582

    phpcn_u15822017-06-22 11:55:37

    你的代码有三处问题:

    1,main()函数无返回值类型

    2,rollDice()、delay()这两个函数未事先声明就调用

    3,break使用错误

    以上三点任意一点都足以导致该程序直接报错。

    另外,我劝你先打好语言基本功,然后多调试。

    Antwort
    0
  • 迷茫

    迷茫2017-06-22 11:55:37

    break用来在while语句,switch语句,do{}while,for{}豫剧里面,跳出

    不用于在if/else里面跳出

    Antwort
    0
  • StornierenAntwort