- •#Define имя_константы значение
- •Переменные
- •Вывод данных на экран
- •Printf(“%[ширина][.Точность]тип ”, имя_переменной или конкретное значение);
- •Ввод данных с клавиатуры
- •Операции
- •Блок схемы
- •While (условие) {блок_операторов;}
- •Оператор цикла do-while (цикл с постусловием)
- •Do { блок_операторов;} while (условие);
- •Работа с одномерными массивами
- •For (инициализация; условие; приращение) {блок_операторов;}
- •Оператор цикла while (цикл с предусловием)
- •Работа с двумерными массивами
- •Работа со строками
Работа с двумерными массивами
Объявление двумерного массива выглядит так:
тип имя_массива[количество_строк][количество_столбцов];
тип имя_массива[количество_элементов n][количество_элементов m] =
{ {значение_элем._00, значение_ элем._0_1, … значение_ элем._0_m-1},
{значение_ элем._1_0, значение_ элем._1_1, … значение_ элем._1_m-1},
…
{значение_ элем._n-1_0, значение_ элем._n-1_1, … значение_ элем._n-1_m-1} };
Пример. Объявление двумерного массива
int mas1[10][15];
int a[3][3] = { { 1, 2, 3 }, { 4, 5, 6 }, {7, 8 ,9} };
Для перебора всех элементов массива необходимо организовать цикл.
Пример. Подсчет суммы и среднего арифметического элементов двумерного массива
#include <stdio.h>
#include <stdlib.h>
#define N 4
#define M 3
void main()
{
int mas[N][M] = {{10, 2, 15, 7}, {14, 3, 11, 6}, {19, 0, 14, 13}};
int sum=0, i, j;
float sr;
for (i=0; i<N; i++)
{
for (j=0; j<M; j++)
{
sum+=mas[i][j];
}
}
printf("Summa = %d\n", sum); //вывод результата, равного 32
sr=(float)sum/(N*M); // приведение суммы к вещественному типу и
//подсчет среднего арифметического
printf("Srednee = %6.3f", sr); //вывод результата, равного 8.500
}
Пример. Заполнение и вывод двумерного массива
#include <stdio.h>
#include <stdlib.h>
#define N 5
#define M 4
int main()
{
int mas[N][M];
int i,j=0;
for (i=0; i<N; ++i)
{
for (j=0; j<M; ++j)
{
mas[i][j] = i+j; //заполнение массива значениями i+j
}
}
for (i=0; i<N; i++)
{
for (j=0; j<M; j++)
{
printf("%d", mas[i][j]); //вывод элементов массива
}
printf("\n");
}
}
Пример. Поиск максимального элемента и его индексов в двумерном массиве
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 8
#define M 10
void main()
{
srand(time(0));
int mas1[N][M];
int Max, i,j, indi, indj;
for (i=0; i<N; i++)
{
for (j=0; j<M; j++)
{
mas1[i][j] = 15+rand()%30; //заполнение массива значениями от 15 до 44
}
}
for (i=0; i<N; i++)
{
for (j=0; j<M; j++)
{
printf("%3d", mas1[i][j]); //вывод элементов массива
}
printf("\n");
}
Max=mas1[0][0]; //задание переменной Max начального значения
indi=0; //задание переменной indi начального значения
indj=0; //задание переменной indj начального значения
//поиск максимального элемента
for (i=1; i<N; i++) //перебор по строкам
{
for (j=0; j<M; j++) //перебор по столбцам
{
if (mas1[i][j]>Max) //если встретившийся элемент массива больше
//текущего значения переменной Max
{
Max=mas1[i][j]; //занесение в переменную Max значения элемента массива
indi=i; //запоминание номера строки, содержащей максимальный элемент
indj=j; //запоминание номера столбца, содержащего максимальный элемент
}
}
}
printf("Max = mas[%d][%d] = %d\n", indi, indj, Max); //вывод значения максимального
//элемента и индексов этого элемента
}
Пример. Поиск минимальных элементов в столбцах двумерного массива
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 8
#define M 10
void main()
{
srand(time(0));
int mas1[N][M];
int Min, i,j;
for (i=0; i<N; i++)
{
for (j=0; j<M; j++)
{
mas1[i][j] = 15+rand()%30; //заполнение массива значениями от 15 до 44
}
}
for (i=0; i<N; i++) //перебор по строкам
{
for (j=0; j<M; j++) //перебор по столбцам
{
printf("%3d", mas1[i][j]); //вывод элементов массива
}
printf("\n");
}
//поиск минимальных элементов в столбцах
for (j=0; j<M; j++) //перебор по столбцам
{
Min=mas1[0][j]; //задание переменной Min начального значения
for (i=1; i<N; i++) //перебор по строкам
{
if (mas1[i][j]<Min)
{
Min=mas1[i][j];
}
}
printf("V stolbce %d Min = %d\n", j,Min); //вывод значений минимальных
//элементов в столбцах
}
}
Пример. Блок-схема алгоритма подсчета минимальных элементов в столбцах
Код:
//поиск минимальных элементов в столбцах
for (j=0; j<M; j++) //перебор по столбцам
{
Min=mas1[0][j]; //задание переменной Min начального значения
for (i=1; i<N; i++) //перебор по строкам
{
if (mas1[i][j]<Min)
{
Min=mas1[i][j];
}
}
printf("V stolbce %d Min = %d\n", j,Min); //вывод значений минимальных
//элементов в столбцах
}
Блок-схема:
