- •Основы программирования
- •Средства создания программ
- •Работа в интегрированной среде разработки программ turbo c (Borland c)
- •Основные функциональные клавиши и сочетания клавиш в Turbo c
- •Контрольные вопросы
- •Основы языка Си
- •Составляющие языка Си
- •Понятия алгоритмических языков (На примере языка Си)
- •Структура программы на языке Си
- •Директивы препроцессора
- •Главная функция
- •Переменные и массивы
- •Объявления переменных и массивов
- •Комментарии
- •Основные операции в Си
- •Арифметические операции
- •Логические операции и операции отношения
- •Операции присваивания
- •Функции ввода и вывода
- •Функция форматированного вывода printf( )
- •Функция форматированного ввода scanf( )
- •Функция неформатированного ввода getch( )
- •Функция неформатированного ввода gets( )
- •Функция неформатированного вывода puts( )
- •Программа – диалог
- •Контрольные к лабораторной работе «Программа-диалог»
- •Программа–тест
- •Контрольные вопросы к лабораторной работе «Программа-тест»
- •Конструкция switch/case/default
- •Операторы цикла
- •Цикл for
- •Стандартные математические функции
- •Пример выполнения лабораторной работы «Вычисление значения функции»
- •Контрольные вопросы к лабораторной работе «Вычисление значения функции»
- •Вложенные циклы.
- •Использование оператора break в циклах
- •Оператор continue
- •Оператор безусловного перехода goto
- •Действия с одномерными массивами
- •Инициализация массива
- •Ввод значений элементов массива с клавиатуры
- •Заполнение массива случайными числами
- •Вычисление суммы и произведения элементов массива
- •Поиск максимального элемента массива и его номера
- •Вычисление среднего арифметического
- •Перестановка элементов в массиве
- •Сортировка массива
- •Заполнение массива элементами из другого массива.
- •Контрольные вопросы к лабораторной работе «Одномерный массив»
- •Контрольные к лабораторной работе «Программа-диалог»
- •Контрольные вопросы к лабораторной работе «Программа-тест»
- •Контрольные вопросы к лабораторной работе «Вычисление значения функции»
- •Контрольные вопросы к лабораторной работе «Одномерный массив»
Действия с одномерными массивами
Инициализация массива
При описании массива может быть выполнена его инициализация, т.е. присвоение его элементам определённых значений. Инициализация массива может быть выполнена как явно, так и неявно. Рассмотрим метод явной инициализации элементов массива (неявная инициализация элементов массива остаётся за рамками данного методического пособия).
При явной инициализации размер массива может быть либо задан непосредственно:
int mass[5] = {1, 2, 4, 8, 16};
либо автоматически определён компилятором по списку начальных значений:
int mass[] = {1, 2, 4, 8, 16};
Если количество значений в списке инициализации превышает указанное количество элементов массива, то будет выдано сообщение об ошибке.
Ввод значений элементов массива с клавиатуры
Ввод значений элементов массива можно реализовать с помощью функций ввода и вывода, рассмотренных выше.
ПРИМЕР 30:
Задание
Составить программу, которая выполняет ввод значений элементов действительного массива a[N] с клавиатуры. Количество элементов массива задать директивой препроцесора.
Решение
#include<stdio.h> #include<conio.h> #define P printf #define N 15 void main( ) { float a[N]; int i; clrscr(); for(i = 0; i<N; i++) { Р("\n введите a[%d]=", i ); scanf("%f",&a[i]); } getch(); } |
/*1*/ /*2*/ /*3*/ /*4*/ /*5*/ /*6*/ /*7*/ /*8*/ /*9*/ /*10*/ /*11*/ /*12*/ /*13*/ |
Заполнение массива случайными числами
В языке Си имеется возможность использования генератора псевдослучайных целых чисел. Эти псевдослучайные числа можно получить с помощью функции
random(k),
где k – целое число, не превосходящее 32767.
Функция random(k) возвращает случайное целое число, лежащее в диапазоне от 0 до k – 1. Она описана в заголовочном файле stdlib.h. Следовательно, для того чтобы использовать эту функцию, в начале программы должна присутствовать директива препроцессора
#include<stdlib.h>
Если необходимо, чтобы генерируемые псевдослучайные последовательности при последующих запусках программы не повторялись, нужно использовать функцию randomize( ). Она также описана в заголовочном файле stdlib.h. Для генерации псевдослучайных чисел функция randomize( ) использует текущее время, поэтому директивой
#include <time.h>
в программу должен быть включён файл time.h.
ПРИМЕР 31:
Задание
Составить программу, заполняющую массив mass[10] действительных случайными числами от -50до 50.
Решение
#include<stdio.h> #include<conio.h> #include<stdlib.h> #include <time.h> #define N 10 #define P printf void main() { float mass[N]; int i; randomize(); puts(“ заполнение массива случайными \ \ действительными числами”); for (i=0; i<N; i++) { mass[i] =( 50 - random(100) ) / 1.3; printf("%6.2f",mass[i]); } getch(); } |
/*1*/ /*2*/ /*3*/ /*4*/ /*5*/ /*6*/ /*7*/ /*8*/ /*9*/ /*10*/
/*11*/ /*12*/ /*13*/ /*14*/ /*15*/ /*16*/ |
ПРИМЕР 32:
Задание
Составить программу, заполняющую целочисленный массив mass[10] случайными числами из диапазона [a,b] для значений a и b, вводимых с клавиатуры.
Решение
#include<stdio.h> #include<conio.h> #include<stdlib.h> #include <time.h> #define N 10 #define P printf void main() { int mass[N], a, b, i; randomize(); puts(“ заполнение массива целыми/ /случайными числами из диапазона [a, b]”); M: P("Введите:\n a=") ;scanf("%d",&a); P("b="); scanf("%d",&b); if(a>=b){P("неверный интервал, / / повторите ввод"); goto M; } for (i=0; i<N; i++) { mass[i] = a + random(b-a+1); printf("%5d",mass[i]); } getch(); } |
/*1*/ /*2*/ /*3*/ /*4*/ /*5*/ /*6*/ /*7*/ /*8*/ /*9*/
/*10*/ /*11*//*12*/
/*13*/ /*14*//*15*//*16*//*17*//*18*/ |