как работает оператор break во внутреннем цикле? - PullRequest
0 голосов
/ 26 апреля 2018

Я новичок в языке Си. Пожалуйста, помогите мне. Как оператор break работает между внутренним циклом и внешним циклом? Если я использую оператор break в этом случае, какой цикл будет завершен?

    #include<stdio.h>
    main(){
      int arr[67778], i, j, k, min, max, n, count = 0;
      scanf("%s"`enter `enter code here`code here`, &arr);
      n = strlen(arr);
      for(j = 0; j < n; j++){
        for(i = 1; i< n; i++){
          if(arr[j] == arr[j]){
            count++;
          }
          else break;
        }
        count = 0;
      }
      if(count >= 6){
        printf("Yes\n");
      }
      else printf("No\n");
   }

С помощью этой программы я просто хочу напечатать «ДА», если есть 7 входов с одинаковыми символами, иначе НЕТ должно быть напечатано. пожалуйста, помогите мне

1 Ответ

0 голосов
/ 21 мая 2018

Чтобы ответить на ваш основной вопрос, функция break позволит коду разрываться в середине цикла, например while, for, until и т. Д. Он предоставляет программистам способ остановить свой код, если выполняется условие, требующее остановки цикла. break только разрывает цикл, который в настоящее время находится в области видимости.

Однако на практике использование прерывания не рекомендуется, так как существуют другие структуры циклов, которые могут выполнить любую задачу, которую вы ищете, более безопасным и более понятным способом. Если вам нужно остановить цикл , пока в цикле, используйте , пока (или до, или что-то еще). Вставляйте разрывы в код только в том случае, если это абсолютно необходимо, что, если вы не запускаете ассемблерный код, будет очень небольшим числом вариантов использования.

~~~~~~~~~~~~~~~~

Что касается другого слона в комнате, C - это язык, с которым вы можете делать все, что угодно, и он идет только настолько, насколько вы готовы испачкать руки в отношении указателей и обработки памяти. Я весьма предлагаю ознакомиться с указателями, обработкой памяти, аргументами и общим дизайном программы, поскольку код, который вы изначально передали, был довольно мизерным. Мы все должны писать плохой код один раз в нашей жизни, чтобы стать лучшими программистами. Также ниже приведен код, который будет читать входные данные, переданные ему (в командной строке), и искать несколько повторяющихся символов этого переданного ввода.

int main( int argc, char *argv[] )
{
    // Check to see if no arguments were passed to program. 
    // Remember, argv[0] is the program you are calling
    if (argc < 2)
    {
        printf("You need to specify some input for this to work.\n");
        return; // End program early
    }
    int i = 0; // Loop control
    int count = 0; // Repetitive char count. After init, it will be set to 1
    char check = *(argv[1] + i); // Store the first character to check
    // argument's character not null and char sequence less than 7
    while (*(argv[1] + i) != 0 && count < 7)
    {
        // The last character is the same as the current one
        if (check == *(argv[1] + i))
        {
            count++; // Increment count. 
        }
        else
        {
            count = 1; // Reset count and try again.
            check = *(argv[1] + i); // Store a character to check
        }
        i++;
    }
    char* result = !(count < 7) ? "yes" : "no"; // Boolean for yes or no
    printf("%s\n", result);
    return 0;
}
...