Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






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




возвр _ знач имя_функции (тип_данных *, 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, то работа программы завершена

 

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

 

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>

Void main()

{

const int n=4,m=3;

int mat[n][m];

Int i,j,temp;

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

{

printf("\nВвод %d-ой строки: ",i+1);

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

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

}

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

printf("\n\n");

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

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

}

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

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

if(mat[i/m][i%m]<mat[j/m][j%m]){

temp=mat[i/m][i%m];

mat[i/m][i%m]=mat[j/m][j%m];

mat[j/m][j%m]=temp;

}

}

}

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

printf("\n\n");

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

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

}

}

  1. Перемножение матриц. Использовать функции ввода и вывода массивов.

#include<stdio.h>

Void main()

{

const int n=3,m=3,m1=3;

double a[n][m],b[m][m1],c[n][m1];

Int i,j,k;

printf("I massiv:\n");

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

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

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

Fflush(stdin);

scanf("%lf",&a[i][j]);

}

}

printf("\n II massiv:\n");

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

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

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

Fflush(stdin);

scanf("%lf",&b[i][j]);

}

}

i=0;

while(i<n){

j=0;

while(j<m1){

c[i][j]=0;

k=0;

while(k<m){

c[i][j]+=a[i][k]*b[k][j];

k++;

}

j++;

}

i++;

}

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

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

printf("c[%d][%d]=%.2lf\n",i,j,c[i][j]);

}

}

}

  1. Написать программу, которая перемножает две квадратные матрицы А 3x3 и B 3x3 через функцию. Прототип функции следующий.void proizv(int [][3], int [][3], int [][]3);

 

4.6 Контрольные вопросы:

  1. Функция активизируется с помощью _______________________________________ ______
  2. Переменная, которая известна только внутри функции, в которой она определена, называется ________________________________________________
  3. Оператор __________________ в функции используется, чтобы передать значение выражения в вызываемую функцию.
  4. Ключевое слово ____________ используется в прототипе функции, чтобы указать, что функция не возвращает значений.
  5. _________________ позволяет компилятору проверить количество, типы и порядок следования параметров, передаваемых функции.
  6. Укажите все классы памяти, которые Вы знаете _____________________________________
  7. Переменная, объявленная в блоке или в списке параметров функции, имеют класс памяти _____________, если не указано иное.
  8. Переменная, объявленная вне любого блока или функции, является ____________________
  9. Для того, чтобы локальная переменная сохраняла свое значения между вызовами функции, ее необходимо объявить как _____________ переменную.
  10. Определить содержат ли следующие фрагменты ошибки и укажите правильную версию описание функции,

a) которая получает три целых числа и возвращает сумму полученных чисел

int sum (a, b, c)

{

return a+b+c;

}

b) которая получает два целых числа и печатает деление этих чисел.

void printResult (int a, int b)

{

printf(“%d/%d=%lf\n”,a,b,a/b);

return a/b;

}

  1. Указатель – это переменная, которая содержит в качестве своего значения ___________ другой переменной.
  2. Для присвоения указателю начального значения можно использовать три значения ______, _____________ и _____________.
  3. Напишите прототип функции exchange, которая получает в качестве параметров два указателя на числа с плавающей точкой x и y и не возвращает никакого значения.
  4. Объявите массив типа float с именем number с 10 элементами и присвойте начальные значения 0.0, 1.1, 2.2, 3.3, …., 9.9.

а) приведите два различных оператора, которые присваивают начальный адрес массива number указателю float *pf _______________________________________________.

б) напечатайте элементы массива обращаясь к ним через указатель pf ___________________________ ________________________________________________________________________________________ ________________________________.

  1. Пусть в функции объявлены переменные double a[10]; int i; Какие из операторов цикла обеспечат присвоение 10 числовых значений всем элементам массива:

а) for(i=0; i<10; i++)

scanf(“%lf”,a+i);

б) for(i=0; i<10; i++)

scanf(“%lf”,a[i]);

с) for(i=1; i<=10; i++)

scanf(“%lf”,&a[i]);

д) for(i=0; i<10; i++)

scanf(“%lf”,&a[0]+i);

16 Функция ___________ используется для получения случайных чисел.

17 Функция ____________ для того, чтобы при каждом вызове программы выдавались различные числа.

Задача:

Программа, которая через функции вводит массив и сортирует I массив в возрастающем порядке, а второй II в убывающем порядке и функция вывода массива. А третий массив переписать число из двух массивов, так чтобы они были записаны в возрастающем порядке.


СИМВОЛЬНАЯ СТРОКА






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных