Реферат: Массивы 2
Функція strcmpO порівнює рядки si і s2 і повертає значення О, якщо рядки однакові, тобто містять одне і те ж число однакових символів. Під порівнянням рядків ми розуміємо порівняння в лексикографічному значенні, так як це відбувається, наприклад, в словнику. Звичайно, в функції відбувається посимвольне порівняння кодів символів. Код першого символа одного рядка порівнюється з кодом символа другого рядка. Якщо вони однакові, розглядаються другі символи тощо. Якщо зі лексикографічно (в значенні словника) більше s2, то функція strcmpO повертає додатне значення, якщо менше -від'ємне значення.
Виклик функції strlen() має вигляд
strlen(s) ;
Функція strlen() повертає довжину рядка з, при цьому завершальний нульовий байт не враховується. Виклик length("Hello") поверне
значення 5.
Розглянемо застосування цієї функції для обчислення довжини рядка, що вводиться з клавіатури.
#include <stdio.h>
#incl ude <string . h > m а і n () { char s(80], printf( "Введіть рядок:");
gets(s);
printf( "Рядок\п%з\п має довжину %d символів \n", s, strlen(s)); }
ДВОВИМІРНІ МАСИВИ
Як ми вже зазначали, мова С допускає багатовимірні масиви, найпростішою формою яких е двовимірний масив (two-dimentional array). Можна сказати, що двовимірний масив - це масив одновимірних масивів .
Двовимірний масив int a[3][4] можна подати у вигляді таблички:
Другий індекс |
Перший індекс
а[0] [0] | а[0][1] | а[0][2] | а[0] [3] |
а[1] [0] | а[1][1] | а[1][2] | а[1][3] |
а[2][0] | а[2] [1] | а[2][2] | а[2] [3] |
Перший індекс - номер рядка, другий індекс - номер стовпця. Кількість байт пам'яті, яке необхідне для зберігання масиву, обчислюється по формулі
Кільк.байтів = <розмір типу даних>*<кільк.рядків>*<кільк.ствпців>.
У пам'яті комп'ютера масив розташовується безперервно по рядках, тобто а[0][0], а[0][1], а[0][2], а[0][3], а[1][0], а[1][1], а[1] [2], а[2] [1],. ... а[2] [3] .
Потрібно пам'ятати, що пам'ять для всіх масивів, які визначені як глобальні, відводиться в процесі компіляції і зберігається весь час, поки працює програма.
Часто двовимірні масиви використовуються для роботи з таблицями, що містять текстову інформацію. Також дуже часто використовуються масиви рядків.
ІНІЦІАЛІЗАЦІЯ МАСИВІВ
Дуже важливо уміти ініціалізувати масиви, тобто привласнювати елементам масиву деякі початкові значення. У мові С для цього є спеціальні можливості. Самий простий спосіб ініціалізації наступний: в процесі оголошення масиву можна указати в фігурних дужках список ініціалізаторів:
float а[6]={1.1, 2.2, 3.3, 4.0, 5, 6};
В іншому випадку така форма запису еквівалентна набору операторів:
а[0]=1.1; а[1]=2.2; ... а [5] =6.
Багатовимірні масиви, в тому числі і двовимірні масиви, можна ініціалізувати, розглядаючи іх як масив масивів.
Ініціалізації int а[3][5]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
і int а[3][5]={{1,2,3,4,5}, {6,7,8,9,10}, {11,12,13,14,15}};
еквівалентні.
Кількість ініціалізаторів не зобов'язана співпадати з кількістю
елементів масиву. Якщо ініціалізаторів менше, то значення решти
елементів масиву не визначені.
У той же час ініціалізації
int а[3][5]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11);
і
int а[3][5]={{1, 2, 3}, {4, 5, 6, 7, 8}, {9, 10, 11}};
різні.
//change strings: 1-6, 2-5, 3-4
#i nclude<std io. h >
void mai n()
{ int temp, i, j, a[6][4]={1,2,3,4,
5,6,7,8,
9,10,11,12,
1 3,14,1 5,16,
17,18,19,20,
21 ,22,23,24};
for (i=0;i<3;i++) for (j=0;j<4;j++)
{ temp=a[i][j]; a[i][j]=a[5-i][j]; a[5-i][j]=temp; } for (i=0; i<6; i++)