Лекция13(СЛАЙДЫ)
.pdfЛекция
● Одномерные и двумерные массивы
Объявление массива
спецификатор-типа описатель [константное - выражение]; спецификатор-типа описатель [ ];
Примеры объявлений массивов
int a[2][3]; /* представлено в виде
матрицы
a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2] */
double b[10]; /* вектор из 10 элементов имеющих тип double */
int w[3][3] = { { 2, 3, 4 },
{3, 4, 8 },
{1, 0, 9 } };
Примеры
int s[2][3]; |
s[0]; |
int b[2][3][4]; |
|
b[1][2]; b[1]; b[2][4];
char str[] = "символьный массив";
Объявление одномерного
массива
#include <stdio.h>
int main () {
int m[5] = {0}; //Обнуление массива int n[5]; //Массив с мусором
int i;
for (i = 0; i < 5; i++) printf("m[%d]=%d\tn[%d]=%d\n",i,m[i],i,n[i]);
//printf("m[%d] = %d \t n[%d] = %d \n",i,m[i],i,n[i]); return 0;
}
Объявление многомерного массива
#include <stdio.h>
int main () { int m[5][2]; int i,j;
for (i = 0; i < 5; i++) for (j = 0; j < 2; j++)
printf("m[%d][%d]=%d\n",i,j,m[i][j]); return 0;
}
[linux]$ gcc 1.c [linux]$ ./a.out m[0][0]=1356527440 m[0][1]=32539 m[1][0]=4195749 m[1][1]=0 m[2][0]=1353055000 m[2][1]=32539 m[3][0]=4195680 m[3][1]=0 m[4][0]=0 m[4][1]=0
[linux]$
Поиск наибольшего значения
#include <stdio.h> #include <math.h>
int main () {
int m[5][2] = {0}; int i,j;
//Вывод на экран for (i = 0; i < 5; i++) {
for (j = 0; j < 2; j++) { printf("m[%d][%d]=%d\n",i,j,m[i][j]);
}
}
puts("\n");
[linux]$ gcc 1.c -lm [linux]$ ./a.out m[0][0]=0 m[0][1]=0 m[1][0]=0 m[1][1]=0 m[2][0]=0 m[2][1]=0 m[3][0]=0 m[3][1]=0 m[4][0]=0 m[4][1]=0
//Элемент массива равен сумме индексов for (i = 0; i < 5; i++) {
for (j = 0; j < 2; j++) { m[i][j] = i + j;
}
}
//Вывод на экран for (i = 0; i < 5; i++) {
for (j = 0; j < 2; j++) { printf("m[%d][%d]=%d\n",i,j,m[i][j]);
}
}
puts("\n");
m[0][0]=0
m[0][1]=1
m[1][0]=1
m[1][1]=2
m[2][0]=2
m[2][1]=3
m[3][0]=3
m[3][1]=4
m[4][0]=4
m[4][1]=5
//Находим наибольший элемент int oldi, oldj, temp;
oldi = oldj = 0;
temp = pow(2, (sizeof(int) * 8) - 1) * (-1); printf("min{m[i][j]}=%d\n\n",temp);
for (i = 0; i < 5; i++) { min{m[i][j]}=-2147483648
for (j = 0; j < 2; j++) {
if (m[i][j] > temp) temp = m[i][j];
}
}
//Заполняем наибольшим значением for (i = 0; i < 5; i++) {
for (j = 0; j < 2; j++) { m[i][j] = temp;
}
}
//Вывод на экран полученный результат
for (i = 0; i < 5; i++) { for (j = 0; j < 2; j++) {
printf("m[%d][%d]=%d\n",i,j,m[i][j]);
}
}
return 0;
}
m[0][0]=5
m[0][1]=5
m[1][0]=5
m[1][1]=5
m[2][0]=5
m[2][1]=5
m[3][0]=5
m[3][1]=5
m[4][0]=5
m[4][1]=5 [linux]$