Разобраться с программой со 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 }
Объяснение кода листинга программы
for(i=0;(c=input[i])!='\0';i++)
- это цикл, который читает символы из входного массиваinput
до тех пор, пока не встретит символ '\0'. Переменнаяi
используется для отслеживания индекса текущего символа, аc
- для хранения текущего символа.switch(c) {
- это операторswitch
, который проверяет, какой код соответствует текущему символуc
.case 'a': putchar('i'); continue;
- если текущий символc
равен 'a', то выводится символ 'i' и выполнение программы переходит к следующей итерации цикла (за счет оператораcontinue
).case '2': break;
- если текущий символc
равен '2', то выполнение программы прерывается и переходит к следующей итерации цикла (за счет оператораbreak
).case 1: putchar('A'); break;
- если текущий символc
равен 1, то выводится символ 'A' и выполнение программы прерывается и переходит к следующей итерации цикла (за счет оператораbreak
).case 141: putchar('B');
- если текущий символc
равен 141 (или 'B'), то выводится символ 'B'.case 'E': case 'K': continue;
- если текущий символc
равен 'E' или 'K', то выполнение программы прерывается и переходит к следующей итерации цикла (за счет оператораcontinue
).default: putchar(c); continue;
- если текущий символc
не соответствует ни одному из предыдущих случаев, то он выводится на экран и выполнение программы прерывается и переходит к следующей итерации цикла (за счет оператораcontinue
).putchar('_');
- выводится символ '_'. Это происходит только в том случае, если выполнение программы достигло оператораbreak
. Пожалуйста, обратите внимание, что порядок и количество элементов в списке могут быть изменены в зависимости от конкретного ввода.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д