- •Министерство образования Республики Беларусь
- •Часть 1.Методически указания по курсу “Вычислительная техника и программирование
- •Содержание
- •Лабораторная работа №1 Линейный вычислительный процесс Цель работы
- •Операторы вывода информации
- •1. Формат, указывающий компилятору вид выводимой информации, признаком формата является символ %.
- •2. Управляющие символы:
- •Стандартные математические функции
- •Варианты индивидуальных заданий
- •Варианты индивидуальных заданий
- •Циклы типа while и do – while
- •Вложенные циклы
- •Варианты индивидуальных заданий
- •Контрольные вопросы
- •Лабораторная работа №4 Массивы в языке с
- •Многомерные массивы
- •Контрольные вопросы
- •Лабораторная работа №5 Функции пользователя
- •Область действия переменных
- •Контрольные вопросы
- •Лабораторная работа №6 строки и структуры
- •Краткие теоретические сведения
- •Контрольные вопросы
- •Лабораторная работа №7 Файлы в языке с
- •Краткие теоретические сведения
- •Посимвольный ввод-вывод
- •Построчный ввод-вывод
- •Блоковый ввод-вывод
- •Контрольные вопросы
- •Лабораторная работа №8 Графический режим работы в языке с
- •Kраткие теоретические сведения
- •Функции для подготовки графической системы
- •Основные функции для получения изображения
- •Варианты индивидуальных заданий
- •Контрольные вопросы
- •Задание опций интегрированной среды
- •Набор текста программы
- •Компиляция, редактирование связей, запуск программы на выполнение
- •Многофайловая компиляция
- •Отладка программы
- •Использование глобальных переменных, объявленных вне файла
- •Литература
- •Учебное издание
Посимвольный ввод-вывод
В операциях посимвольного ввода-вывода происходит прием одного символа из файла или передача одного символа в файл.
|
Функция |
Действие функции |
|
int fgets(FILE *fp) |
Читает и возвращает символ из открытого файла |
|
int fgetchov(void) |
Читает и возвращает символ из файла stdin |
|
int ungetc(int ch, FILE *fp) |
Возвращает символ ch в файл. Следующая операция чтения символа из файла вернет этот символ |
|
int fputs(int ch, FILE *fp) |
Записывает в файл код ch символа |
Построчный ввод-вывод
В операциях построчного ввода-вывода за один прием происходит перенос из файла (или в файл) строк символов.
|
1 |
2 |
|
Функция |
Действие функции |
|
int gets (char *S) |
Читает байты из файла stdin и записывает их в строку S до тех пор, пока не встретит символ ' \n ', который заменяется на нуль-терминатор |
|
int fgets (char *S int m, FILE *fp) |
Извлекает байты из файла, описываемого fp, и записывает их в строку S до тех пор, пока не встретит символ ' \n ' или пока не будет считано m байтов |
|
1 |
2 |
|
int fputs (char *S, FILE *fp) |
Записывает в файл байты из строки S до тех пор, пока не встретится нуль-терминатор, который в файл не переносится и на символ ' \n ' не заменяется |
|
int puts (char *S) |
Записывает в файл stdout байты из строки S до тех пор, пока не встретится нуль-терминатор, который в файл переносится и заменяется на символ ' \n ' |
Блоковый ввод-вывод
В операциях блокового ввода-вывода работа происходит с целыми блоками информации.
|
Функции |
Действие функции |
|
int freod (void *ptv, int size, int n, FILE *fp) |
Считывает n блоков по size байт каждый из файла fp в область памяти, на которую указывает указатель ptv (необходимо заранее отвести память под считываемый блок) |
|
int fwute (void *ptv, int size, int n, FILE *fp) |
Записывает n блоков по size байт каждый из области памяти, на которую указывает ptv, в открытый файл fp |
Пример работы с файлами
Следующая программа формирует целочисленный бинарный файл, дозаписывает в его окончание новые данные и выводит сохраненные данные на печать:
#include <stdio.h>
#include <conio.h>
void main(void)
{
int a=1, b=20, c, d;
FILE *in, *out, *add;
clrscr();
/* ........ ЗАПИСЬ ЧИСЕЛ В ФАЙЛ ......*/
in=fopen("lr8.dat","wb");
fprintf(in,"%d %d \n",a,b);
fclose(in);
puts("ЧИСЛА a, b ЗАПИСАНЫ В ФАЙЛ");
puts("Press any key...");
getch();
/* ......... ЧТЕНИЕ ЧИСЕЛ ИЗ ФАЙЛА ........*/
out=fopen("lr8.dat","rb");
fscanf(out,"%d%d", &c, &d);
printf("\n a=%d b=%d ", c, d);
fclose(out);
puts("\n ЧИСЛА ПРОЧИТАНЫ ИЗ ФАЙЛА");
puts("Press any key...");
getch();
/* ......... ДОПОЛНЕНИЕ ФАЙЛА ..........*/
add=fopen("lr8.dat","a");
puts("ВВЕДИТЕ ЧИСЛА ЦЕЛОГО ТИПА c и d");
scanf("%d%d",&c,&d);
fprintf(add,"%d %d \n",c,d);
printf("\n c=%d d=%d \n ",c,d);
fclose(add);
puts("ЧИСЛА c и d ДОПИСАНЫ В ФАЙЛ");
puts("Press any key...");
getch();
/* ......... ЧТЕНИЕ ЧИСЕЛ ИЗ ФАЙЛА ........*/
out=fopen("lr8.dat","rb");
fscanf(out,"%d%d%d%d", &a, &b, &c, &d);
printf("\n a=%d b=%d ", a, b);
printf("\n c=%d d=%d ", c, d);
fclose(out);
puts("\n РАСШИРЕННЫЙ ФАЙЛ!");
puts("Press any key...");
getch();
}
Варианты индивидуальных заданий
В программе предусмотреть создание меню со следующими пунктами:
СОЗДАНИЕ НОВОГО ФАЙЛА.
ПРОСМОТР СОЗДАННОГО ФАЙЛА.
КОРРЕКЦИЯ ФАЙЛА – дозапись новых данных или исправление старых.
ПРИМЕНИТЬ ФАЙЛ ТИПА ЗАПИСЬ!
1. Список товаров, имеющихся на складе, включает:
наименование товара;
количество единиц товара;
цену единицы товара;
дату поступления товара на склад.
ВЫВЕСТИ В АЛФАВИТНОМ ПОРЯДКЕ СПИСОК ТОВАРОВ, ХРАНЯЩИХСЯ БОЛЕЕ ОДНОГО МЕСЯЦА, СТОИМОСТЬ КОТОРЫХ ПРИВЫШАЕТ 1000000 РУБЛЕЙ.
2.Для получения места в общежитии формируется список студентов, который включает:
Ф.И.О. студента;
номер группы (буква и четыре цифры);
средний балл;
доход на одного члена семьи.
Общежитие в ПЕРВУЮ очередь предоставляется тем студентам, у кого доход на члена семьи меньше двух минимальных зарплат, затем остальным в порядке уменьшения среднего балла.
ВЫВЕСТИ СПИСОК ОЧЕРЕДНОСТИ ПРЕДОСТАВЛЕНИЯ МЕСТА В ОБЩЕЖИТИИ.
3. В справочной автовокзала хранится расписание движения автобусов. Для каждого рейса указаны:
номер рейса;
тип автобуса;
пункт назначения;
время отправления;
время прибытия на конечный пункт.
ВЫВЕСТИ ИНФОРМАЦИЮ О РЕЙСАХ, КОТОРЫМИ МОЖНО ВОСПОЛЬЗОВАТЬСЯ ДЛЯ ПРИБЫТИЯ В ПУНКТ НАЗНАЧЕНИЯ РАНЬШЕ ЗАДАННОГО ВРЕМЕНИ.
4. На междугородной АТС информация о разговорах содержит:
дату разговора;
код и название города;
время разговора;
тариф;
номер телефона в этом городе;
номер телефона абонента.
ВЫВЕСТИ ПО КАЖДОМУ ГОРОДУ ОБЩЕЕ ВРЕМЯ РАЗГОВОРА С НИМ И СУММУ.
5.Информация о сотрудниках фирмы включает:
Ф.И.О. сотрудников;
табельный номер;
количество проработанных часов за месяц;
почасовой тариф.
Рабочее время свыше 144 часов считается сверхурочным и оплачивается в двойном размере. ВЫВЕСТИ РАЗМЕР ЗАРАБОТНОЙ ПЛАТЫ КАЖДОГО СОТРУДНИКА ФИРМЫ ЗА ВЫЧЕТОМ ПОДОХОДНОГО НАЛОГА, КОТОРЫЙ СОСТАВЛЯЕТ 12% ОТ СУММЫ ЗАРАБОТНОЙ ПЛАТЫ.
6. Информация об участниках спортивных соревнований содержит:
Ф.И.О. игрока;
игровой номер;
возраст;
рост;
вес.
Вывести информацию о самой молодой, рослой и легкой команде.
7. Для книг, хранящихся в библиотеке, задаются:
регистрационный номер книги;
автор;
название;
год издания;
издательство;
количество страниц.
Вывести список книг с фамилиями авторов в алфавитном порядке, изданных после заданного года.
8. Различные цеха завода выпускают продукцию нескольких наименований. Сведения о выпущенной продукции включают:
наименование;
количество;
номер цеха.
Для заданного цеха необходимо вывести количество выпущенных изделий по каждому наименованию в порядке убывания количества.
9. Информация о сотрудниках предприятия содержит:
Ф.И.О.;
номер отдела;
должность;
дату начала работы.
Вывести список сотрудников по отделам в порядке убывания стажа.
10. Создать файл, содержащий сведения о месячной заработной плате сотрудников отдела. Каждая запись содержит поля: фамилия сотрудника, наименование отдела, размер заработной платы за месяц.
- Вычислить общую сумму выплат за месяц по отделу А, а также среднемесячный заработок сотрудникам этого отдела.
Напечатать для бухгалтерии ведомость для сотрудников этого отдела, у которых зарплата ниже введенной с клавиатуры.
11. Создать файл, содержащий сведения о количестве изделий категорий А, В, С, собранных рабочими за месяц. Структура записи имеет поля: фамилия сборщика, наименование цеха, количество изделий по категории, собранных рабочими за месяц.
Считая данными (вводятся с клавиатуры) значения расценок Sa, Sв, Sc за выполненную работу по сборке единицы изделия категорий А, В, С соответственно, выдать на печать следующую информацию:
- общее количество изделий категорий А, В, С, собранных рабочими цеха X;
- ведомость заработной платы рабочих цеха X;
средний размер заработной платы работников этого цеха.
12. Создать файл, содержащий сведения о телефонах абонентов. Каждая запись имеет поля: фамилия абонентов, год установки телефона, номер телефона. На печать вывести информацию следующего вида:
по вводимой с клавиатуры фамилии абонента выдается номер телефона;
определяется количество установленных телефонов с XXXX года (год вводится с
клавиатуры).
13. Создать файл, содержащий сведения об ассортименте игрушек в магазине. Структура записи: название игрушки, цена, количество, возрастные границы, например 2 – 5, т.е. от 2 до 5 лет. Вывести на печать:
название игрушек, которые подходят детям от 1 до 3 лет;
стоимость самой дорогой игрушки и ее наименование;
название игрушки, которая по стоимости не превышает «х» руб. Значение «х» вводится с
клавиатуры.
14. Создать файл, содержащий сведения о сдаче студентами сессии. Структура записи: номер группы, фамилия студента, оценки по пяти экзаменам и пяти зачетам (зачет – незачет). На печать вывести:
фамилии неуспевающих студентов с указанием номера группы и количества
задолженностей;
средний балл, полученный каждым студентом группы Х (вводится с клавиатуры) и всей
группой в целом.
15. Создать файл, содержащий сведения об ассортименте обуви в магазине. Структура записи: артикул, наименование, количество, стоимость одной пары. Артикул начинается с буквы Д для женской обуви, М для мужской, П для детской. На печать вывести информацию:
о наличии и стоимости обуви артикула Х (вводится с клавиатуры);
ассортиментный список женской обуви с указанием наименования и имеющего в наличии
числа пар каждой модели.
16. Для участия в конкурсе исполнителей необходимо заполнить анкету с данными:
Ф.И.О.;
год рождения;
название страны;
класс музыкального инструмента (гитара, фортепиано, скрипка, виолончель).
ВЫВЕСТИ СПИСОК САМЫХ МОЛОДЫХ ЛАУРЕАТОВ КОНКУРСА ПО КЛАССАМ ИНСТРУМЕНТОВ В ПОРЯДКЕ ЗАНЯТЫХ МЕСТ.
17. Составить программу, которая записывает в файл S сначала компонент файла F, затем компонент файла G с сохранением порядка.
18. Составить программу, которая подсчитывает количество элементов непустого файла в типе int, больших среднего арифметического всех элементов этого файла, и переписывает эти элементы в файл d.
19. Составить программу определения: совпадают ли компоненты файла FS с компонентами файла GS. Если нет, то определить номера 1-го и 2-го компонента, в которых есть отличие.
20. Написать программу, которая из файла a переписывает в файл w все весенние даты, а затем в файл t все осенние.
21. Написать программу, которая перепишет с сохранением порядка следования компоненты файла F в файл G, а компонента файла G в файл F. (Использовать вспомогательный файл).
22. Написать программу, которая объединит два файла типа int в один файл: сначала все положительные элементы, затем отрицательные элементы.
23. Задан текстовый файл С, состоящий из произвольной последовательности буквенных символов. Упорядочить символы в алфавитном порядке, при этом все повторяющиеся символы должны быть удалены, и переписать новый текст в файл D.
24. Даны два файла: a-типа int, b-типа chav. Составить программу слияния этих файлов в один по алгоритму – цифра вставляется после двух символов.
25. Переписать компоненты символьного файла FS в файл GS, заменив при этом каждый восклицательный знак точкой, а каждое двоеточие – тремя точками.
26. Компоненты файла FS – символ. Слова отделены пробелом. Получить копию файла FS в файле GS.
27. Компоненты файла H – натуральные числа. Переписать в файл М все удвоенные нечетные числа.
28. Составить программу записи в файл GS всех чисел файла FS, кратных 5, а в файл HS – всех отрицательных чисел, кратных 3.
29. Дан файл Е, который содержит данные о студентах групп (фамилия – имя – возраст). Создать файл F, который будет содержать данные о студентах, имеющих наибольший возраст.
30. Написать программу, которая объединяет два файла типа int: сначала все сотни, потом десятки, потом единицы.
