Содержание
-
Использование массивов
-
Определение массива
Массив – это линейный тип данных или последовательность ячеек памяти одинакового типа. Массивы используются практически в любой программе. Массивы могут быть одномерными, двумерными и многомерными. Одномерные массивы соответствуют строке, двумерные – матрице.
-
Объявление массивов
При объявлении массива указывают тип его элементов и в квадратных скобках размер массива. Для одномерного массива объявление запишется в виде: int a[10];
-
Одномерные массивы
Удобно использовать при объявлении массива директиву препроцессора #define: #defineSIZE 10 // определили поименованную константу, задающую размер массива void main() { int a[SIZE]; … }
-
Для доступа к элементу массива указывают в квадратных скобках его номер. При этом следует отметить, что в языке С индексация элементов массива начинается с нуля. То есть для инициализации первого элемента массива единицей необходимо записать оператор: a[0]=1;
-
Для работы с массивами обычно используют цикл for. Инициализировать массив можно разными способами. Если требуется можно инициализировать элементы массива сразу после объявления: int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
-
Можно заполнить элементы массива непосредственно в программе: int a[10]; a[5] = 5; for (int i=0; i
-
Инициализация одномерного массива пользователем запишется в виде: int a[10]; for (int i=0; i
-
Примеры
Рассмотрим пример нахождения количества отрицательных элементов массива. int a[10], count=0; … for (int i=0; i
-
Пример нахождения суммы отрицательных элементов массива. int a[10], sum=0; … for (int i=0; i
-
Пример нахождения минимального элемента массива и его индекса. int a[10], min, mini; … min=a[0]; for (inti=1; i
-
Использование многомерных массивов
При создании двухмерного массива после его имени ставится два значения – количество строк и столбцов: inta[10][12];
-
Многомерные массивы инициализируются так же, как и одномерные. В следующем примере массив sqrs инициализируется числами от 1 до 10 и их квадратами: intsqrs[10][2] = { 1, 1, 2, 4, 3, 9, 4, 16, 5, 25, 6, 36, 7, 49, 8, 64, 9, 81, 10, 100 };
-
Далее на примере показаны инициализация элементов двухмерного массива. int a[10][20]; for (int i=0; i
-
for (int i=0; i
-
for (i=0; i
-
Алгоритм сортировки пузырьком
6 2 7 3 1 5 flag=0, i=0: 2 6 7 3 1 5, flag=0 flag=0, i=1: 2 67 3 1 5 flag=0, i=2: 26 3 7 1 5, flag=1 flag=1, i=3: 26 3 1 7 5, flag=1 flag=1, i=4: 26 31 5 7, flag=1 flag=0, i=0: 2 6 31 5 7 flag=1 flag=1 flag=0, i=1: 2 3 6 1 5 7, flag=1 flag=1, i=2: 2 3 1 6 5 7, flag=1 flag=1, i=3: 2 31 56 7, flag=1 flag=1, i=4: 2 31 5 6 7, flag=1 flag=1 flag=0, i=0: 2 3 1 5 6 7, flag=0 flag=0, i=1: 2 13 5 6 7, flag=1
-
Сортировка методом пузырька
-
Результат работы
srand(4);for (int i=0; i
-
Функция srand() устанавливает исходное число для последовательности, генерируемой функцией rand(). (Функция rand() возвращает псевдослучайные числа.) Часто функция srand() используется, чтобы при различных запусках программа могла использовать различные последовательности псевдослучайных чисел, — для этого она должна задавать различные исходные числа. Кроме того, с помощью функции srand() можно многократно генерировать одну и ту же последовательность псевдослучайных чисел, — для этого нужно задавать в качестве исходного числа одно и то же значение. Иными словами, чтобы многократно генерировать одну и ту же последовательность псевдослучайных чисел, нужно вызывать данную функцию с одним и тем же значением параметра seed до начала генерации этой последовательности.
-
Функция rand() генерирует последовательность псевдослучайных чисел. При каждом обращении к функции возвращается целое в интервале между нулем и значением RAND_MAX, которое в любой реализации должно быть не меньше числа 32 767.
-
Символьные строки
-
Строковые константы
Строковая константа – это последовательность символов кода ASCII, заключённая в кавычки "..." и имеющая тип char. Примеры: char str="This is character string" char str1="Это строковая константа" char str2="A" char str3="1234567890" char str4="0" char str5="$" В конце каждой строки компилятор помещает нулевой байт '\0', отмечающий конец данной строки
-
Каждая строковая константа, даже если она идентична другой строковой константе, сохраняется в отдельном месте памяти Если необходимо ввести в строку символ кавычек ("), то перед ним надо поставить символ (\) В строку могут быть введены любые специальные символьные константы, перед которыми стоит символ \. При этом символ \ и следующий за ним символ новой строки игнорируется Строковые константы размещаются в статической памяти. Вся фраза в кавычках является указателем на место в памяти, где записана строка. Это аналогично использованию имени массива, служащего указателем на расположение массива.
-
/* Строки в качестве указателей */ main( ) { printf("%s, %u, %c\n", "We", "love“,*"Pascal"); } В примере, формат %s выводит строку We. Формат %u выводит целое без знака. Если слово "love" является указателем, то выдается его значение, являющееся адресом первого символа строки. Наконец, *"Pascal" должно выдать значение, на которое ссылается адрес, т.е. первый символ строки "Pascal". Вот что выдаст программа: We, 34, P
-
Массивы символьных строк и их инициализация
При определении массива символьных строк необходимо сообщить компилятору требуемый размер памяти Первый способ - инициализация массива при помощи строковой константы Например: charm1[]="Только ограничьтесь одной строкой."; Здесь оператор инициализировал внешний по умолчанию массив m1 для указанной строки
-
char m1[ ]={ 'T','o','л','ь','k','o',' ','o','г'','p','a','н','и','ч','ь','т','e','c','ь',' ',o','д','н','o','й',' ','c','т','p','o','k','o','й','.','\0' }
-
Без символа ‘\0’мы имеем массив символов, а не строку. Для той и другой формы компилятор подсчитывает символы и таким образом получает размер памяти. Как и для других массивов, имя m1 является указателем на первый элемент массива: m1==&m1[0] *m1=='T', и *(m1+1)==m1[1]=='o’ * - оператор разыменования & - оператор взятия адреса
-
Функции ввода-вывода строк
-
Чтение и запись строк
Функция gets() читает строку символов, введенную с клавиатуры, и записывает ее в память по адресу, на который указывает ее аргумент char *gets(char *cmp); Здесь cmp - это указатель на массив символов, в который записываются символы, вводимые пользователем, gets() также возвращает cmp. Функция puts() отображает на экране свой строковый аргумент, после чего курсор переходит на новую строку. Вот прототип этой функции: intputs(constchar *cmp);
-
Пример использования
Следующая программа читает строку в массив strи выводит ее длину: #include #include int main(void) { char str[80]; gets(str); printf("Длина в символах равна %d", strlen(str)); puts(str); return 0; }
-
Функции для обработки строк
Для выполнения описанных в этом подразделе функций необходимо подключить файл string.hкомандой #include
-
-
Пример 1:
/* сцепить две строки */ #include #include #include int main(void) { char destination[25]; char *blank = " ", *c = "C++", *turbo = "Turbo"; strcpy(destination, turbo); strcat(destination, blank); strcat(destination, c); printf("%s\n", destination); getch(); return 0; }
-
char destination[25]; char blank[10], c[10], turbo[10]; printf ("введите строку"); gets(blank); gets(c); gets(turbo); strcpy(destination, turbo); strcat(destination, blank); strcat(destination, c); puts(destination); getch(); return 0; }
-
Пример 2:
/* cцепить две строки, причем из второй строки копировать не более n символов*/ #include #include #include int main(void) { char destination[25]; char *source = "structured "; strcpy(destination, "programming"); strncat(destination, source, 11); printf("%s\n", destination); getch(); return 0; }
-
int main(void) { char *buf1 = "aaabbb", *buf2 = "bbbccc", *buf3 = "ccc"; intptr; clrscr(); ptr =; if (strncmp(buf2,buf1,3)> 0) printf("buffer 2 is greater than buffer 1\n"); else printf("buffer 2 is less than buffer 1\n"); ptr = strncmp(buf2,buf3,3); if (ptr > 0) printf("buffer 2 is greater than buffer 3\n"); else printf("buffer 2 is less than buffer 3\n"); getch(); return(0); }
-
#include #include #include int main(void) { char string[20]; char *ptr, c = 'r'; strcpy(string, "This is a string"); ptr = strchr(string, c); if (ptr) printf("The character %c is at position: %d\n", c, ptr); else printf("The character was not found\n"); getch(); return 0; }
Нет комментариев для данной презентации
Помогите другим пользователям — будьте первым, кто поделится своим мнением об этой презентации.