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

  • Вид работы:
    Контрольная работа
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    1,29 Мб
  • Опубликовано:
    2016-02-09
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

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

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

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

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








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

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

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

ВАРИАНТ №6


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

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

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

 

main()

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

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

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

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

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

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

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

scanf("%i",&a);("Введите целое число b");("%i",&b);("a=%i\n",a);("b=%i\n",b);=a+b;("a+b=%i\n",c);=a-b;("a-b=%i\n",d);=a*b;("a*b=%i\n",e);=a/b;("a/b=%i\n",f);=a % b;("остаток деления=%i\n",g);("pause"); }

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

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

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

main(){a;int b;int c;d;e;(“Size of int: %d bytes\n”,sizeof(a));(“Size of short int: %d bytes\n”,sizeof(b));(“Size of long int: %d bytes\n”,sizeof(c));(“Size of float: %d bytes\n”,sizeof(d));(“Size of double: %d bytes\n”,sizeof(e));

return 0;

}

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

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

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

3. main()

{float a;b;

float c;d=3.14;("Введите длину окружности\n");

scanf("%i",&a);=a/(2*d);

c=d*b*b;("Площадь круга=%f",c);0;}

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

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

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

{int a;int b;

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

scanf("%i",&a);=1+(short int)a;=1+(float)a;=1+a;("int=%i\n",a);("short int=%i\n",b);("float=%f",c);();

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

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

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

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

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

 

main()

{a;("Введите год\n");("%i",&a);((a % 4 == 0) && ((a % 100 != 0) || (a % 400 == 0)))("Год является високосным");("Год не является високосным");();

}

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

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

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

main() {a,b,m;("Введите число: ");("%i",&a);= 0;=1;(a%b == 0) m+= 1;=2;(a%b == 0) m+= 1;=3;(a%b == 0) m+= 1;=4;(a%b == 0) m+= 1;=5;(a%b == 0) m+= 1;=6;(a%b == 0) m+= 1;=7;(a%b == 0) m+= 1;=8;(a%b == 0) m+= 1;=9;(a%b == 0) m+= 1;("Делителей меньше 10: %i", m);();

}

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

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

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

()

{a,b;("Введите целое положительное число A\n");("%i",&a);("Введите целое положительное число B\n");

scanf("%i",&b);((a%5==0)||(b%5==0))

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

}

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


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

()

{a,b;("Введите целое положительное число A\n");("%i",&a);("Введите целое положительное число B\n");("%i",&b);

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

}

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

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

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

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

()

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

scanf("%i",&a);=2;((a>=b)&&(a%b!=0);++;

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

getchar();

}

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

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

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

()

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

scanf("%i",&a);(b=2;(a>=b)&&(a%b!=0);b++);("Наименьший делитель %i",b);();

}

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

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

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

{i;y,Ymax,Ymin;=Ymin=y=0;("y=sin(2*3.14*i/25)\n");=1;(i<50)

{y=sin(2*3.14*i/25);++;(y>Ymax)=y;(y<Ymin)=y;

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

getchar();

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

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

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

{i;y,Ymax,Ymin;=Ymin=y=0;(i=1;i<50;i++)

{y=sin(2*3.14*i/25);(y>Ymax)=y;(y<Ymin)=y;

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

getchar();

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

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

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

main()

{i,j;y,max,min;=min=y=0;=1;(i<50)

{y=sin(2*3.14*i/25);(y>max)=y;(y<min)=y;++;}("max=%f\n min=%f",max,min);=0;(j<50)

{;++;("\n");=1;(i<50)

{(ceil(((y=sin(2*3.14*i/25))-min)*50/(max-min))==50-j)("*");(" ");++;

}}();}

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

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

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

()

{i,j;y,max,min;=min=y=0;

//i=0;(i=1;i<50;i++)

{y=sin(2*3.14*i/25);(y>max)=y;(y<min)=y;}

("max=%f\n min=%f",max,min);(j=0;j<50;j++)

{;("\n");(i=1;i<50;i++)

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

else

printf(" ");

}}

getchar(); }

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

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

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

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

{x;a[50];(x=0;x<50;x++)

{a[x]=sin(2*3.14*x/25);}(x=0;x<50;x++)("%f\n",a[x]);

getchar();

}

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

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

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

main()

{int i,k;word[20];("%s",word);=strlen(word);(i=0;i<k;i++)("%c\n",word[i]);

getchar();

}

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

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

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

main()

{people

{name[20];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"}

};i;

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

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

//printf("\n");("NAME REQUEST:\n");request[20];("%s",request);(i=0;i<=10;i++)

{if(strcmp(request,peoples[i].name)==0)("%s %s\n",peoples[i].name,peoples[i].surname);

}();}

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

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

 

 

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

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

1. main()

{x;a[50],*p;=a;(x=0;x<50;x++)

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

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

}

Результат работы программы отражен на рисунке 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};*p1, *p2;s;= &a[N%5+1];= a+N/5+1;.x = *p1;.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;Ymax,Ymin;(i=1;i<50;i++)

{if(a[i]>Ymax)=a[i];(a[i]<Ymin)=a[i];};("Ymax=%f\n",Ymax);("Ymin=%f",Ymin);

};

()

{int i;a[50];(i=0;i<50;i++)

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

}

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

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

2. int i;func(float a[],float b[])

{(i=0;i<50;i++)[i]=sin(2*3.14*a[i]/25);

}

()

{a[50];b[50];(i=0;i<50;i++)[i]=i+1;(a,b);(i=0;i<50;i++)("%f\n",b[i]);();

}

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

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

Похожие работы на - Основы языка Си

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!