Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shpory_si.docx
Скачиваний:
33
Добавлен:
25.09.2019
Размер:
205.61 Кб
Скачать

16. Одномерные массивы.

Массивы – это группа элементов одинакового типа (double, float, int и т.п.). Из объявления массива компилятор должен получить информацию о типе элементов массива и их количестве. Объявление массива имеет два формата:

спецификатор-типа описатель [константное - выражение];

спецификатор-типа описатель [ ];

Описатель – это идентификатор массива.

Спецификатор-типа задает тип элементов объявляемого массива. Элементами массива не могут быть функции и элементы типа void.

Константное-выражение в квадратных скобках задает количество элементов массива. Константное-выражение при объявлении массива может быть опущено в следующих случаях:

- при объявлении массив инициализируется,

- массив объявлен как формальный параметр функции,

- массив объявлен как ссылка на массив, явно определенный в другом файле.

Одномерные массивы

Одномерный массив будет записан как:

тип <имя массива>[размер];

Тип – базовый тип элементов массива.

Размер – количество элементов одномерного массива.

Пример:

int x[] = { 1, 3, 5 };

double b[10]; // вектор из 10 элементов, имеющий тип double

Существует 2 способа описания массивов:

  1. Инициализированный

int x[] = { 1, 3, 5 };

  1. Неинициализированный

double b[10];

int i, mas[10];

for (i=0;i<10;i++)

mas[i]=i;

Ввод элементов массива осуществляется следующим образом:

for (i=0;i<n;i++)

{ printf (“\n a[%d]=,i);

scanf (“%d,&a[i]);}

Задать массив можно с помощью случайных чисел, те автоматическим заполнением массива. Функция RANDOM(K).

Randomize(); //инициализация базы случайных чисел

for (i=0;i<n;i++)

a[i]=random(100);

Вывод элементов массива можно осуществить следующим образом:

for (i=0;i<n;i++)

printf (“a[%d]=%d\t”,i+1,a[i]);

printf(“\n”);

17. Строковый литерал. Чтение и запись строк.

Строковый литерал

В С работа со строками реализована путем использования одномерного массива типа char.

Символьная строка – одномерный массив типа char, заканчивающийся нулевым байтом. Нулевой байт – байт, кождый бит которого равен 0. Для него определена символьная константа ’\0’, т.е. если строка должна содержать n символов, то в описании массива следует указывать n+1 элемент.

Пример:

char str[11];

Строковая константа – последовательность символов, заключенных в ковычки.

Пример:

str = "Строка";

В конце строки не ставится "\0" – это делает компилятор. При инициализации строки символов ее

можно рассматривать как одномерный массив.

char str[] = "Строка";

Можно инициализировать строку через указатель на тип char (присвоить указателю значение строковой константы). При этом не нужно заранее выделять память для строки:

char *p;

p = "строка" или char *p = "Строка";

Чтение и запись строк

1. Функция scanf() со спецификатором ввода %s – вводит символы до первого пробельного символа.

2. Специальная библиотечная функция gets(), объявленная в файле , позволяет вводить строки,

содержащие пробелы. Ввод оканчивается нажатием клавиши Enter.

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

Пример:

main()

{

//объявление трехсимвольных массивов (трех строк), максимальное количество символов 9

char str1[10], str2[10], str3[10];

clrscr(); // очистка экрана

printf("Пример ввода строк разными способами");

// ввод строки с помощью функции gets

printf("Введите строку 1: ");

gets(str1);

// ввод строки с помощью функции scanf

printf("Велите строку 2: ");

scanf("%s", str2);

printf("Введите строку 3: ");

scanf("%s", str3);

}

Вывод строковых данных производится функциями: printf, puts, cout. Данные функции выводят содержание символьного массива до нулевого байта. Также вывод строка можно осуществить с помощью указателя на строку, представляя строку как набор отдельных символов, связанных общим символом.

Тогда строка будет в цикле посимвольно выводиться в помощью функции putchar.

Пример:

// объявление указателя p на строку с инициализацией

char *p = "Hello! ";

/* в цикле while, пока значение указателя не равно концу строки, осуществляется

посимвольный вывод строки с "передвижения" указателя на следующий символ строки */

while (*p! = ’\0’)

putchar(*(p++));

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]