- •Предисловие
- •Знакомство с языком C
- •Структура программы
- •Пример простой программы
- •Более сложный пример
- •Контрольные вопросы
- •Основные понятия, объявление переменных, типы данных
- •Объявление переменных
- •Примеры описаний переменных:
- •Основные типы данных
- •Производные типы.
- •Контрольные вопросы
- •Ввод/вывод с помощью функций printf() и scanf().
- •Модификаторы спецификаций преобразования используемые в функции printf()
- •Применение функции scanf()
- •Контрольные вопросы
- •Операции
- •Простейшие арифметические операции
- •Операция присваивания
- •Использование в выражениях операндов разных типов
- •Операции преобразования типов
- •Дополнительные арифметические операции
- •Дополнительные операции присваивания
- •Операции отношения
- •Логические операции
- •Приоритеты операций
- •Таблица 3. Таблица приоритетов рассмотренных выше операций
- •Контрольные вопросы
- •Операторы
- •Оператор-выражение
- •Ветвление
- •Условный оператор
- •Оператор switch
- •Оператор break
- •Циклы
- •Цикл while
- •Цикл do…while
- •Цикл for
- •Другие операторы
- •Оператор continue
- •Оператор goto
- •Оператор вызова функции
- •Контрольные вопросы
- •Обработка числовых последовательностей
- •Последовательная обработка
- •Обработка числовых последовательностей
- •Примеры
- •Контрольные вопросы
- •Последовательная обработка символьных данных
- •Символьные данные
- •Последовательная обработка символов
- •Функции getchar( ) и putchar( )
- •Контрольные вопросы
- •Обработка массивов
- •Массивы
- •Объявление массива
- •Использование и обработка массивов
- •Примеры
- •Контрольные вопросы
- •Указатели и динамические массивы
- •Указатели
- •Динамическое выделение памяти
- •Статические и динамические массивы
- •Контрольные вопросы
- •Подпрограммы
- •Описание подпрограмм
- •Параметры подпрограмм
- •Область действия переменных
- •Примеры
- •Контрольные вопросы
- •Рекурсивные функции
- •Понятие рекурсивной функции
- •Контрольные вопросы
- •Символьные строки и функции обработки строк
- •Посимвольная обработка строк
- •Пример программы
- •Контрольные вопросы
- •Структуры
- •Тип данных структура
- •Контрольные вопросы
- •Работа с файлами
- •Примеры
- •Контрольные вопросы
- •Массивы и функции как параметры
- •Указатели на функции
- •Массивы и указатели
- •Указатели и двумерные массивы
- •Пример
- •Технологии программирования
- •Структурное программирование
- •Модульное программирование
- •Объектно-ориентированное программирование
- •Компонентное программирование
- •Структурная декомпозиция задачи и разработка алгоритмов и программ методами сверху вниз и снизу вверх
- •Контрольные вопросы
- •Модульное программирование
- •Работа с графикой на языке C и модуль graphics.h
- •Типы видео мониторов и их режимы
- •Инициализация графики
- •Система координат
- •Основные графические функции
- •Функции рисования
- •Функции изменения параметров рисования
- •Шаблоны линий
- •Шаблоны закраски
- •Задание на расчетно-графическую работу
- •Порядок выполнения работы
- •Задание
- •Задание для вариантов 1-11
- •Задание для вариантов 12-20
- •Задание для вариантов 21-40
- •Пример исходных данных для вариантов 12-16
- •Задание для вариантов 41-60
- •Варианты индивидуальных заданий
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Вариант 15
- •Вариант 16
- •Вариант 17
- •Вариант 18
- •Вариант 19
- •Вариант 20
- •Вариант 21
- •Вариант 22
- •Вариант 23
- •Вариант 24
- •Вариант 25
- •Вариант 26
- •Вариант 27
- •Вариант 28
- •Вариант 29
- •Вариант 30
- •Вариант 31
- •Вариант 32
- •Вариант33
- •Вариант 34
- •Вариант 35
- •Вариант 36
- •Вариант 37
- •Вариант 38
- •Вариант 39
- •Вариант 40
- •Вариант 41
- •Вариант 42
- •Вариант 43
- •Вариант 44
- •Вариант 45
- •Вариант 46
- •Вариант 47
- •Вариант 48
- •Вариант 49
- •Вариант 50
- •Вариант 51
- •Вариант 52
- •Вариант 53
- •Вариант 54
- •Вариант 55
- •Вариант 56
- •Вариант 57
- •Вариант 58
- •Вариант 59
- •Вариант 60
- •Задания на курсовую работу
- •Требования к курсовой работе
- •Этапы разработки программ
- •Содержание отчета по курсовой работе
- •Задания к курсовой работе
- •Литература
- •Функции консольного ввода/вывода
- •Функции обработки строк
- •Функции преобразования данных
Прототип функции:
int feof (FILE *f);
Функция возвращает значение “истина” (не 0), если достигнут конец файла, и значение “ложь” (0) в противном случае.
Примеры
Задача. Входной файл st.txt содержит сведения о сдаче студентами группы экзаменационной сессии. Каждая запись файла содержит фамилию и инициалы студента (15 символов) и пять оценок (5 символов) и завершается символом ”перевод строки”. Напечатать список студентов с указанием среднего балла каждого студента.
Программа: |
|
/*----------------------------------------- |
*/ |
/* Печать среднего балла каждого студента */ |
|
/*----------------------------------------- |
*/ |
#include <stdio.h> |
|
#include <conio.h> |
|
struct STUDENT |
/* фамилия и.о. */ |
{ char fio[15]; |
|
char oc[7]; |
/* 5 оценок + '\n' + '\0' */ |
}; |
|
void main() |
/* указатель на входной файл */ |
{ FILE *f; |
|
struct STUDENT |
tz; /* текущая запись файла */ |
int i, |
/* сумма оценок */ |
s; |
if ((f= fopen("st.txt","r")) == NULL) { puts ("Файл st.txt не найден");
return; |
|
} |
Ср.балл"); |
puts ("\nФамилия и.о. |
|
puts ("------------------------------ |
"); |
while (fgets((char *)&tz, sizeof(struct STUDENT), f) != NULL) { for (i=0,s=0; i<5; i++)
s+=tz.oc[i]-'0'; tz.fio[14]='\0';
printf("%s %.1f\n", tz.fio, (float)s/5);
}
fclose(f);
115
getch();
}
Задача Программа читает строки из одного файла, заменяет все прописные латинские буквы на строчные и записывает результат в другой файл.
Программа:
#include <stdio.h>
/* Функция замены прописных латинских букв на строчные */
char * ZamenaBukv |
(char *str) |
|
|||
/* Функция |
возвращает адрес строки str */ |
|
|||
{ |
i; |
/* индекс текущего символа строки */ |
|||
int |
|||||
for |
( i = 0; |
str[i] ; i++ ) |
str[i] += 32; |
||
|
if (str[i] |
>= ‘A’ && str[i] <= ‘Z’) |
|||
return |
str; |
|
|
||
} |
|
|
|
|
|
/* Главная функция |
*/ |
|
|||
main() |
|
|
|
/* указатели на входной и выходной файлы */ |
|
{ FILE *f1, *f2; |
|||||
char fname1[13], fname2[13]; |
|
||||
/* имена входного и выходного файлов */ |
|
||||
char |
str[81]; |
/*очередная строка файла*/ |
|||
puts ("\n Введите имя входного файла"); |
|
||||
gets (fname1); |
(fname1, "r")) == NULL) |
|
|||
if |
((f1= fopen |
|
|||
{ |
puts ("Файл |
не найден"); |
|
||
|
getch(); |
|
|
return 1;
}
puts ("Введите имя выходного файла"); gets (fname2);
f2 = fopen(fname2, "w"); while (fgets(str, 81, f1)) { fputs(ZamenaBukv(str),f2);
}
fclose (f1); fclose (f2); return 0;
}
Задача. Файл f1.txt содержит последовательность целых чисел, разделенных пробелами или символом перевода строки. Вычислить сумму чисел.
116
Программа:
#include <stdio.h>
void main() |
|
|
{ FILE |
*f; |
/* очередное число */ |
int |
c; |
|
long |
s=0; |
/* сумма */ |
if (f=fopen(“f1.txt”, “r”))
{while (!feof(f))
{fscanf(f, “%d”, &c);
s+=c;
}
printf(“Сумма=%ld\n”, s); fclose (f);
}
else puts (“Файл f1.txt не найден”);
}
Контрольные вопросы
1.Что представляет собой текстовый файл в MS DOS?
2.Для чего служит функция fopen()?
3. Для чего служит функция fclose()?
4.Дан текстовый файл f1.txt, состоящий из строк длиной до 80 символов. Напишите программу печати первых n строк файла. Значение n вводится с клавиатуры.
5.Дан текстовый файл f1.txt, состоящий из строк длиной до 80 символов.
Напишите фрагмент ввода с клавиатуры и добавления в конец файла n строк. Значение n также вводится с клавиатуры.
6.Как открыть текстовый файл для чтения?
7.Какая функция используется для чтения одной строки файла?
8.Для чего нужно закрывать файлы?
117