
- •( Часть 1)
- •230100 «Информатика и вычислительная техника»
- •Введение
- •1. Первая программа на языке Си
- •Примеры
- •Задания для самостоятельной работы
- •2. Переменные. Основные типы данных. Форматный ввод-вывод
- •Примеры
- •Упражнения
- •Наберите текст следующей программы и проанализируйте работу функции printf() в каждом случае.
- •Наберите текст следующей программы и проанализируйте работу функции scanf().
- •Задания для самостоятельной работы
- •3. Операции и выражения
- •Примеры
- •Упражнения
- •Задания для самостоятельной работы
- •I. Вычисление значения математического выражения
- •II. Решение задач на составление выражений
- •4. Операторы ветвления
- •Примеры
- •Задания для самостоятельной работы
- •I. Обработка введенного символа
- •II. Вычисление значения функции
- •III. Mультиветвление
- •5. Операторы цикла и передачи управления
- •Примеры
- •Задания для самостоятельной работы
- •I. Решение задач тремя способами (с for, while и do-while) Решить следующие задачи в трех вариантах – с помощью циклов for, while и do-while
- •II. Детерминированные циклы
- •III. Итерационные циклы
- •6. Массивы
- •Примеры
- •Задания для самостоятельной работы
- •I. Одномерные массивы
- •II. Двумерные массивы
- •7. Строки
- •Примеры
- •Задания для самостоятельной работы
- •Список литературы
II. Двумерные массивы
В данной квадратной матрице, элементами которой являются целые числа, произвести следующие действия:
Подсчитать среднее арифметическое значение нечетных элементов, расположенных выше главной диагонали.
Подсчитать среднее арифметическое значение нечетных элементов, расположенных ниже главной диагонали.
Подсчитать сумму элементов, расположенных на побочной диагонали.
Подсчитать среднее арифметическое значение ненулевых элементов, расположенных над побочной диагональю.
Подсчитать среднее арифметическое значение ненулевых элементов, расположенных под побочной диагональю.
Для каждой строки массива подсчитать количество положительных элементов и записать данные в новый массив.
Даны квадратный массив А и вектор Х, соответствующих размерностей. Вычислить А*Х.
Для каждого столбца подсчитать сумму отрицательных элементов и записать данные в новый массив.
Найти максимальный и минимальный элементы в массиве и поменять их местами.
Найти максимальный элемент в каждой строке и записать данные в новый массив.
Найти минимальный элемент в каждой строке и записать данные в новый массив.
Поменять местами две средних строки, если количество строк четное, и первую с последней, если количество строк нечетное.
Поменять местами два средних столбца, если количество столбцов четное, и первый с последним, если количество столбцов нечетное.
Даны квадратный массив А и вектор Х, соответствующих размерностей. Четные столбцы матрицы А заменить на вектор Х.
Даны квадратный массив А и вектор Х, соответствующих размерностей. Четные столбцы матрицы А заменить на вектор Х.
Даны две квадратные матрицы А и Х, соответствующих размерностей. Вычислить А+Х .
Если количество строк в массиве четное, то поменять строки местами по правилу – первую строку со второй, третью с четвертой и т.д. Если количество строк в массиве нечетное, то оставить массив без изменений.
Сформировать и распечатать квадратную матрицу А(10,10) следующего вида:
7. Строки
В С++ тип данных «строка» не определен. С-строка – это массив символов, заканчивающийся ноль-символом. Ноль-симовол – это символ с кодом, равным нулю, что записывается в виде esp-последовательности ‘\0’. Каждый символ строки занимает 1 байт. Поскольку \0 всегда является последним символом строки, массив символов должен иметь на один символ больше, чем длина строки, которую предполагается хранить в данном массиве. Пример описания строки:
char str1[]= “adc”; //массив из 4 элементов типа char, элемент str2[3]= ‘\0’ – признак конца строки.
или
char any[10];
Строковые массивы могут вводиться с помощью функции scanf(). Для строки any, объявленной выше:
scanf(“%s”,any);
Приведенный код не обеспечивает контроля длины вводимой строки, то есть строка длиннее 10 символов будет принята и функция попытается записать ее в массив any. В итоге – нежелательный результат.
Операция ввода строки с помощью scanf имеет еще один существенный недостаток – ввод строки производится до тех пор, пока в последовательности вводимых символов не встретится символ-разделитель (пробел, табуляция, возврат каретки и пр.) Поэтому с помощью scanf нельзя вводить строки, содержащие пробельные символы. Это можно сделать с помощью функции gets(). Вводимые символы принимаются до тех пор, пока не будет нажат клавиша Enter. Функция gets() заменяет завершающий символ ‘\n’ на символ ‘\0’. Синтаксис:
gets(str);// str –строковый массив, должен быть определен заранее
Другая функция puts() используется для вывода строки на устройство стандартного ввода. Выводимая строка завершается символом перехода на новую строку. Синтаксис:
puts(str);
где str – символьный массив, который должен быть объявлен и инициализирован.
Функции С, поддерживающие операции ввода-вывода строк входят в стандартную библиотеку ввода\вывода, описанную в стандартном заголовочном файле stdio.h. Язык С поддерживает целый набор строковых функций, которые объявлены в стандартном заголовочном файле string.h. Например:
strcpy(s1,s2) – копирует строку s2 в s1
strcat(s1,s2) – присоединяет строку s2 к концу строки s1
strlen(s1) – возвращает длину строки s1, без учета 0-символа
strcmp(s1,s2) – возвращает 0, если строки s1 и s2 одинаковы; значение <0, если s1<s2; значение >0, если s1<s2
и др.