Стандартные алгоритмы работы с одномерными массивами
Пример 1.: Нахождения max (min) числа в массиве.
#include <stdio.h>
void main (void) {
int i, num, a[10];
for (num=a[0], i=1; i<10; i++)
if (num<a[i])
num=a[i];
printf("Max число в массиве %d\n",num);
}
Пример2.: Сортировка по возрастанию методом отбора
#include <stdio.h>
void main (void) {
int i, j, num, k, flag, a[10];
for (i=0; i<9; ++i) {
num=a[i]; k=i; flag=0;
for (j=i+1; j<10; ++j){
if (a[j]<num) { // ищем min, его индекс.
num=a[j];
k=j;
flag=1;
}
}
if(flag==1){
a[k]=a[i];
a[i]=num;
}
}
}
Пример 3.: Сортировка по возрастанию методом «Пузырька»
#include <stdio.h>
void main (void) {
int i, j, a[10], num;
for (i=1; i<10; i++)
for (j=8; j>=i; --j)
if (a[j-1]<a[j]) { // ищем min, его индекс.
num=a[j-1];
a[j-1]=a[j];
a[j]=num;
}
}
Пример 4.: поиск заданного значения
#include <stdio.h>
void main (void) {
int i, k=0, num=10, a[10];
for (i=0; i<10; i++)
if(a[i]==num)
printf(«%d»,i);
}
Инициализация одномерных массивов
Для хранения данных часто используются массивы. Их можно инициализировать.
int days[12]={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
Если данных меньше, чем 12, то остальные будут инициализированы 0, если массив глобальный, иначе значения неопределенны. Можно не задавать количество элементов в массиве. Оно будет определяться автоматически.
int days []={31, 28, 31, 30, 31, 30, 31, 31, 30, 31};
void main (void){
int i;
for (i=0; i<sizeof days/(sizeof(unt)); i++)
printf("Месяц %d имеет %d дней\n",i+1, i++);
}
Обнуление массива:
int array[10] = {0};
Многомерные массивы
Определяются в программе также как и одномерные с указанием размерности каждого индекса в квадратных скобках.
float rain[5][12];
Количество выделяемой памяти рассчитывается как 4*5*12 байт.
Каждый индекс изменяется от 0 до n-1. В памяти все элементы располагаются последовательно, но индексы меняются следующим образом:
//Пример программы ввода кол-ва осадков помесячно за 5 лет и расчета среднего за каждый год и за 5 лет
void main(void){
int i,j;
float mas[5][12], sumyear, sum=0;
for (i=0; i<5; i++){
printf("Ввести кол-во осадков за %d год помесячно\n", i+1);
sumyear=0;
for (j=0; j<12; j++){
scanf ("%f",&mas[i][j]);
sumyear+=mas[i][j];
}
sum+=sumyear/12;
printf(Ср. за %d год = %.2f\n”,sumyear/12);
}
printf(Ср. за 5 лет = %.2f\n”,sum/5);
}
Дата добавления: 2018-11-25; просмотров: 365;