Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Тема: Обработка символьной информации и строк




(4 часа)

Для представления текстовой информации в языке С используются символы (константы), символьные переменные и строки (строковые константы), для которых в языке С не введено отдельного типа в отличие от некоторых других языков программирования.

Символьные константы используются для изображения отдельных знаков, имеющих индивидуальные внутренние коды. Символьная константа – это лексема, которая состоит из изображения символа и ограничивающих апострофов, например: ‘A’, ‘b’, ‘+’, ‘1’, ‘@’ и т. д. Внутри апострофов кроме символов изображаемых на дисплее или принтере в текстовом режиме можно использовать коды не имеющие графического представления на экране дисплея, принтере или клавиатуре. Для изображения в программе таких символьных констант используются комбинации из нескольких символов, имеющих графическое представление. Такие комбинации носят название управляющих последовательностей. В языке С существуют следующие управляющие последовательности:

‘\n’ – перевод строки;

‘\t’ – горизонтальная табуляция;

‘\r’ – возврат каретки к началу строки;

‘\\’ – обратная косая черта \;

‘\’’– апостроф;

‘\”’ – кавычка;

‘\0’ – нулевой символ;

‘\a’ – сигнал-звонок;

‘\ddd’ – восьмеричное представление любой символьной константы;

‘\xhhh’ – шестнадцатеричное представление любой символьной константы.

Все символьные константы имеют значение целого типа, совпадающие с кодом символа в кодировке ASCII.

Для символьных данных веден базовый тип char. Описание символьных переменных имеет вид:

сhar список_имен_переменных

Для ввода и вывода символьных данных в форматных строках библиотечных функций printf(), scanf() используется спецификация преобразования %c.

Кроме функций printf(), scanf() для ввода и вывода символов предусмотрены специальные функции обмена:

getchar() – чтение одного сивола из входного потока;

putchar(X) – вывод символьного значения Х в стандартный выходной поток.

Пример использования символьных констант:

#include<stdio.h>

void main (){

char a=’A’, b=’*’,c=’\a’,d=’\07’, e=’\x07’;

printf(“a=%c b=%c c=%c d=%c e=%c”,a,b,c,d,e);}

Строковая константа определяется как последовательность символов, заключенных в двойные кавычки, например: “Строка”. Среди символов могут быть эскейп-последовательности, т. е. сочетания знаков, соответствующие неизображаемым символам, или символам, задаваемым их внутренними кодами. Например: “\nСтрока с использованием управляющих кодов. \n”.

Все символы строки размещаются в памяти подряд, и каждый символ (в том числе представленный эскейп-последовательностями) занимает ровно один байт. В конце записи строковой константы компилятор помещает символ ‘\0’.

Строка – это массив символов, т. е. она всегда имеет тип char[]. Количество элементов в таком массиве на один больше, чем в изображении соответствующей строковой константы.

Присвоить значение массиву символов с помощью обычного оператора присваивания нельзя. Поместить строку в массив можно при инициализации.

Таким образом, описание строки может быть выполнено одним из следующих способов:

char string1[50]; – где 50 – максимальное допустимое количество символов в строке.

char string2[]={‘С’, ‘т’, ‘р’, ‘о’, ‘к’, ‘а’, ‘1’, ‘.’, ‘\0’}; – помещение строки в массив при инициализации.

char string3[] =”Еще один пример строки, описанной при инициализации”;

Кроме перечисленных способов поместить строку в массив можно с помощью функций ввода. В функциях printf(), scanf() для символьных строк используется спецификация преобразования %s.

char str[]=”String one”;

printf(“%s”,str);

Работа с символьными строками – это работа с массивами типа char. При этом следует помнить об обязательном присутствии в конце строки символа ‘\0’.

Кроме описанных выше, существует еще один способ описания строковых констант. Такой способ возможен только для массивов символов и выглядит следующим образом:

char *str;

char *str1=”Строка, описанная при помощи указателя.”;

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

Пример:

#include<stdio.h>

void main (){

char *str[] ={“Обработка”, “предложений”, “или”, “слов”, “каждое”, “из”, “которых”, “представлено”, “в”, “виде”, “строки”, “.”};

int i,n;

n=sizeof(str)/sizeof(str[0]);

for (i=0;i<n;i++)

printf(“%s”,str[i]);}

Вопросы:

1. Понятие символьных данных и строк.

2. Способы задания строки.

3. Инициализация строк.

4. Ввод/вывод символьных данных.

5. Строки и указатели.

6. Эскейп-последовательности.

Задание на выполнение:

1. Определить долю пробелов в заданной строке.

2. Удалить из заданного слова все буквы “а”.

3. Определить количество предложений в заданном тексте (предложение заканчивается либо точкой, либо вопросительным или восклицательным знаком).

4. Для каждого из слов заданного предложения указать, сколько раз оно встречается в предложении.

5. Из заданного предложения удалить слова, которые встречались в нем раньше.

6. Отредактировать заданное предложение, удаляя из него слова с четными номерами.

7. Найти самое длинное и самое короткое слово в заданном предложении.

8. В заданной последовательности слов найти все слова, имеющие заданное окончание.

9. В заданной последовательности слов найти все слова, начинающиеся с заданной приставки.

10. В заданном предложении указать слово, для которого доля гласных максимальна.

11. В заданную упорядоченную в лексикографическом (алфавитном) порядке последовательность слов вставить новое заданное слово так, чтобы лексикографический порядок сохранился.

12. Дан текст из цифр и строчных латинских букв. Определить, каких букв – гласных или согласных – больше в тексте.

13. Проверить, является ли заданное слово названием времени года на русском языке.

14. Дана последовательность слов, в которых слова разделены запятыми, а за последним словом – точка. Напечатать эту же последовательность слов в обратном порядке. Указать для всех различных слов число вхождений в последовательность.

15. Из заданного текста выбрать и напечатать те символы, которые встречаются в нем ровно один раз (в том порядке, как они встречаются в тексте).

ЛАБОРАТОРНАЯ РАБОТА №7





Поделиться с друзьями:


Дата добавления: 2016-03-28; Мы поможем в написании ваших работ!; просмотров: 1029 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Логика может привести Вас от пункта А к пункту Б, а воображение — куда угодно © Альберт Эйнштейн
==> читать все изречения...

2284 - | 2212 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.