Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Voprosy_k_ehkzamenu_OAiP_dlja_PEHs-I.doc
Скачиваний:
17
Добавлен:
02.05.2019
Размер:
205.82 Кб
Скачать
  1. Формирование нового одномерного массива из элементов удовлетворяющих заданным условиям.

Элементы значения которых отрицательны занести в отдельный массив.Для этого создаём 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. Понятие и описание двумерных массивов.

Кроме одномерных массивов возможна работа с многомерными массивами. Объявление многомерного массива:

<тип><имя>[<размер 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}};

  1. Ввод-вывод двумерного массива.

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");

}

  1. Вычисление суммы элементов двумерного массива.

#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;

}

  1. Подсчет количества элементов двумерного массива, удовлетворяющих заданным условиям.

  2. Вычисление произведения элементов двумерного массива.

  3. Поиск элементов одномерного массива, двумерного заданным свойством.

  4. Поиск максимального (минимального) элемента двумерного массива и его местоположения

  5. Понятие и описание строки. Ввод-вывод строк.

  1. Структуры данных. Описание структуры. Пример.

Структура - это составной объект языка Си, представляющий собой совокупность логически связанных данных различного типа, объединенных в группу под одним идентификатором. Данные, входящие в эту группу, называют полями.

Структурный тип данных задается в виде шаблона, общий формат

описания которого следующий:

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]; /* элементы любых типов данных */

};

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]