Практика по Борланд С. Массивы и функции.


1.Написать программу, которая вычисляет среднее арифмети­ческое действительных элементов массива без учета минимального и максималь­ного элементов массива.

#include <stdio.h>

#include <conio.h>

#define n 10

void main()

{

clrscr();//очистка экрана

m:float a[10],min,max,s=0,k,c;//a-массив min-миним max — макс s — сумма

int i;// i-переменнвая цикла

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

{

printf(» Вв %d эл-т массива=>»,i+1);

scanf(«%f»,&a[i]);//заполнение массива

s+=a[i];//наращивание суммы

}

min=a[0];

max=a[0];

for (i=0;i<n;i++)//цикл вычисляет макс и миним

{

if (min>a[i])

min=a[i];

if (max<a[i])

max=a[i];

}

s=s-max-min;//в s сумма всех кроме макс и миним

printf(» Среднеарифм= %.2f»,s/(n-2));//выводится среднеарифм

printf(» Повторить ввод? 1-да 0-нет =»);//запрос на повторнный ввод

scanf(«%d»,&c);

if (c==1)

goto m;

getch();

}

2. Дан массив натуральных чисел. Найти сумму элементов, кратных k.

#include <stdio.h>

#include <conio.h>

#define n 10

void main()

{

clrscr();//очистка экрана

m:int a[n],i,k,kol=0,c;

printf(» Введи число k=»);

scanf(«%d»,&k);//ввод числа k

for (i=0;i<n;i++)//заполнение массива

{

printf(» Вв %d эл-т масс=>»,i+1);

scanf(«%d»,&a[i]);

if (a[i]%k==0)//­наращивание эл-тов кратных k

kol++;

}

if (kol==0)//проверка на наличие таких эл-тов

printf(» Таких нет»);

else

printf(» Ко-во эл-тов = %d»,kol);//вывод кол-ва

printf(» Повторить ввод? 1-да 0-нет =»);//запрос на повторный ввод

scanf(«%d»,&c);

if (c==1)

goto m;

getch();

}

3.Дан массив действительных чисел. Найти количество положительных элементов.

#include <stdio.h>

#include <conio.h>

#define n 10

void main()

{

clrscr();

float a[n];

m:int i,k=0,c;//i — переменная цикла k — кол-ва с-повтор ввод

for (i=0;i<n;i++)//заполнение массива

{

printf(» ‚ў %d н«-в ¬ббЁў=>»,i+1);

scanf(«%f»,&a[i]);

if (a[i]>0)//проверка на положительность

k++;//наращивание

}

if (k==0)//проверка на существование

printf(» ’ЄЁе ­Ґв»);

else

printf(» Љ®-ў® Ї®«®¦ = %d»,k);//вывод

printf(» Џ®ўв®аЁвм ўў®¤? 1-¤ 0-­Ґв =»);//запрос на повторнный ввод

scanf(«%d»,&c);

if (c==1)

goto m;

getch();

}

4.Задана матрица B[N, M]. Найти в каждой строке матрицы мак­симальный и минимальный элементы и поменять их с первым и последним элементом строки соответственно.

#include <stdio.h>

#include <conio.h>

#define n 5

void main()

{

clrscr();//очистка экрана

m:int a[n][n],i,j,k=1,c;//а — массив i,j — перем цикла k — флаг c — повт ввод

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

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

{

printf(» ‚ў %d,%d н«-в ¬б=>»,i+1,j+1);//заполнение массива

scanf(«%d»,a[i][j]);

}

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

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

if (a[i][j]!=a[j][i])//проверка на симм.

k=0;

if (k==0)

printf(» Матрица не симм»);

else

printf(» Матрица симм»);

printf(» Повторить ввод? 1-да 0-нет =»);//запрос на повторный ввод

scanf(«%d»,&c);

if (c==1)

goto m;

getch();

}

5.Задана квадратная матрица. Получить транспонированную матрицу, т.е. матрицу, где столбцы и строки меняются места­ми.

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#define n 5

void main()

{

randomize();

clrscr();//очистка экрана

m:int a[n][n],i,j,temp,c;//temp-переменная для перестановки c — повтор ввод

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

{

printf(» «);

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

{

a[i][j]=random(10);//заполнение массива случайными числами

printf(«%3d»,a[i][j]);

}

}

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

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

{

temp=a[i][j]; //замена строк на столбцы

a[i][j]=a[j][i];

a[j][i]=temp;

}

printf(» «);

for (i=0;i<n;i++) //вывод транспонир матрицы

{

printf(» «);

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

printf(«%3d»,a[i][j]);

}

printf(» Повторить ввод? 1-да 0-нет =»);//запрос на повтор ввод

scanf(«%d»,&c);

if (c==1)

goto m;

getch();

}

6.Найти наибольший и наименьший элементы прямоугольной матрицы и поменять их местами.

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#define n 5

#define m 7

void main()

{

randomize();

clrscr();//очистка экрана

l: int a[n][m],c,i,j,max,min,temp,max_i,max_j,min_i,min_j;//max min — макс и миним и их индексы

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

{

printf(» «);

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

{

a[i][j]=random(10);//заполнение массива случ числами

printf(«%3d»,a[i][j]);

}

}

max=a[0][0]; //обнуление индексов и присвоение макс и миним перв. эл-та

min=a[0][0];

max_i=0;

max_j=0;

min_i=0;

min_j=0;

for (i=0;i<n;i++)//поиск макс и миним

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

{

if (max<a[i][j])

{

max=a[i][j];

max_i=i;

max_j=j;

}

if (min>a[i][j])

{

min=a[i][j];

min_i=i;

min_j=j;

}

}

a[max_i][max_j]=min;//обмен макс и миним

a[min_i][min_j]=max;

printf(» «);

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

{

printf(» «);

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

printf(«%3d»,a[i][j]);//вывод

}

printf(» Повторить ввод? 1-да 0-нет =»);//запрос на повт ввод

scanf(«%d»,&c);

if (c==1)

goto l;

getch();

}

№ 9

Написать программу вычисления суммы факториалов всех нечетных чисел от 1 до 9.

#include <stdio.h>

#include <conio.h>

long int fakt(int a)//функция вычисляющая факториал

{

long int f=1;

int i;

for (i=2;i<=a;i++)//цикл вычисляет факториал

f*=a;

return f;//возвращение переменной

}

void main()

{

clrscr();//очистка экрана

int i;

long int s=0;//s-переменная суммы

for (i=1;i<=9;i+=2)

s+=fakt(i);//наращивание суммы

printf(«Сумма факториалов=%li»,s);//вывод результата

getch();

}

№ 22

Заменить данное натуральное число на число, которое получается из исходного записью его цифр в обратном порядке (например, дано число 156, нужно получить 651).

#include <stdio.h>

#include <conio.h>

int peres(int a)//функция инвертирует число

{

int b,k=0;

while(a!=0)

{

b=a%10;//формирование нового числа

k=k*10+b;

a/=10;

}

return k;//возврат инвертированного числа

}

void main()

{

clrscr();//очистка экрана

int a,b,c;

m:printf(«Введите число=»);

scanf(«%d»,&a);//ввод числа а

b=peres(a);//вызов функции

printf(» Результат =%d»,b);//вывод результата

printf(» повторить ввод? 1-да 0-нет =»);//запрос на повторнный ввод

scanf(«%d»,&c);

if (c==1)

goto m;

getch();

}

№ 47 Найдите сумму цифр заданного натурального числа.

#include <stdio.h>

#include <conio.h>

int summa(int a)//функция считает сумму цифр в числе

{

int s=0;

while(a!=0)

{

s+=a%10;//наращивание суммы

a/=10;

}

return s;//возвращение переменной

}

void main()

{

clrscr();//очистка экрана

int a,sum,c;

m:printf(«Введите число=»);

scanf(«%d»,&a);//ввод переменной а

sum=summa(a);//вызов функции

printf(» Сумма цифр в числе %d = %d»,a,sum);//вывод результата

printf(» Повторить ввод? 1-да 0-нет =»);//Запрос на повторнный ввод

scanf(«%d»,&c);

if (c==1)

goto m;

getch();

}

№ 48 Подсчитать количество цифр в заданном натуральном числе

#include <stdio.h>

#include <conio.h>

int kolvo(long int a)//функция считает ко-во цифр в числе

{

int k=0;

while(a!=0)

{

k++;//наращивание количества

a/=10;

}

return k;//возвращение переменной

}

void main()

{

clrscr();//очистка экрана

long int a;

int kol,c;

m:printf(«Введите число=»);

scanf(«%li»,&a);//ввод переменной а

kol=kolvo(a);//вызов функции

printf(» Ко-во цифр в числе %li = %d»,a,kol);//вывод результата

printf(» Повторить ввод? 1-да 0-нет =»);//запрос на повторнный ввод

scanf(«%d»,&c);

if (c==1)

goto m;

getch();

}