Вход/Регистрация
Язык Си - руководство для начинающих
вернуться

Д. МАРТИН

Шрифт:

#include

 main

{

int ch;

int linecount = 0;

int charcount = 0;

while((ch = getchar) != EOF)

{

charcount ++ ;

if(ch == '\n' ) linecount++ ;

}

printf(" Я насчитала %d символов и %d строк.\n", charcount, linecount);

}

Теперь в цикл while входят два оператора; поэтому мы использовали фигурные скобки, чтобы отметить начало и конец тела цикла.

Мы вызываем скомпилированную программу Icc и используем операцию переключения, чтобы подсчитать число символов и строк в файле с именем chow.

Ice <chow Я насчитала 8539 символов и 233 строки

Следующий шаг в "развитии" этой программы - придание ей способности подсчитывать число слов. Это лишь немного труднее того, что мы делали до сих пор, но сначала нам нужно изучить ряд дополнительных вопросов, связанных с использованием операторов if.

РАСШИРЕНИЕ ОПЕРАТОРА if С ПОМОЩЬЮ else

Простейшей формой оператора if является та, которой мы только что воспользовались:

if(выражение)оператор

Обычно под выражением здесь понимают условное выражение, с его помощью сравниваются значения двух величин (например x > y или c == 6). Если такое выражение истинно (x больше у или c равно 6), то оператор выполняется. В противном случае он пропускается. Вообще говоря, в качестве условия может быть использовано любое выражение, и если его значение равно 0, то оно считается ложным– дальнейшие детали мы обсудим чуть позже. Оператор может быть простым, как в нашем примере, или составным (блоком), начало и конец которого отмечены фигурными скобками:

if (score > big) printf(" Полная победа!\n"); /* простой оператор */

 if (jое > rоn) /* составной оператор */

{

joecash + + ; printf(" Ты проиграл, Рон.\n");

}

Простая форма оператора if позволяет выбрать оператор (возможно, составной) или пропустить его. Язык Си предоставляет также возможность выбрать любой из двух операторов путем использования конструкции if-else.

Выбор: конструкция if-else

В предыдущей главе мы привели очень простую программу шифровки сообщений, которая заменяла каждый символ следующим по порядку в таблице ASCII. К сожалению, она заменила даже символ "новая строка", что привело к объединению нескольких строк в одну. Можно исключить эту проблему, написав программу, реализующую простой выбор: если символ - "новая строка", то оставить его без изменений, в противном случае преобразовать его. Вот как это можно запрограммировать на языке Си:

/* код1 */

#include

 main

{

char ch;

while((ch = getchar) != EOF)

 {

if(ch =='\n' ) /* оставить символ */

putchar(ch); /* "новая строка" неизменным */

else

putchar(ch + 1); /* заменить остальные символы */

}

}

В прошлый раз был использован файл, содержащий следующий текст:

Good spelling is an aid to clear writing.

Его использование в качестве теста для нашей новой программы приводит к результату:

Ура! Она работает!

Между прочим, совсем несложно написать и программу дешифровки. Скопируйте для этого программу код1, но только замените выражение (ch + 1) на (ch - 1).

Вы обратили внимание на общий вид оператора if-else. Он выглядит следующим образом:

if (выражение)оператор

 else

оператор

Если выражение истинно, то выполняется первый оператор, а если ложно, то выполняется оператор, следующий за ключевым словом else. Операторы могут быть простыми или составными. Правила языка Си не требуют отступа в строке, но это стало обычной практикой. Отступ позволяет с первого взгляда заметить те операторы, выполнение которых зависит от проверяемого условия.

  • Читать дальше
  • 1
  • ...
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • ...

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

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: