Лекция 3 Массивы и Функции.. Массивы Массив – набор данных, связанных одним именем, расположенных последовательно в памяти. Каждому элементу массива присвоен.

Презентация:



Advertisements
Похожие презентации
Лекция 4 Области видимости и структуры в языке С.
Advertisements

Лекция 2 Функции библиотек языка C. stdio.h Заголовочный файл стандартной библиотеки языка C. Содержит определения констант, объявления функций и типов.
Лекция 2Лекция 2Структура программы Директивы препроцессора main () { Описания переменных Операторы }
Программирование на языке Си Часть II Тема 1. Массивы Учитель информатики: Корогод В.А.
1 Лекция 3 Разработка алгоритмов и программ сверху вниз.
ПРОЦЕДУРЫ И ФУНКЦИИ CPascal Подпрограмма – группа операторов реализующая законченный алгоритм и оформленная как самостоятельная синтаксическая единица.
1. a=? b=? c=? {int a, b, c; a=(b=2+3)/2 - 4+(c=5%2); printf("%d %d %d \n", a, b, c); }
Инструкции C++ Условная инструкция Формат: if (условие) оператор; else оператор; Пример: if (i!=0) { if (j) j++; if(k) k++; else if(p) k--; } else i--;
Лекция 6 1. Обработка массивов. Объявление одномерного массива Синтаксис: [ ] Пример: int a[10]; Определяет массив a размера 10, т. е. блок из 10 последо-
Лекция 9 Функции. Массивы-параметры функции Передача массива в функцию Пример: void array_enter(int a[], int size) { int i; for (i = 0; i < size; i++)
1. a=? b=? c=? {int a, b, c; a=(b=2+3)/2 - 4+(c=5%2); printf("%d %d %d \n", a, b, c); }
Даная матрица Задача 1. Дана матрица X[0:n-1][0:m-1] и массив Y[0:k-1]. Написать программу, которая вычисляет массив Z, состоящий из элементов X, расположенных.
Лекция 11 Файлы. Точного определения файла не существует. Файлом может быть: Объект файловой системы (файлы, папки и т.д.) Устройство ввода/вывода (клавиатура,
Инструкции C++ Условная инструкция Формат: if (условие) оператор; else оператор; Пример: if (i!=0) { if (j) j++; if(k) k++; else if(p) k--; } else i--;
СИМВОЛЬНЫЕ СТРОКИ С++. ОБЪЯВЛЕНИЕ СИМВОЛЬНЫХ СТРОК В ПРОГРАММАХ В C++ символьные строки хранятся в массиве типа char, который заканчивается символом NULL.
Синтаксис языка Java. Символы и синтаксис Перевод строчки эквивалентен пробелу Регистр в именах различается.
Защита от взлома Лекция 10Защита от взлома Лекция 10.
Основы алгоритмизации и программирования Чабанюк Виктория 10 класс.
Часть 1: «Основы программирования». Содержание Основные понятия. Структура программы. Ввод-вывод Программирование циклов. Операторы цикла while, for и.
Основы информатики Лекция. Массивы. Указатели. Заикин Олег Сергеевич
Транксрипт:

Лекция 3 Массивы и Функции.

Массивы Массив – набор данных, связанных одним именем, расположенных последовательно в памяти. Каждому элементу массива присвоен номер – индекс. Доступ к элементам массива происходит по индексу. Индексация элементов начинается от нуля.

#include /* подсчет цифр, символов-разделителей и прочих символов */ int main() { int с, i, nWhite, nOther; int nDigit[10]; nWhite = nOther = 0; for (i = 0; i < 10; ++i) nDigit[i]= 0; while ((c = getchar()) != EOF) if (c >= '0' && с <= '9' ) ++nDigit[c - '0' ]; else if (c == ' ' || с == '\n' || с == '\t') ++nWhite; else ++nOther; printf ("цифры ="); for (i=0; i < 10; ++i) printf(" %d", nDigit[i]); printf (", символы-разделители = %d, прочие = %d\n", nWhite, nOther); return 0; } Массивы

Сортировка методом пузырька #include #define N 1000 int main() { int n, i, j, tmp; int a[N]; // считываем количество чисел n scanf("%d", &n); // считываем n чисел for(i = 0 ; i < n; i++) { scanf("%d", &a[i]); } for(i = 0 ; i < n ; i++) { // сравниваем два соседних элемента. for(j = 0 ; j < n - i - 1 ; j++) { if(a[j] > a[j+1]) { // если они идут в неправильном порядке, то // меняем их местами. tmp = a[j]; a[j] = a[j+1] ; a[j+1] = tmp; } return 0; }

Функции #include /* объявление функции power */ int power(int m, int n); int main() { int i; for (i = 0; i < 10; ++i) printf("%d %d %d\n", i, power(2,i), power(-3, i)); return 0; }

Функции /* возводит base в n-ю степень; n >= 0 */ int power(int base, int n) { int i, p; p = 1; for (i = 1; i <= n; ++i) p = p * base; return p; }

Символьные массивы #include #define MAXLINE 1000 /* максимальный размер вводимой строки */ int getline(char line[], int maxline); void copy(char to[], char from[]); /* печать самой длинной строки */ int main() { int len; /* длина текущей строки */ int max; /* длина максимальной из просмотренных строк */ char line[MAXLINE]; /* текущая строка */ char longest[MAXLINE]; /* самая длинная строка */ max = 0; while ((len = getline(line, MAXLINE)) > 0) if (len > max) { max = len; copy(longest, line); } if (max > 0) /* была ли хоть одна строка? */ printf("%s", longest); return 0; }

Символьные массивы /* getline: читает строку в s, возвращает длину */ int getline(char s[], int lim) { int c, i; for (i = 0; i < lim-1 && (c = getchar()) != EOF && с != '\n'; ++i) s[i] = c; if (c == \n') { s[i] = c; ++i; } s[i] = '\0'; return i; }

Символьные массивы /* copy: копирует строку 'from' в 'to'; длина to считается достаточной */ void copy (char to[], char from[]) { int i ; i = 0; while ((to[i] = from[i]) != '\0') ++i; }

Символьные массивы Функция getline в конец создаваемого ею массива помещает символ '\0' (null-символ, кодируемый нулевым байтом), чтобы обозначить конец строки символов. То же соглашение относительно окончания нулем соблюдается и в случае строковой константы вроде "hello\n". В данном случае для него формируется массив из символов этой строки с '\0' в конце. h e l l o \n \0

Преобразование в целое /* atoi: преобразование s в целое */ int atoi(char s[]) { int i, n; n = 0; for (i = 0; s[i] >= '0' && s[i] <= '9'; ++i) n = 10 * n + (s[i] - '0'); return n; }

Преобразование строки /* lower: преобразование строки в нижний регистр; только для ASCII */ int lower(int с) { if (с >= 'А' && с <= 'Z' ) return с + 'а' - 'А'; else return с; }

strcat() /* strcat: помещает t в конец s; s достаточно велика */ void strcat (char s[], char t[]) { int i, j; i = j = 0; while (s[i] != '\0') /* находим конец s */ i++; while ((s[i++] = t[j++]) != '\0') /* копируем t */ ; }

Преобразование типов Если в виражении появляются операнды различных типов, то они преобразуются к некоторому общему типу. int a = 30000; float b; b = (float) a * 12; (переменная a целого типа явно преобразована к типу float; если этого не сделать, то результат будет потерян, т.к. a * 12 > 32767).

Оператор switch switch (виражение) { case констант-вираж: операторы default: операторы }

Оператор switch #include int main(){ int a=1; switch(a) { case 1: a++; case 2: a++; case 3: a++; } printf("a= %d\n, a); return 0; } /* *вывод программы: *a= 4 * */ #include int main(){ int a=1; switch(a) { case 1: a++; break; case 2: a++; break; case 3: a++; break; } printf("a= %d\n, a); return 0; } /* *вывод программы: *a= 2 * */

Подсчёт цифр, пробелов, других символов #include int main() /* подсчет цифр, пробелов, других символов */ { int с, i, nwhite, nother, ndigit[10]; nwhite = nother = 0; for (i = 0; i < 10; i++) ndigit[i] = 0; while ((с = getchar()) != EOF) { switch (c) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': ndigit[c-'0']++; break;

Подсчёт цифр, пробелов, других символов case ' ': case '\n': case '\t': nwhite++; break; default: nother++; break; } printf("digits = ") ; for (i = 0; i < 10; i++) printf(" %d", ndigit[i]); printf(", white space = %d, other = %d\n", nwhite, nother); return 0; }