Основы языка Си

Задания по основам программирования: написание программы, выводящей на экран приветствие автору; рассчитывающей параметры геометрической фигуры; по номеру года определяющей, является ли он високосным; находящей наименьший делитель введенного числа, и др.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 09.02.2016
Размер файла 2,1 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Федеральное агентство железнодорожного транспорта

Омский государственный университет путей сообщения

Кафедра «Автоматика и системы управления»

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

по дисциплине: Технология программирования

ОСНОВЫ ЯЗЫКА С(СИ)

ВАРИАНТ №6

Лабораторная работа 1

основы программирование задание

Набрать, скомпилировать и запустить рассмотренный в теоретической части пример программы. Изменить программу так, чтобы она выводила на экран приветствие автору программы (например, «Здравствуй, Вася»).

main()

printf("здравствуй,!");}

Результат работы программы отражен на рисунке 1.1.

Рисунок 1.1 - Результат работы программы

Лабораторная работа 2

Написать программу, в которой пользователь вводит два целых числа, а компьютер выводит результат 5 рассмотренных в теоретической части арифметических операций над этими числами.

{

int a,b,c,d,e,f,g;

printf("Введите целое число a");

scanf("%i",&a);

printf("Введите целое число b");

scanf("%i",&b);

printf("a=%i\n",a);

printf("b=%i\n",b);

c=a+b;

printf("a+b=%i\n",c);

d=a-b;

printf("a-b=%i\n",d);

e=a*b;

printf("a*b=%i\n",e);

f=a/b;

printf("a/b=%i\n",f);

g=a % b;

printf("остаток деления=%i\n",g);

system("pause"); }

Результат работы программы отражен на рисунке 2.1.

Рисунок 2.1 - Результат работы программы

Написать программу, которая печатает объем памяти занимаемый одной переменной для типов int, short int, long int, float и double.

main(){

int a;

short int b;

long int c;

float d;

double e;

printf(“Size of int: %d bytes\n”,sizeof(a));

printf(“Size of short int: %d bytes\n”,sizeof(b));

printf(“Size of long int: %d bytes\n”,sizeof(c));

printf(“Size of float: %d bytes\n”,sizeof(d));

printf(“Size of double: %d bytes\n”,sizeof(e));

return 0;

}

Результат работы программы отражен на рисунке 2.2.

Рисунок 2.2 - Результат работы программы

Написать программу, которая рассчитывает параметр геометрической фигуры (номер задания равен остатку от деления номера варианта на 10): Дана длина окружности, найти площадь круга.

3. main()

{float a;

float b;

float c;

float d=3.14;

printf("Введите длину окружности\n");

scanf("%i",&a);

b=a/(2*d);

c=d*b*b;

printf("Площадь круга=%f",c);

return 0;}

Результат работы программы отражен на рисунке 2.3.

Рисунок 2.3 - Результат работы программы

Написать программу, которая приводит введенное пользователем число в переменную типа int. Это число переписывается в переменные типа short int и float. Ко всем трем переменным прибавляется единица, и полученные значения выводятся на экран. Запустите программу и введите число миллиард. Объясните полученные результаты. Примечание: все действия в программе должны быть заданы отдельными командами, в противном случае компилятор может оптимизировать программу, и результат будет отличаться от желаемого.

{int a;

short int b;

float c;

printf("Введите число\n");

scanf("%i",&a);

b=1+(short int)a;

c=1+(float)a;

a=1+a;

printf("int=%i\n",a);

printf ("short int=%i\n",b);

printf("float=%f",c);

getch();

Результат работы программы отражен на рисунке 2.4

Рисунок 2.4 - Результат работы программы

Объяснение: Переменная целочисленного типа int отображает верный результат т.к. соответствует условию задачи. Переменная short int отображает неверный результат т.к. квалификатор short позволяет проводить операции только с небольшими переменными. Переменная float отображает результат без единицы т.к. этот тип данных используется в задачах, где нужны большие числа, но не нужна высокая точность, поэтому единица в значении float отбрасывается.

Лабораторная работа 3

Написать программу, которая по номеру года определяет, является ли он високосным. Високосным считается год, номер которого делится на 4, при этом год не високосный, если он делится на 100, но не делится на 400.

main()

{

int a;

printf("Введите год\n");

scanf("%i",&a);

if ((a % 4 == 0) && ((a % 100 != 0) || (a % 400 == 0)))

printf("Год является високосным");

else

printf("Год не является високосным");

getch();

}

Результат работы программы отражен на рисунке 3.1.

Рисунок 3.1 - Результат работы программы

Написать программу, в которой пользователь вводит целое положительное число, а компьютер сообщает, сколько у этого числа делителей меньше 10.

main() {

int a,b,m;

printf("Введите число: ");

scanf("%i",&a);

m = 0;

b=1;

if(a%b == 0) m+= 1;

b=2;

if(a%b == 0) m+= 1;

b=3;

if(a%b == 0) m+= 1;

b=4;

if(a%b == 0) m+= 1;

b=5;

if(a%b == 0) m+= 1;

b=6;

if(a%b == 0) m+= 1;

b=7;

if(a%b == 0) m+= 1;

b=8;

if(a%b == 0) m+= 1;

b=9;

if(a%b == 0) m+= 1;

printf("Делителей меньше 10: %i", m);

getchar();

}

Результат работы программы отражен на рисунке 3.2.

Рисунок 3.2 - Результат работы программы

Написать программу, в которой пользователь вводит два целых положительных числа, а компьютер сообщает, верно ли что (номер задания равен остатку от деления номера варианта на 10): Среди введенных чисел есть число, делящееся на 5

main()

{

int a,b;

printf("Введите целое положительное число A\n");

scanf("%i",&a);

printf("Введите целое положительное число B\n");

scanf("%i",&b);

if((a%5==0)||(b%5==0))

printf("Есть числа делимые на 5");

else

printf("Чисел делимых на 5 нет");

getchar();

}

Результат работы программы отражен на рисунке 3.3.

Рисунок 3.3 - Результат работы программы

Взять вариант на 1 больше и решить задачу из 3 задания используя условный оператор.

main()

{

int a,b;

printf("Введите целое положительное число A\n");

scanf("%i",&a);

printf("Введите целое положительное число B\n");

scanf("%i",&b);

((a>10)&&(b>10))?(printf("Оба числа больше 10")):(printf("Условие >10 не выполняется"));

getchar();

}

Результат работы программы отражен на рисунке 3.4.

Рисунок 3.4 - Результат работы программы

Лабораторная работа 4

Написать программу, которая находит наименьший делитель введенного пользователем числа. Для этого организовать цикл, который заканчивается, когда текущее значение некоторой переменной является делителем числа, и это число увеличивается на 1 на каждом шаге цикла. Доказать, что цикл закончится при любом целом положительном числе, введенном пользователем.

main()

{

int a,b;

printf("Введите значение переменной\n");

scanf("%i",&a);

b=2;

while((a>=b)&&(a%b!=0);

b++;

printf("Наименьший делитель %i",b);

getchar();

}

Результат работы программы отражен на рисунке 4.1.1.

Рисунок 4.1.1 - Результат работы программы

Написать программу, которая находит наименьший делитель введенного пользователем числа. Для этого организовать цикл, который заканчивается, когда текущее значение некоторой переменной является делителем числа, и это число увеличивается на 1 на каждом шаге цикла. Доказать, что цикл закончится при любом целом положительном числе, введенном пользователем.

main()

{

int a,b;

printf("Введите значение переменной\n");

scanf("%i",&a);

for(b=2;(a>=b)&&(a%b!=0);b++);

printf("Наименьший делитель %i",b);

getchar();

}

Результат работы программы отражен на рисунке 4.1.2.

Рисунок 4.1.2 - Результат работы программы

Найти наибольше и наименьшие значения функции для целых аргументов от 1 до 50. Для этого использовать конструкцию выбора внутри цикла (номер задания равен остатку от деления номера варианта на 10): sin(2*3.14*i/25)

{

int i;

float y,Ymax,Ymin;

Ymax=Ymin=y=0;

printf("y=sin(2*3.14*i/25)\n");

i=1;

while(i<50)

{y=sin(2*3.14*i/25);

i++;

if(y>Ymax)

Ymax=y;

else

if(y<Ymin)

Ymin=y;

}

printf("Ymax=%f\n Ymin=%f",Ymax,Ymin);

getchar();

Результат работы программы отражен на рисунке 4.2.1.

Рисунок 4.2.1 - Результат работы программы

Найти наибольше и наименьшие значения функции для целых аргумен-тов от 1 до 50. Для этого использовать конструкцию выбора внутри цикла (номер задания равен остатку от деления номера варианта на 10): sin(2*3.14*i/25)

{

int i;

float y,Ymax,Ymin;

Ymax=Ymin=y=0;

for(i=1;i<50;i++)

{y=sin(2*3.14*i/25);

if(y>Ymax)

Ymax=y;

else

if(y<Ymin)

Ymin=y;

};

printf("Ymax=%f\nYmin=%f",Ymax,Ymin);

getchar();

Результат работы программы отражен на рисунке 4.2.2.

Рисунок 4.2.2 - Результат работы программы

Нарисовать график функции из 2 задания.

main()

{

int i,j;

float y,max,min;

max=min=y=0;

i=1;

while(i<50)

{y=sin(2*3.14*i/25);

if(y>max)

max=y;

else

if(y<min)

min=y;

i++;}

printf("max=%f\n min=%f",max,min);

j=0;

while(j<50)

{;

j++;

printf("\n");

i=1;

while(i<50)

{

if (ceil(((y=sin(2*3.14*i/25))-min)*50/(max-min))==50-j)

printf("*");

else

printf(" ");

i++;

}}

getchar();}

Результат работы программы отражен на рисунке 4.3.1.

Рисунок 4.3.1 - Результат работы программы

Нарисовать график функции из 2 задания. См. рисунок 4.3.2

main()

{

int i,j;

float y,max,min;

max=min=y=0;

//i=0;

for(i=1;i<50;i++)

{y=sin(2*3.14*i/25);

if(y>max)

max=y;

else

if(y<min)

min=y;}

printf("max=%f\n min=%f",max,min);

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

{;

printf("\n");

for(i=1;i<50;i++)

{

if (ceil(((y=sin(2*3.14*i/25))-min)*50/(max-min))==50-j)

printf("*");

else

printf(" ");

}}

getchar(); }

Результат работы программы отражен на рисунке 4.3.2.

Рисунок 4.3.2 - Результат работы программы

Лабораторная работа 5

Создать массив из 50 чисел, значения которых равны значению функции от индекса элемента. Функции взять из второго задания предыдущей лабораторной работы. Распечатать значения этого массива.

main()

{

int x;

float a[50];

for(x=0;x<50;x++)

{a[x]=sin(2*3.14*x/25);}

for(x=0;x<50;x++)

printf("%f\n",a[x]);

getchar();

}

Результат работы программы отражен на рисунке 5.1.

Рисунок 5.1 - Результат работы программы

Пользователь вводит с клавиатуры слово (не больше 19 букв). Его нужно распечатать вертикально, выводя по одной букве в строке. При выводе строки на экран нужно иметь в виду, что количество символов в строке неизвестно, но известно, что последний символ - '\0'.

main()

{int i,k;

char word[20];

scanf("%s",word);

k=strlen(word);

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

printf("%c\n",word[i]);

getchar();

}

Результат работы программы отражен на рисунке 5.2.

Рисунок 5.2 - Результат работы программы

Объявить структуру, содержащую строки, соответствующие имени и фамилии человека. Создать массив из 10 таких структур, инициализировать их именами и фамилиями любых известных людей. Напечатать список людей, чье имя совпадает с именем, которое ввел пользователь.

main()

{

struct people

{

char name[20];

char surname[20];

}peoples[11]={{"Alexander","Pushkin"},

{"Yuri","Gagarin"},{"Lev","Tolstoi"},

{"Zhores","Alferov"},{"Alexander","Fleming"},

{"Sergei","Korolev"},{"Varlam","Shalamov"},

{"Alexander","Matrosov"},{"Albert","Einstein"},

{"Alexander","Kuznetsov"},{"Charles","Darwin"}

};

int i;

//for(i=0;i<=10;i++)

//printf("%s %s\n",peoples[i].name,peoples[i].surname);

//printf("\n");

printf("NAME REQUEST:\n");

char request[20];

scanf("%s",request);

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

{if(strcmp(request,peoples[i].name)==0)

printf("%s %s\n",peoples[i].name,peoples[i].surname);

}

getchar();}

Результат работы программы отражен на рисунке 5.3.

Рисунок 5.3 - Результат работы программы

Лабораторная работа 6

Переделать первое задание из предыдущей лабораторной работы, используя вместо операции индексирования адресную арифметику.

1. main()

{

int x;

float a[50],*p;

p=a;

for(x=0;x<50;x++)

{a[x]=sin(2*3.14*x/25);

p++;}

x=0;

while(x<50)

{printf("%f\n",*p);

p++;

x++;}

getchar();

}

Результат работы программы отражен на рисунке 6.1.

Рисунок 6.1 - Результат работы программы

Для следующего фрагмента программы записать в виде таблицы значение переменных после каждого шага программы (столбцы соответствуют переменным, строки - строкам программы). Тип int и указатели занимают по 4 байта. Компилятор расположил переменные по следующим адресам: a - 100, p1 - 120, p2 - 124, s.x - 128, s.y - 132. Число N - номер варианта.

struct str {int x; int y;};

int a[5] = {1, 2, 3, 4, 5};

int *p1, *p2;

str s;

p1 = &a[N%5+1];

p2 = a+N/5+1;

s.x = *p1;

s.y = *p2++;

*(p1-2)=s.y;

;

p2->x=p1[1];

p2->y=s.y; т.к. p2=&s, то значение s.y. не меняется

a[5]=s.x;- ОШИБКА, выход за границы массива

Таблица к заданию 6.2

Лабораторная работа 7

Определить собственную функцию по вариантам из 2-го задания 4 лабораторной работы. Используя определенную функцию найти наибольше и наименьшие значения функции для целых аргументов от 1 до 50.

float minmax(float a[])

{int i;

float Ymax,Ymin;

for(i=1;i<50;i++)

{if(a[i]>Ymax)

Ymax=a[i];

else

if(a[i]<Ymin)

Ymin=a[i];};

printf("Ymax=%f\n",Ymax);

printf("Ymin=%f",Ymin);

};

main()

{int i;

float a[50];

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

{ a[i]=sin(2*3.14*i/25);}

minmax(a);

getchar();

}

Результат работы программы отражен на рисунке 7.1.

Рисунок 7.1 - Результат работы программы

Определить функцию, которая для каждого элемента переданного ей массива вычисляет функцию, определенную в 1 задании лабораторной работы, и сохраняет результат во второй массив, переданный этой функции. Заполнить массив числами от 1 до 50 и с помощью определенной функции заполнит второй массив соответствующими значениями.

2. int i;

float func(float a[],float b[])

{

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

b[i]=sin(2*3.14*a[i]/25);

}

main()

{

float a[50];

float b[50];

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

a[i]=i+1;

func(a,b);

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

printf("%f\n",b[i]);

getchar();

}

Результат работы программы отражен на рисунке 7.2.

Рисунок 7.2 - Результат работы программы

Размещено на Allbest.ru


Подобные документы

  • Элементарные конструкции языка ПАСКАЛЬ: имена, числа и строки. Стандартные типы данных. Организация ввода и вывода данных с терминального устройства. Разработка программы, изменяющей первоначальную матрицу по заданной схеме и выводящей ее на экран.

    курсовая работа [68,6 K], добавлен 09.07.2015

  • Разработка программы, которая выполняет удаление элементов внешних таблиц, а также очистку файлов, вывод таблиц на экран. Описание программного продукта. Выбор языка программирования. Схема информационных потоков. Комплект поставки и инсталляция.

    курсовая работа [180,0 K], добавлен 09.03.2009

  • Этапы написания программы на четырех языках программирования (Turbo Pascal 7.0, Borland C++ 3.11, Delphi 7, Builder C++ 6.0), которая выводит на экран имя и фамилию студента, используя стандартные средства графики и простейшие геометрические фигуры.

    контрольная работа [1,4 M], добавлен 05.06.2010

  • Предназначение цикла for - оформление циклов (набора действий) с заданным количеством повторений. Пример программы, выводящей на экран все целые числа от 0 до 99. Решение задачи с помощью двух алгоритмов, используя известные функции ввода-вывода.

    лабораторная работа [35,1 K], добавлен 15.07.2009

  • Разработка программы для поиска пути в лабиринте с возможностью задания входа и выхода, наглядное представление решений. Использование языка логического программирования Prolog. Данные и методы решения. Пользовательский интерфейс, листинг программы.

    реферат [14,3 K], добавлен 15.10.2012

  • Изучение текстового режима языка программирования Turbo Pascal. Написание игры "Змейка" с помощью средств, процедур и функций языка программирование Turbo Pascal. Структурное и функциональное описание разработки. Листинг и общие примеры работы программы.

    контрольная работа [286,3 K], добавлен 10.04.2011

  • Разработка программы в среде программирования Borland Pascal, которая является электронным тестирующим пособием в области химии для 8-10 классов. Написание алгоритма решения задачи, определение необходимых функций, процедур, модулей, файловых переменных.

    контрольная работа [389,3 K], добавлен 19.09.2010

  • Исследование теоретических аспектов разработки программы посредством использования Visual Basic. Анализ достоинств и недостатков данного языка программирования. Изучение особенностей создания интерфейса приложения. Основные этапы реализации программы.

    практическая работа [460,6 K], добавлен 22.01.2013

  • Особенности построения программ реального времени на основе параллельных процессов. Реализация простой программы, которая выводит на экран текст приветствия и завершается. Создание массива из трехсот параллельных процессов, получающих уникальный индекс.

    статья [19,8 K], добавлен 08.12.2016

  • Написание программы для вычисления функции f(x), изображенной на графике, используя оператор if. Построение графика функции. Составление программы, вычисляющей сумму 101 из последовательно расположенных нечетных чисел. Нахождение корней системы уравнений.

    контрольная работа [694,4 K], добавлен 07.08.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.