Разобраться с программой со Switch - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Не могу понять,как работает программа. Был бы рад,если бы кто-то объяснил,что при выборе каждого элемента будет происходить..
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
int i,c;
char input[]="tratata2\3\141ZW\1hopa";
for(i=2;(c=input[i])!='\0';i++)
{
switch(c) {
case 'a': putchar('i'); continue;
case '2': break;
case   1:
case  3 :  putchar('A');break;
case  141 : putchar('B');
case 'E': case 'K' : continue;
default : putchar(c); continue;
}
putchar('_');
}
putchar('\n');
getchar();
}

Решение задачи: «Разобраться с программой со Switch»

textual
Листинг программы
for(i=0;(c=input[i])!='\0';i++)
{
 
switch(c) {
case 'a': putchar('i'); continue;// если считывается символ 'a', т.е. коды совпали, то выводит 'i' и проскакиваются оставшиеся операторы цикла
case '2': break;// если с читывается '2' то происходит прерывание работы switch
case   1:// если считывается 1, то срабатывает case  3 , выводится 'A',происходит прерывание работы switch, и вывод '_'
case  3 :  putchar('A');break;// если считывается 3, то выводится 'A'
case  141 : putchar('B');// если полученный символ есть 'H', то выводится 'B'
case 'E': case 'K' : continue;// если получаем 'E' или 'K' то просто проскакиваем итерацию
default : putchar(c); continue;// если ввели что то, отличное от того, что ранее описано, то выводим полученный символ на экран и проскакиваем операторы, расположенные ниже
}
putchar('_');//сюда добераемся только в случае, если попали в ветвь с break
}

Объяснение кода листинга программы

  1. for(i=0;(c=input[i])!='\0';i++) - это цикл, который читает символы из входного массива input до тех пор, пока не встретит символ '\0'. Переменная i используется для отслеживания индекса текущего символа, а c - для хранения текущего символа.
  2. switch(c) { - это оператор switch, который проверяет, какой код соответствует текущему символу c.
  3. case 'a': putchar('i'); continue; - если текущий символ c равен 'a', то выводится символ 'i' и выполнение программы переходит к следующей итерации цикла (за счет оператора continue).
  4. case '2': break; - если текущий символ c равен '2', то выполнение программы прерывается и переходит к следующей итерации цикла (за счет оператора break).
  5. case   1: putchar('A'); break; - если текущий символ c равен 1, то выводится символ 'A' и выполнение программы прерывается и переходит к следующей итерации цикла (за счет оператора break).
  6. case  141: putchar('B'); - если текущий символ c равен 141 (или 'B'), то выводится символ 'B'.
  7. case 'E': case 'K': continue; - если текущий символ c равен 'E' или 'K', то выполнение программы прерывается и переходит к следующей итерации цикла (за счет оператора continue).
  8. default: putchar(c); continue; - если текущий символ c не соответствует ни одному из предыдущих случаев, то он выводится на экран и выполнение программы прерывается и переходит к следующей итерации цикла (за счет оператора continue).
  9. putchar('_'); - выводится символ '_'. Это происходит только в том случае, если выполнение программы достигло оператора break. Пожалуйста, обратите внимание, что порядок и количество элементов в списке могут быть изменены в зависимости от конкретного ввода.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.714 из 5