КОНТРОЛЬНАЯ РАБОТА №2 по «Информатике»
для студентов 1 курса заочного отделения специальности
Вычислительные машины, комплексы, системы и сети инженерно-технического института
Разработала: Ст.преподаватель кафедры ПОВТ Фурдуй Ольга Михайловна
Тирасполь, 2008
Содержание:
- Предисловие…………………………………………………………..с.3
- Программа дисциплины на 2 семестр……………………………….с.4
- Правила выполнения и оформления контрольной работы №2…….с.5
- Образец выполнения контрольной работы………………………….с.7
- Задания для контрольной работы №2……………………………… с.15
- Литература……………………………………………………………. с.49
- Номера вариантов……………………………………………………..с.50
Предисловие
Студенты-заочники первого курса инженерно-технического института изучают предмет «Информатика» в течение всего первого курса: первый семестр — пользовательский курс, второй семестр — основы программирования на языке высокого уровня.
Основной формой обучения студента-заочника является самостоятельная работа, которая включает в себя изучение теоретического и практического материала по учебникам и учебным пособиям. Каждому студенту необходимо во 2 семестре выполнить контрольную работу № 2, получить зачет по контрольной работе №2 и затем сдать экзамен. В процессе всего курса студент может получать у преподавателя необходимые ему устные консультации.
В настоящем пособии приводятся:
- программа курса «Информатика» во втором семестре;
- правила выполнения и оформления контрольной работы;
- образец выполнения контрольной работы;
- задания для выполнения контрольной работы;
- список вопросов к экзамену;
- литература.
Программа курса «Информатика» во втором семестре
Тема: Инструментальное программное обеспечение
- Понятие алгоритма. Особенности алгоритмов. Свойства алгоритмов.
- Сложность большой задачи. Постановка задачи для ЭВМ.
- Обзор современных языков программирования. Язык Си.
- Технология программирования в интегрированной среде.
- Основные типы данных и их внутреннее представление.
- Переменные и константы.
- Операции и выражения в языке Си.
- Преобразования типов.
- Стандартные функции ввода/вывода. Примеры задач.
- Операторы управления вычислительным процессом.
- Массивы. Одномерные и двумерные массивы. Инициализация массивов.
- Основные алгоритмы работы с массивами.
- Функции. Передача параметров и возврат значений из функции.
Правила выполнения и оформления контрольной работы
- Контрольная работа должна быть выполнена в срок, указанный в учебном графике.
- На титульном листе должны быть четко написаны Ф.И.О. студента, факультет, курс, группа,
номер варианта, номер зачетной книжки и Ф.И.О. преподавателя. - Контрольная работа должна быть зарегистрирована у методистов заочного отделения.
- Контрольную работу следует выполнить на писчей бумаге формата А4, оставляя поля для за-
мечаний. - Контрольная работа должна быть выполнена в интегрированной среде BorlandC 0 или 5.0.
- Для защиты контрольной работы (перед экзаменом во время летней сессии) необходимо пре
доставить преподавателю дискету 3,5″, содержащую тексты программ в формате *.срр. - Все задачи входящие в вариант, должны быть решены. Перед решением каждой задачи необ-
ходимо записать полный текст ее условия. После решения каждого задания необходимо ос-
тавлять место для учета возможных замечаний. - При получении не допущенной к защите работы, студент должен выполнить ее повторно. За-
дачи с ошибками переписать заново полностью без ошибок и сдать на проверку вместе с не
зачтенной работой. - Зачтенная работа допускается к защите.
- Контрольная работа не проверяется, если студент решил не свой вариант.
- Зачтенная работа в обязательном порядке предъявляется на экзамене.
- В контрольную работу входит задание одного варианта, определяемого согласно списку, при-
лагаемого к заданиям данной контрольной работы.
Контрольная работа состоит из задач, которые следует реализовать в виде программ, написанных на языке Си. В контрольной работе представлены задачи по следующим темам:
- линейные алгоритмы;
- разветвляющиеся алгоритмы;
- циклические алгоритмы;
- векторы;
- матрицы.
Задачи, как правило, не требуют глубоких математических или других специальных знаний, то есть для решения предложенных задач достаточно школьного курса и лишь в некоторых случаях требуется знание некоторых элементов аналитической геометрии, векторной алгебры и математического анализа (данные дисциплины изучаются в 1 семестре 1 курса в курсе «Математического анализа» и «Алгебра и аналитическая геометрия»).
Программы должны быть написаны и оформлены согласно следующим требованиям.
- программа не должна содержать синтаксических, логических, орфографических ошибок;
- каждый оператор должен быть записан на новой строке;
- необходимо оставлять отступы от левого края текста программы, то есть текст программы
должен быть написан согласно соподчиненности операторов, например операторы, выполняе-
мые в случае истинности или ложности условия в операторе if…else, следует писать правее,
например:
if(N%3== 0)
printf(«Число %d кратно трем», N); else
printf(«Число %d не кратно трем», N);
как видно оператор вызова функции printf(); записан правее на 2 знакоместа.
Аналогичное требование распространяется на операторы циклических вычислений.
- следует выбирать осмысленные имена переменных и постоянных величин;
- обязательно использовать пустые строки для того, чтобы отделить одну часть функции от
другой; - для документирования программы необходимо использовать комментарии.
Главное требование, которому должна удовлетворять программа, — работать в полном соответствии со спецификацией и адекватно реагировать на любые действия пользователя.
Критериями качества программы служат следующие показатели (по убыванию важности):
- оригинальность решения;
- объем памяти, занимаемой программой (с учетом памяти, отводимой под массивы);
- трудоемкость вычислений, то есть эффективность алгоритма;
- лаконичность и наглядность программы, включая наличие и качество комментариев.
Задание №2
2.27
Написать программу, которая после введенного с клавиатуры числа (в диапазоне от 1 до 99), обозначающего денежную единицу, дописывает слово «копейка» в правильной форме. Например, 5 копеек, 41 копейка и т.д.
#include <stdio.h>
#include <conio.h>
void main()
{
clrscr();
int k;
printf(«Введите количество копеек (1-99) «);
a:scanf(«%d»,&k);
if(k<1||k>99)
{
printf(«Ошибка ввода!\nПовторите ввод «);
goto a;
}
else
if(k>10&&k<15)
printf(«%d копеек»,k);
else
switch(k%10)
{
case 1:
printf(«%d копейка»,k);
break;
case 2:
case 3:
case 4:
printf(«%d копейки»,k);
break;
default:
printf(«%d копеек»,k);
}
getch();
}
Задание №3
2.77
Имеется пронумерованный список деталей: 1 — шуруп, 2 — гайка, 3 — винт, 4 — гвоздь, 5 — болт. Составить программу, которая по номеру детали выводит на экран ее название.
#include <stdio.h>
#include <conio.h>
void main(void)
{
clrscr();
int detal;
a:printf(«для получения названия детали введите номер (от 1 до 5) «);
scanf(«%d»,&detal);
switch(detal)
{
case 1:
printf(«шуруп»);
break;
case 2:
printf(«гайка»);
break;
case 3:
printf(«винт»);
break;
case 4:
printf(«гвоздь»);
break;
case 5:
printf(«болт»);
break;
default:
printf(«Ошибка ввода»);
goto a:
}
getch();
}
Задание №5
3.77
Напишите программу, которая выводит на экран таблицу значений функции у= 2х2-5х-8 в диапазоне от -4 до 4. Шаг изменения аргумента 0,2.
#include <stdio.h>
#include <conio.h>
void main(void)
{
clrscr();
float x;
printf(«Таблица значений функции y=2x^2-5x-8 на отрезке [-4;4] с шагом 0.2\n\n»);
printf(«\tАргумент\t\tФункция\n\n»);
for(x=-4;x<=4;x+=0.2)
printf(«\t%6.1f\t\t%14.2f\n»,x,2*x*x-5*x-8);
getch();
}
Задание №6
3.127
Найти на отрезке [n;m] натуральное число, имеющее наибольшее количество делителей.
#include <stdio.h>
#include <conio.h>
void main(void)
{
clrscr();
int n,m,i,j,k,temp,temp_k;
printf(«Введите нижнюю границу отрезка «);
scanf(«%d»,&n);
printf(«Введите верхнюю границу отрезка «);
scanf(«%d»,&m);
temp=n,temp_k=0;
for(i=n;i<m;i++)
{
k=0;
for(j=1;j<=i/2;j++)
if(i%j= =0)
k++;
if(temp_k<k)
{
temp_k=k;
temp=i;
}
}
printf(«\nНаибольшее количество делителей=%d имеет число %d»,temp_k,temp);
getch();
}
Задание №7
4.27
Дан массив целых чисел. Вывести на печать только те числа, у которых выполняется условие: число не больше собственного индекса в массиве.
#include <stdio.h>
#include <conio.h>
#define n 10
void main(void)
{
int i,j,k=0;
int mas[n];
clrscr();
printf(«Введите элементы массива\n»);
for(i=0;i<n;i++)
scanf(«%d»,&mas[i]);
printf(«Элементы массива,значения которых не превышает их индекса:\n»);
for(i=0;i<n;i++)
if(mas[i]<=i)
printf(«%5d»,mas[i]);
getch();
}
Задание №8
4.77
Найти максимальный элемент массива и получить новый массив, каждый элемент которого получен умножением элемента исходного массива на максимальный.
#include <stdio.h>
#include <conio.h>
#define n 10
void main()
{
clrscr();
float mas1[n],mas2[n],max;
int i;
//ввод массива
printf(«\nВведите элементы массива\n»);
for(i=0;i<n;i++)
scanf(«%f»,&mas1[i]);
max=mas1[0];//пусть нулевой элемент — максимален
for(i=1;i<n;i++)
if(max<mas1[i])
max=mas1[i];
//формирование и вывод нового массива
printf(«\nНовый массив:\n»);
for(i=0;i<n;i++)
{
mas2[i]=mas1[i]*max;
printf(«%10.2f»,mas2[i]);
}
getch();
}
Задание №9
5.27
Определить номера тех строк целочисленной матрицы А[N, К], которые совпадают с массивом D[K]. Если таких строк нет, выдать соответствующее сообщение.
#include <stdio.h>
#include <conio.h>
#define n 5
#define k 6
void main()
{
clrscr();
int A[n][k],D[k],i,j,s;
int S=0;
//ввод матрицы
printf(«\t\tВведите двумерный массив\n»);
for(i=0;i<n;i++)
{
printf(«\nВведите элементы %d строки\n»,i+1);
for(j=0;j<k;j++)
scanf(«%d»,&A[i][j]);
}
//ввод одномерного массива
printf(«\n\n\t\tВведите одномерный массив\n»);
for(j=0;j<k;j++)
scanf(«%d»,&D[j]);
for(i=0;i<n;i++)
{
s=0;
for(j=0;j<k;j++)
if(A[i][j]= =D[j])
s++;
if(s= =k)
{
S++;
printf(«\n%d cтрока двумерного массива полностью совпадает с одномерным массивом\n»,i);
}
}
if(S= =0)
printf(«\nВ двумерном массиве нет строк полностью совпадающих с одномерным массивом»);
getch();
}
Задание №10
5.77
Матрица m*n состоит из нулей и единиц. Найти в ней самую длинную цепочку подряд стоящих нулей по горизонтали.
#include <stdio.h>
#include <conio.h>
#define m 3
#define n 8
void main()
{
clrscr();
int A[m][n],i,j;
int S,max=1;
//ввод матрицы
printf(«\t\tВведите двумерный массив(нули или единицы)\n»);
for(i=0;i<m;i++)
{
printf(«\nВведите элементы %d строки\n»,i+1);
for(j=0;j<n;j++)
scanf(«%d»,&A[i][j]);
for(i=0;i<m;i++)
{
S=1;
for(j=0;j<n;j++)
if(A[i][j]= =0&&A[i][j+1]= =0)
S++;
if(max<S)
max=S;
}
printf(«\nСамая длинная цепочка состоит из %d нулей»,max);
getch();
}
Задание №11
Написать функцию, которая вычисляет объем цилиндра. Параметрами функции должны быть радиус и высота цилиндра.
#include<stdio.h>
#include<conio.h>
#define PI 3.1415
float ob(float h,float r)
{
return(PI*r*r*h);
}
void main()
{
float r,h,v;
puts(«Вычисление объема цилиндра\n»);
printf(«ВВедите высоту и радиус основания\n»);
scanf(«%f%f»,&r,&h);
v=ob(h,r);
printf(«Объем цилиндра %3.3f\n»,v);
getch();
}
Задание №12
Дана последовательность положительных чисел. Найти произведение чисел, больших заданного N:
#include<stdio.h>
#include<conio.h>
#include<math.h>
int func(int *,int, int);
void main()
{
clrscr();
int m[5],n,v;
for(int i=0;i<5;i++)
{
printf(» Введите %d –ый элемент массива «,i+1);
scanf(«%d»,&m[i]);
}
puts(«Введите заданное число n\n»);
scanf(«%d»,&n);
v=func(&m[0],5,n);
if(v==0)
printf(» Чисел больших заданного %d нет\n»,n);
else
printf(«Произведение чисел, больших заданного %d = %d \n»,n,v);
getch();
}
int func(int *pm,int n,int m)//
{
int a=1;
for(int i=0;i<n;i++)
if(*(pm+i)>m)
a*=*(pm+i);
return a;
}