2016-10-10 1 views
0

Как сделать Гото заявление с тем, если и другим условием я хочу от пользователя, чтобы принять решение, если он/она хочет startover или неГоты заявление с условием в C

loop1 : 
     printf("how many dagre entering ? \n"); 
     scanf("%d", &NumOfGrade); 

     for (i = 0 ; i < NumOfGrade ; i ++) { 

      printf("\nenter the grade\n"); 
      scanf("%d", &grade); 

      totalGrade += grade ; 

      if (grade < 12) 
      failsCount ++; 
     } 

     ave = (float) totalGrade/NumOfGrade ; 

     printf("the ave of ur grade are : \n"); 
     printf("%.2f\n", ave); 
     printf("%d subj fails\n", failsCount); 

     printf("do you want to startover ? (Y or N) \n"); 
     ans = getchar(); 
     if (ans == 'Y') 
      goto loop1 ; 

Это не собирается Loop1 , и я не могу понять, почему.

+2

Или вы можете использовать конструкцию петли. Например, о, я не знаю, «сделай ... пока»? – StoryTeller

+3

Гото с if отлично. Так что ans не должно быть тем, что вы думаете. Распечатай. Возможно, это так же просто, как и случай. –

+4

Бывают ситуации, когда использование меток и 'goto' в порядке. Вместо цикла это не одна из этих ситуаций. –

ответ

0

вы did't очистить буфер ввода, попробуйте следующее:

loop1 : 
    printf("how many dagre entering ? \n"); 
    scanf("%d", &NumOfGrade); 

    for (i = 0 ; i < NumOfGrade ; i ++) { 

     printf("\nenter the grade\n"); 
     scanf("%d", &grade); 

     totalGrade += grade ; 

     if (grade < 12) 
     failsCount ++; 
    } 

    ave = (float) totalGrade/NumOfGrade ; 

    printf("the ave of ur grade are : \n"); 
    printf("%.2f\n", ave); 
    printf("%d subj fails\n", failsCount); 

    printf("do you want to startover ? (Y or N) \n"); 
    __fpurge(stdin); // clear your input buffer, on window, try fflush(stdin) 
    ans = getchar(); 
    if (ans == 'Y') 
     goto loop1 ; 
+2

'fflush (stdin)' является неопределенным поведением и так же не имеет ничего общего или прекращает работу программы. – StoryTeller

+0

не флеш stdin вот так, предпочитайте какая-то глупая вещь вроде 'while ((c = getchar) == '\ n');' –