Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1-1 Алгоритмические языки

.rtf
Скачиваний:
61
Добавлен:
22.06.2014
Размер:
24.64 Кб
Скачать

АЛГОРИТМИЧЕСКИЕ ЯЗЫКИ И

ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ - 1

Контрольная работа 1

Задание 1.

В первой программе сделать вывод чисел в столбик:

#include <stdio.h>

int vector[5] = { 2,45,34,8,15 }; //объявление массива и присвоение ему значений

int main() //главная программа, точка входа в программу

{

int i; //объявление индекса

for(i=0; i<5; i++) //организация цикла

{ //вывод элементов массива на экран

printf("%d ",vector[i]); //с помощью функции printf

} //перевод строки

printf("\n");

}

Решение.

#include <stdio.h>

int vector[5] = { 2,45,34,8,15 }; //объявление массива и присвоение ему значений

int main() //главная программа, точка входа в программу

{

int i; //объявление индекса

for(i=0; i<5; i++) //организация цикла

{ //вывод элементов массива на экран

printf("%d\n",vector[i]); //с помощью функции printf

} //перевод строки

printf("\n");

return 0;

}

Задание 2

Во второй программе найти минимальное значение:

#include <stdio.h>

int vector[5] = { 2,45,34,8,15 }; //объявление массива и присвоение ему значений

int main()

{

int i;

int max=vector[0]; //вначале переменной мах присвоить начальное значение

for(i=1; i<5; i++) //цикл для просмотра остальных элементов массива

{

if(max<vector[i]) max=vector[i]; //выбрать большее значение, чем чем то которое хранится в max

}

printf("max = %d\n",max); //после цикла вывести максимальное значение

}

Решение.

#include <stdio.h>

int vector[5] = { 2,45,34,8,15 }; //объявление массива и присвоение ему значений

int main()

{

int i;

int min=vector[0]; //вначале переменной мах присвоить начальное значение

for(i=1; i<5; i++) //цикл для просмотра остальных элементов массива

{

if(min>vector[i]) min=vector[i]; //выбрать большее значение, чем чем то которое хранится в max

}

printf("min = %d\n",min); //после цикла вывести максимальное значение

}

Задание 3.

В третьей программе осуществить сортровку по убыванию:

#include <stdio.h>

int vector[5] = { 2,45,34,8,15 }; //объявление массива и присвоение ему значений

int main()

{

int i;

int key=1; //переменная показывающая что массив еще не отсортирован

int tmp; //временная переменная для хранения промежутлчных данных

while(key) //цикл пока массив не отсортирован

{

key=0;

for(i=0; i<4; i++) //цикл для просмотра соседних элементов массива

{

if(vector[i]>vector[i+1]) //поменять местами если условие сортировки не выполнены

{

tmp=vector[i];

vector[i]=vector[i+1];

vector[i+1]=tmp;

key=1; //массив еще не отсортирован

}

}

}

for(i=0; i<5; i++) //вывести массив на экран

printf("%d ",vector[i]);

printf("\n");

}

Решение.

#include <stdio.h>

int vector[5] = { 2,45,34,8,15 }; //объявление массива и присвоение ему значений

int main()

{

int i;

int key=1; //переменная показывающая что массив еще не отсортирован

int tmp; //временная переменная для хранения промежуточных данных

while(key) //цикл пока массив не отсортирован

{

key=0;

for(i=0; i<4; i++) //цикл для просмотра соседних элементов массива

{

if(vector[i]<vector[i+1]) //поменять местами если условие сортировки не выполнены

{

tmp=vector[i];

vector[i]=vector[i+1];

vector[i+1]=tmp;

key=1; //массив еще не отсортирован

}

}

}

for(i=0; i<5; i++) //вывести массив на экран

printf("%d ",vector[i]);

printf("\n");

return 0;

Задание 4.

В четвертой программе попытаться изменить типы переменных, так чтобы можно было подсчить Fibbo(100):

#include <stdio.h>

#define NUMBER int

NUMBER Fibbo(int n)

{

NUMBER i1, i2, f;

int j;

if(n<2) return 1;

i1=1;

i2=1;

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

{

f=i1+i2;

i1=i2;

i2=f;

}

return f;

}

Решение.

#include <stdio.h>;

#define NUMBER unsigned long

NUMBER Fibbo(int n)

{

NUMBER f,i1,i2;

int j;

if(n<2) return 1;

i1=1;

i2=1;

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

{

f=i1+i2;

i1=i2;

i2=f;

}

return f;

}

Задание 5.

В пятой программе оформить задачу как функцию:

#include <stdio.h>

int mes[12]={0, 31, 59, 90, 120, 151, 181, //всмогательный массив колиства дней

212, 243, 273, 304, 334 }; //от начала до текущего месяца

main()

{

int d,m,g; //начальная дата (день, месяц, год)

int d2,m2,g2; //конечная дата (день, месяц, год)

int c;

c=mes[m-1]-d2+365*(g2-g1)+mes[m2-1]+d2; //подсчет коичества дней между двумя датами

if(!g%4) if(m<3) c++; //учет високосности для начальной даты

if(!g2%4) if(m>2) c++; //учет високостности для крнечной даты

c=c+(g2-g)/4; //учет високосности для годов попавших в интервал

printf("%d",c); //между двумя датами

}

Решение.

#include <stdio.h>

int f(const int d, const int m, const int g,

const int d2, const int m2, const int g2)

{

int mes[12]={0, 31, 59, 90, 120, 151, 181, //всмогательный массив колиства дней

212, 243, 273, 304, 334 }; //от начала до текущего месяца

int c;

c=mes[m-1]-d+365*(g2-g)+mes[m2-1]+d2; //подсчет коичества дней между двумя датами

if(!(g%4)) if(m<3) c++; //учет високосности для начальной даты

if (g!=g2) if(!(g2%4)) if(m2>2) c++; //учет високостности для крнечной даты

c=c+(g2-g)/4; //учет високосности для годов попавших в интервал

return c; //между двумя датами

}

int main()

{

clrscr();

textmode(3);

printf("01.01.2000 - 01.01.2001 = %d \n",f(1,1,2000,1,1,2001));

printf("01.01.2001 - 01.01.2002 = %d \n",f(1,1,2001,1,1,2002));

return 0;

}