Руководство полного чайника по программированию на языке Си

       

Тип переменных для хранения БУКВ


/* Тип переменных для хранения БУКВ называется

char

(от слова character).

Буквы изображаются в одиночных кавычках 'a' 'b' '+'.

Пример: char letter;

letter = 'a'; putchar(letter); letter = 'b'; putchar(letter); letter = '\n'; putchar(letter);

Символ '\n' обозначает "невидимую букву" - переход на новую строку, new line. Есть несколько таких специальных букв, о них - позже.

Зато сразу сделаем оговорку. Чтобы изобразить саму букву \ следует использовать '\\'

putchar('\'); или printf ("\"); ошибочны.

Надо: putchar('\\'); printf("\\");

Дело в том, что символ \ начинает последовательность из ДВУХ букв, изображающих ОДНУ букву, иногда вызывающую специальные действия на экране или на принтере. */

/* Число делится на n, если ОСТАТОК от деления его на n равен 0, то есть если

(x % n) == 0



В частности, так можно проверять числа на четность/нечетность, беря x%2.

Остатки от деления числа x на n это 0 1 2 ... n-1. В случае деления на 2 остаток 0 соответствует четному x 1 соответствует нечетному x

*/

/* Задача: Нарисовать треугольник из звездочек в нечетных строках из плюсиков в четных строках *--------------------------------------------------------*

Решение: используем прежнюю программу, добавив в функцию drawOneLine еще один аргумент - symbol - каким символом рисовать строку.

Далее в основном цикле используем условный оператор и проверку номера строки на четность.

*/

#include

void drawOneLine(int nspaces, int nsymbols, char symbol){ int i; /* счетчик */

for(i=0; i < nspaces; i++) putchar(' '); for(i=0; i < nsymbols; i++) putchar(symbol); putchar('\n'); }

/* Мы вынесем объявление этой переменной из функции, сделав ее "глобальной", то есть видимой во ВСЕХ функциях. */ int LINES = 25; /* всего строк. */

void main(){ /* ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ */ int nline; /* номер строки */

/* ВЫПОЛНЯЕМЫЕ ОПЕРАТОРЫ (ДЕЙСТВИЯ) */ for(nline=0; nline < LINES; nline++){

if((nline % 2) == 0) /* четное ? */ drawOneLine(LINES - nline - 1, nline*2 + 1, '+'); else drawOneLine(LINES - nline - 1, nline*2 + 1, '*'); } }



Содержание раздела