Читайте также: |
|
МАССИВЫ
Массив – это конечная поименованная последовательность однотипных величин.
Описание массива:
<тип> <имя> [ <размерность> ];
[ ] – это часть синтаксиса.
Размерность массива вместе с типом его элементов определяет объём памяти, который необходим для размещения массива. Поэтому размерность массива может быть указана только константой или константным выражением.
Например:
const N=15;
char mas[n]; массив из 15 символов.
float a[10]; массив из 10 вещественных чисел.
Инициализирующие значения записываются в фигурных скобках.
Значения элементам присваиваются по порядку. Если элементов в массиве больше, чем инициализаторов, элементы, для которых значение не указано, обнуляются. Если инициализирующих значений больше количества элементов массива, то выдается сообщение об ошибке.
Например:
int b[5] = {4, 3, 1};
Элементы массива b |
Если размерность не указана, то должен быть указан инициализатор. В этом случае память выделяется по количеству инициализирующих значений.
Например:
int a[] = {4, 7, 3, 1, 2};//будет создан массив из 5 элементов
Массивы обрабатываются поэлементно. Чтобы обратиться к элементу массива, надо после имени массива в квадратных скобках указать номер элемента (индекс). Элементы массива нумеруются от 0.
Например:
Номер элемента i | |||||
Элементы массива a | |||||
Обращение к i элементу | a[0] | a[1] | a[2] | a[3] | a[4] |
Пример 1. Вычислить сумму элементов массива
void main () {
int i, sum;
int m [4] = { 3, 8, 4, 3 };
for (i = 0; sum = 0; i< 4; i + +)
sum + = m [ i ];
}
Пример 2. Найти максимальный элемент массива
void main ()
{ const int n = 10;
int i, max;
int m [ n ];
for (i = 0; i< n; i + +)
fscanf(“%d”,m [ i ];
max=m[0];
for (i = 1; i< n; i + +)
if(max<m[i])max= m [ i ];
printf(“maximum=%d”,max);
}
Многомерные массивы
Многомерные массивы задаются указанием каждого измерения в квадратных скобках;
<тип> <имя> [ размерность ][ размерность];
/ \
к-во к-во
строк столбцов
Например:
int m [ 6 ][8 ]; таблица из 6 строк и 8 столбцов.
Теоретически размерность массивов не ограничена.
В памяти массив размещается построчно. При переходе к очередному элементу быстрее всего меняется самый правый элемент.
Для доступа к элементу надо указать все его индексы.
m [ 2 ][ 4 ]; 4 элемент 2 строки
m [ i ][ j ]; j элемент i строки
Инициализация двухмерного массива
Задается общий список элементов, в том порядке, как они располагаются в памяти.
int a[ 3 ][ 5] = { 1, 2, 4, 6, 1, 5, 7, 3, 0, 1, 7, 2 }
1 2 4 6 1
5 7 3 0 1
7 2 0 0 0
Двухмерный массив можно представить как массив массивов, каждый массив заключается в свои фигурные скобки. При этом начальные значения можно указывать не для всех элементов.
int a [ 3 ][ 5 ] = {{ 1, 2, 3}, { 1, 2 }, { 1}};
1 2 3 0 0
1 2 0 0 0
1 0 0 0 0
Если для каждой строки задать хотя бы одно инициализирующее значение, то количество строк можно не указывать.
int a [ ][ 5 ] = {{ 1, 2 }, { 1 }, { 3, 4, 5, 6 }};
1 2 0 0 0
1 0 0 0 0
3 4 5 6 0
Пример:
Дана матрица размером 10х10. Обнулить элементы, лежащие выше главной диагонали
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{int m[10][10];
int i,j;
//заполнение массивав
for(i=1;i<10;i++)
for(j=1;j<10;j++)
m[i][j]=i*10+j;
//печать массива в виде таблицы
for(i=1;i<10;i++){
printf("\n");
for(j=1;j<10;j++)
printf("%d\t",m[i][j]);
}
//обнуление элементов, лежащих выше главной диагонали
for(i=1;i<9;i++)
for(j=i+1;j<10;j++)
m[i][j]=0;
//печать матрицы
for(i=1;i<10;i++){
printf("\n");
for(j=1;j<10;j++)
printf("%d\t",m[i][j]);
}
return 0;
}
Дата добавления: 2015-10-30; просмотров: 111 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Assignment № 1 | | | Будем считать, что объявили массив из 10 элементов. |