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

Д. МАРТИН

Шрифт:

/* непринужденный разговор */

# define DENSITY 62 4 /* плотность тела человека в фунтах на кубический фут */

main /* любопытствующая программа*/

{

float weight, volume;

int size, letters;

char name [40]; /* или попробуйте "static char name [40], */

printf(" Привет! Как вас зовут?\n" );

scanf(" %s" , name);

printf("%s, Каков ваш вес в фунтах?\n", name);

scani("%f", &weight);

size = sizeof name;

letters = strlen (name);

volume = weight/DENSITY;

printf(" Прекрасно, %s, ваш объем %2 2f кубических фута.\n", name, volume);

printf(" Кроме того, ваше имя состоит из %d букв,\n", letters);

printf(" и для его размещения в памяти у нас есть %d байт.\n", size);

}

Результат работы программы "непринужденный разговор" может, например, выглядеть следующим образом:

Привет ! Как вас зовут?

Анжелика

Анжелика Каков ваш вес в фунтах?

102,5

Прекрасно, AНЖЕЛИКА ваш объем 1,64 кубических фута

Кроме того, ваше имя состоит из 8 букв

и для его размещения в памяти у нас есть 40 байт

Перечислим основные новые черты этой программы:

1. Мы использовали "массив" для хранения "символьной строки" - в данном случае для некоторого имени.

2. При вводе и выводе строки была использована "спецификация преобразования" %s.

3. Для определения символической константы DENSITY был использован препроцессор языка Си.

4. Для нахождения длины строки была использована функция strlen.

СИМВОЛЬНЫЕ СТРОКИ - ВВЕДЕНИЕ

"Символьная строка" - это последовательность, состоящая из одного или более символов В качестве примера рассмотрим следующую строку:

"Строки изливались прямо из сердца!"

Кавычки не являются частью строки. Они вводятся только для того, чтобы отметить ее начало и конец, т.е. играют ту же роль, что и апострофы в случае одиночного символа.

В языке Си нет специального типа, который можно было бы использовать для описания строк Вместо этого строки представля ются в виде "массива" элементов типа char. Это означает, что символы в строке можно представить себе расположенными в со седних ячейках памяти - по одному символу в ячейке (рис. 41).

РИС. 4. 1. Строка как массив ячеек

Необходимо отметить, что на рисунке последним элементом массива является символ \0. Это "нуль-символ", и в языке Си он используется для того, чтобы отмечать конец строки Нуль-символ - не цифра 0; он не выводится на печать и в таблице кода ASCII имеет номер 0. Наличие нуль-символа означает, что количество ячеек массива должно быть по крайней мере на одну больше, чем число символов, которые необходимо размещать в памяти.

Ну, а теперь спросим, что такое массив? Массив можно пред ставить себе как совокупность нескольких ячеек памяти, объединен ных в одну строку Если вы предпочитаете более формальные и строгие определения, то массив - это упорядоченная последова тельность элементов данных одного типа В нашем примере мы создали массив из 40 ячеек памяти, в каждую из которых можно по местить один элемент типа char. Мы осуществили это с помощью оператора описания

char name [40];

Квадратные скобки указывают, что переменная name– массив, 40 - число его элементов, a char задает тип каждого элемента. (В комментариях к программе было отмечено, что при желании вы можете воспользоваться более сложным оператором описания):

static char name [40],

Ввиду некоторой специфики, связанной с реализацией функции scanf в нашей системе, мы вынуждены использовать эту вторую

 

  • Читать дальше
  • 1
  • ...
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • ...

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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