
- •Алгоритм и его свойства.
- •Средства записи алгоритма – графическая схема.
- •Типы алгоритмов и их графическое изображение.
- •3.Структура программы на языке Си.
- •Основные типы данных языка Си.
- •Операции и выражения языка Си. Операции выражения
- •Арифметические операции
- •Операции присваивания и операторы присваивания. Операция присваивания
- •Математические функции. Правила их использования в выражениях.
- •Поразрядные логические операции. Операторы сдвига.
- •Логические операции и операции отношения. Логические операции
- •Консольный ввод-вывод. Функции ввода-вывода символов.
- •Консольный ввод-вывод. Функции ввода-вывода строк.
- •Консольный форматированный ввод данных. Оператор ввода. Форматная строка. Спецификации преобразования.
- •Консольный форматированный вывод данных. Оператор вывода. Форматная строка. Спецификации преобразования.
- •Программирование линейных алгоритмов.
- •Логические выражения и правила их составления.
- •Оператор if. Две его формы.
- •If (выражение) оператор1;
- •If (выражение) оператор1; else оператор2;
- •Команда выбора. Операторы switсh и break.
- •Понятие цикла. Типы циклов.
- •Операторы циклов. Оператор for.
- •Оператор цикла while.
- •Оператор цикла do-while.
- •Понятие массива. Размерность, размер массива. Синтаксис описания массивов.
- •Ввод-вывод одномерного массива.
- •Вычисление суммы элементов одномерного массива.
- •Подсчет количества элементов одномерного массива, удовлетворяющих заданным условиям.
- •Вычисление произведения элементов одномерного массива.
- •Поиск элементов одномерного массива, обладающих заданным свойством.
- •Поиск максимального (минимального) элемента одномерного массива и его местоположения.
- •Формирование нового одномерного массива из элементов удовлетворяющих заданным условиям.
- •Понятие и описание двумерных массивов.
- •Ввод-вывод двумерного массива.
- •Вычисление суммы элементов двумерного массива.
- •Структуры данных. Доступ к полям структурной переменной. Массивы структур. Пример. Обращение к полям структур
- •Подпрограммы и Функции. Назначение. Описание функции.
- •Вызов функции.
- •Подпрограммы и Функции. Механизм передачи параметров в функцию
- •Подпрограммы и Функции. Передача массивов в функцию
Формирование нового одномерного массива из элементов удовлетворяющих заданным условиям.
Элементы значения которых отрицательны занести в отдельный массив.Для этого создаём 2 массива.Один заполняем сами, второй заполняется по условию.
#include <stdio.h> // Директивы подключения
#include <conio.h> // файлов
#include <math.h>
#include <windows.h>
char bufRus[256];
char*Rus(const char*text)
{
CharToOem(text, bufRus);
return bufRus;
}
int main (void)
{
float mas[10],mas1[10]; //Описание переменных
int i,n ,r,j;
puts (Rus(" Введите число элементов массива ")); // Ввод количества элеменов массива
scanf ("%d", &n);
for (i=0; i<n; i++) //Ввод массива
{
printf(Rus("Введите число mas[%d]="), i);
scanf("%f", &mas[i]);
}
puts(Rus("Массив")); // Вывод массива
for (i=0; i<n; i++)
printf("%2.2f ", mas[i]);
printf("\n");
j=0;
for (i=0; i<n; i++)
{if (mas[i]<0)
{ mas1[j]=mas[i];
}
J++;}
puts(Rus("Массив")); // Вывод второго массива
for (i=0; i<n; i++)
printf("%2.2f ", mas1[i]);
printf("\n");
getchar();
return (0);
}
Понятие и описание двумерных массивов.
Кроме одномерных массивов возможна работа с многомерными массивами. Объявление многомерного массива:
<тип><имя>[<размер 1 >][<размер 2 >]…[<размер N>]={{список начальных значений}, {список начальных значений},…};
Наиболее быстро изменяется последний индекс элементов массива, поскольку многомерные массивы размещаются в памяти компьютера в последовательности столбцов.
Например, элементы двухмерного массива b[2][1] размещаются в памяти в следующем порядке:
b[0][0], b[0][1], b[1][0], b[1][1], b[2][0], b[2][1].
Следующий пример иллюстрирует определение массива целого типа, состоящего из трех строк и четырех столбцов, с инициализацией начальных значений:
int a[3][4] = {{0,1,2,0},{9,-2,0,0},{-7,1,6,8}};
Если в какой-то группе {…} отсутствует значение, то соответствующему элементу присваивается 0. Предыдущий оператор будет эквивалентен следующему определению:
int a[3][4] = {{0,1,2},{9,-2},{-7,1,6,8}};
Ввод-вывод двумерного массива.
printf(Rus("Введите количество строк\n")); //Ввод количества строк и столцов
scanf("%d",&n);
printf(Rus("Введите количество столбцов \n"));
scanf("%d",&m);
for (i=0;i<n;i++) //Ввод матрицы
{
for(j=0;j<m;j++)
{
printf("mas[%d.%d]=",i,j);
scanf("%f",&mas[i][j]);
}}
printf(Rus("Матрица:\n"));
for (i=0;i<n;i++) //Вывод матрицы
{
for (j=0;j<m;j++)
{printf(" %.1f ",mas[i][j]);}
printf("\n");
}
Вычисление суммы элементов двумерного массива.
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <windows.h>
char bufRus[256];
char*Rus(const char*text)
{
CharToOem(text, bufRus);
return bufRus;
}
int main(void)
{
static float mas[10][10]; //Объявление массива как статический
int i,j,n,m,k;//Описание переменных
float a;
printf(Rus("Введите А: "));
scanf("%f",&a);
printf(Rus("Введите количество строк: ")); //Ввод количества строк и столцов
scanf("%d",&n);
printf(Rus("Введите количество столбцов: "));
scanf("%d",&m);
for (i=0;i<n;i++) //Ввод матрицы
{
for(j=0;j<m;j++)
{
printf("mas[%d.%d]=",i+1,j+1);
scanf("%f",&mas[i][j]);
}}
printf("\n");
printf(Rus("Матрица:\n"));
for (i=0;i<n;i++) //Вывод матрицы
{
for (j=0;j<m;j++)
{printf(" %.1f ",mas[i][j]);}
printf("\n");
}
printf(Rus("Количество элементов, больших заданного А и расположенные в строках с нечетными номерами=%d"),k); //Вывод результата
getchar();
getchar();
return 0;
}
Подсчет количества элементов двумерного массива, удовлетворяющих заданным условиям.
Вычисление произведения элементов двумерного массива.
Поиск элементов одномерного массива, двумерного заданным свойством.
Поиск максимального (минимального) элемента двумерного массива и его местоположения
Понятие и описание строки. Ввод-вывод строк.
Структуры данных. Описание структуры. Пример.
Структура - это составной объект языка Си, представляющий собой совокупность логически связанных данных различного типа, объединенных в группу под одним идентификатором. Данные, входящие в эту группу, называют полями.
Структурный тип данных задается в виде шаблона, общий формат
описания которого следующий:
struct имя_структуры
{
описание полей;
};
Имя структуры, т.е. ее идентификатор, является необязательным и может отсутствовать.
Описание полей производится обычным способом, ограничений на тип элементов нет.
Пример определения структурного типа - необходимо создать шаблон, описывающий информацию о студенте: номер группы, Ф.И.О. и средний балл. Один из возможных вариантов:
struct Stud_type
{
char Number[10];
char Fio[40];
double S_b;
};
Интерпретация объекта типа struct person:
-
Number
Fio
S_b
10
40
8
длина в байтах
Как уже отмечалось, само описание структуры не приводит к выделению под нее места в памяти. Теперь необходимо создать нужное количество переменных с приведенной структурой и сделать это можно двумя способами.
Способ 1. В любом месте программы для декларации структурных переменных, массивов, функций и т.д. используется объявленный в шаблоне структурный тип, например:
struct Stud_type student; - структурная переменная;
Stud_type Stud[100]; - массив структур
Stud_type *p_stud; - указатель на структуру
Stud_type* Fun(Stud_type); - прототип функции с параметром структурного типа, возвращающей указатель на объект структурного типа.
Способ 2. В шаблоне структуры между закрывающейся фигурной скобкой и символом «;» указывают через запятые идентификаторы структурных данных.
Для нашего примера можно записать:
struct Stud_type
{
char Number[10], Fio[40];
double S_b;
} student, Stud[100], *p_stud;
Битовые поля размещаются последовательно в поле типа int, при нехватке места для очередного битового поля - переход на следующее поле типа int. Возможно объявление безымянных битовых полей, а длина поля 0 означает необходимость перехода на очередное поле int:
struct areas
{
unsigned f1:1;
:2; /* Безымянное поле длиной 2 бита */
unsigned f2:5;
:0 /* Признак перехода на следующее поле int */
unsigned f3:5;
float data; /* Структура может содержать */
char buffs[100]; /* элементы любых типов данных */
};