- •Предисловие
- •Знакомство с языком 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
- •Задания на курсовую работу
- •Требования к курсовой работе
- •Этапы разработки программ
- •Содержание отчета по курсовой работе
- •Задания к курсовой работе
- •Литература
- •Функции консольного ввода/вывода
- •Функции обработки строк
- •Функции преобразования данных
}
else puts ("Не хватает памяти для результирующей строки"); getch();
}
Примечание. Если вы выполняете программы в среде Borland C++, при использовании библиотечных функций обработки строк (например, strlen(), как в данной программе) включите в программу директиву #include <string.h>. Имя же своей функции нужно изменить, чтобы оно не совпадало с библиотечным.
Посимвольная обработка строк
Для представления строк могут использоваться массивы символов. Примеры описания такого массива:
char text[10]; /* массив из 10 символов */
Для обращения к элементу массива указываются имя массива и индексы элемента в квадратных скобках, например, text[0], text[i+1]. Индексация начинается с 0 (в приведенном примере text[0] - первый элемент массива, последний элемент имеет индекс 9).
Для ввода символьных строк можно использовать библиотечную функцию gets(), которая вместо символа перевода строки записывает в заданный массив после введенной строки символ ‘\0’ (нулевой байт) – признак конца строки. Например:
char s[81]; gets(s);
Вывод символьных строк можно выполнить либо с помощью библиотечной функции puts(), либо функции printf(), задав формат %s. Например:
сhar str[]= “Привет”;
puts(str); /* или printf(“%s\n”, str); */
102
Пример программы
Первый вариант:
/*****************************************************/ /*Задача. Входная строка содержит последовательность */ /*слов, разделенных пробелами. Признак конца строки -*/
/*символ |
'\n'(перевод строки). Вывести на экран слова*/ |
|
/*длиной |
до пяти символов. |
*/ |
/*****************************************************/
#include |
<stdio.h> |
|
#include |
<conio.h> |
/* макс. длина слова */ |
#define |
DLSL 80 |
main() |
s; |
/* тек. символ |
*/ |
|
{ char |
||||
char |
sl[DLSL]; |
/* |
тек. слово |
*/ |
int i,j; |
/* |
индексы тек. символа в слове */ |
||
int psl=1; |
|
|
|
/* признак, что слово длиной до 5 симв. первое */ printf ("\n\nВведите строку символов\n"); s=getchar();
while (s!='\n')
{
if (s==' ') s=getchar(); else
{i=0; do
{ sl[i++]=s;
s=getchar();
}
while ((s!=' ') && (s!='\n')); if (i<5)
{ if (psl) /* если слово первое */
{printf ("Слова длиной до 5 ов:\n"); psl=0;
}
for (j=0; j<i; j++) putchar(sl[j]);
putchar(' ');
}
}
}
if (psl) printf ("Слов длиной до 5 символов нет"); printf ("\nДля завершения нажмите любую клавишу"); getch();
/* чтение символа без отображения его на экране */ return 0;
}
103
Второй вариант программы:
/*****************************************************/ /*Задача. Входная строка содержит последовательность */ /*слов, разделенных пробелами. Признак конца строки -*/ /*символ '\n'(перевод строки). Вывести на экран слова*/ /*длиной до пяти символов. */ /*****************************************************/ #include <stdio.h>
#include |
<conio.h> |
|
/* макс.длина |
строки */ |
#define |
DLSTR 80 |
|
||
main() |
|
/* |
тек. строка */ |
|
{ char str[DLSTR]; |
|
|||
int i,j; |
/* |
индексы тек. символа в строке */ |
int n,k; /* индексы перв. и посл. символов тек. слова в строке */
int net_sl=1;
/* признак, что слов длиной до 5 симв. нет */ printf ("\n\nВведите строку символов\n"); gets(str);
/*ввод строки в массив str c заменой символа '\n' на признак конца строки '\0' */
printf ("Результат:\n"); i=0;
while (str[i]!='\0')
{
if (str[i]==' ') i++; else
{n=i;
do i++;
while ((str[i]!=' ') && (str[i]!='\0'));
k=i;
if ( k-n < 5 )
{ for (j=n; j<k; j++) putchar(str[j]);
putchar(' '); net_sl=0;
}
}
}
if (net_sl)
printf ("Слов длиной до 5 символов нет."); printf ("\nДля завершения нажмите любую клавишу"); getch();
/* чтение символа без отображения его на экране */ return 0;
}
104