Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Введение в программирование на С.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
930.82 Кб
Скачать

4.4 Передача массивов функции

Прототип функции, которой передается массив

возвр _знач имя_функции (тип_данных *, const int);

Пример: Ввода и вывода одномерного целочисленного массива, с помощью функции

#include<stdio.h>

void vvod_mas(int *,const int);

void vivod_mas(int *,const int);

void main()

{

const int n=5,m=6;

int x[n],y[m];

vvod_mas(x,n);

vvod_mas(y,m);

printf("Содержание первого массива:\n");

vivod_mas(x,n);

printf("Содержание второго массива:\n");

vivod_mas(y,m);

}

void vvod_mas(int *p,const int k){

for(int i=0;i<k;i++){

printf("[%d]=",i);

scanf("%d",(p+i));

}

}

void vivod_mas(int *p,const int k){

for(int i=0;i<k;i++)

printf("[%d]=%d\n",i,*(p+i));

}

Задача :

Написать следующие функции для одномерного массива: 1. ввод массива, 2. вывод массива, 3 нахождения и максимального элемента и его место, 4. нахождения и минимального элемента и его место 5. сортировка массива по убыванию 6. сортировка массива по возрастанию.

Переделать задачу один, так чтобы в программе мы использовали оператор switch, если мы введем 1, то показывает максимальный элемент и его место

2, то показывает минимальный элемент и его место

3, то сортирует массив по убыванию

4, то сортирует массив по возрастанию

5, то работа программы завершена

4.5 Двумерные массивы

a00 a01 a02 a03 матрица А размерности 3х4

a10 a11 a12 a13

a20 a21 a22 a23

Для того, чтобы ввести и вывести двумерный массив по строкам необходимо

const int n=3,m=4;

int x[n][m],i,j;

for(i=0;i<n;i++)

{

for(j=0;j<m;j++)

{

printf("x[%d][%d]=",i,j);

scanf("%d",&x[i][j]);

}

}

for(i=0;i<n;i++)

{

for(j=0;j<m;j++)

printf("x[%d][%d]=%d\n",i,j,x[i][j]);

}

Для того, чтобы ввести и вывести двумерный массив по столбцам, а вывести по строкам необходимо

const int n=3,m=4;

int x[n][m],i,j;

for(j=0;j<m;j++)

{

for(i=0;i<n;i++)

{

printf("x[%d][%d]=",i,j);

scanf("%d",&x[i][j]);

}

}

for(i=0;i<n;i++)

{

for(j=0;j<m;j++){

printf("%d\t",x[i][j]); }

printf(“\n”);

}

Задачи:

  1. Посчитать сумму всех элементов 2-го массива

  2. Найти max-ый и min-ый элементы массива и их места.

  3. Сумму элементов выше диагонали, место мах выше диагонали и место min ниже диагонали.

  4. Сумма столбцов

  5. Сумма строк

const int n=3,m=4;

int x[n][m],i,j,y[n];

for(i=0;i<n;i++){

for(j=0;j<m;j++){

printf("x[%d][%d]=",i,j);

scanf("%d",&x[i][j]);

}

}

for(i=0;i<n;i++){

y[i]=0;

for(j=0;j<m;j++)

y[i]=y[i]+x[i][j];

}

  1. Сортировка строк

const int n=3,m=4;

int x[n][m],i,j,y[n],buf,buf1;

for(i=0;i<n;i++)

{

for(j=0;j<m;j++)

{

printf("x[%d][%d]=",i,j);

scanf("%d",&x[i][j]);

}

}

for(i=0;i<n;i++){

y[i]=0;

for(j=0;j<m;j++)

y[i]=y[i]+x[i][j];

}

for(int t=0;t<n;t++){

for( i=0;i<n-1;i++){

if(y[i]>y[i+1]){

buf1=y[i];

y[i]=y[i+1];

y[i+1]=buf1;

for(j=0;j<m;j++){

buf=x[i][j];

x[i][j]=x[i+1][j];

x[i+1][j]=buf;

}

}

}

}

puts("");

for(i=0;i<n;i++){

for(j=0;j<m;j++)

printf("x[%d][%d]=%d\n",i,j,x[i][j]);

}

  1. Сортировка столбцов

  2. Рассортировка всех элементов матрицы

#include<stdio.h>