- •Алгоритм.
- •Множественный выбор switch.
- •Оператор do … while ( с постусловием ).
- •Do оператор ;
- •Оператор цикла for.
- •Использование операторов break и continue в циклах.
- •Функции ввода-вывода.
- •Общий вид программы.
- •Вложенные циклы.
- •Адреса и указатели.
- •Массивы.
- •Int a[10] ; // целочисленный вектор из 10 элементов.
- •Векторы.
- •Сортировка вектора.
- •Матрицы.
- •Строки.
- •Подпрограммы.
- •Директива препроцессора #define .
- •Области видимости.
- •Классы памяти.
- •Рекурсия.
- •Подготовка к зачету.
- •Структуры.
- •Int ball [4] ; // описание третьего поля – оценки.
- •Очередь.
- •Линейные списки.
- •Деревья.
- •Int n, k ; // ее размерности
- •Void print ( void ) // печать матрицы
- •Определение методов вне класса.
- •Частные и общие данные.
- •Конструктор.
- •Перегрузка операторов.
- •Неявный указатель *this.
- •Дружественные функции.
- •Класс множество.
- •Наследование.
- •Объекто-ориентированное программирование.
- •Список вопросов к экзамену.
- •Литература.
Строки.
Строкой – называется текстовый вектор, для которого не обязательно указывать размерность с признаком конца ‘\0’.
Описание строки.
char a[] ;
Описание и инициализация строки. Будет создана строка из 20 символов, 19 значащих и ‘\0’.
char a[]=”произвольная строка “ ;
Если бы мы создавали текстовый вектор, то аналогичное действие выглядело бы так:
Char a[19]={‘п’,’р’,’о’,’и’,’з’,’в’,’о’,’л’,’ь’,’н’,’а’,’я’,’ ’,’с’,’т’,’р’,’о’,’к’,’а’ } ;
Чтобы из него сделать строку нужно в конец добавить ‘\0’.
Ввод и вывод строки осуществляется так:
char a[] ;
scanf (“%s”, a) ; // введутся все символы до первого пробела в конце добавится ‘\0’.
printf (“%s”, a) ; // выведутся все символы до первого пробела.
char a[81] ;
gets (a) ; // введутся любые символы до нажатия “enter” в конце добавится ‘\0’.
puts (a); ; // выведутся все символы содержащиеся в строке до ‘\0’.
Имя строки а – адрес нулевого элемента, i-й элемент можно достать так:
*(a+i) одно и то же a[i].
Длину произвольной текстовой строки – h можно определить так:
For ( h=0 ; *(a+h)!=’\0’ ; h++) ;
Это же реализует стандартная функция из библиотеки #include<string.h>
h=strlen(a) ;
Можно описать массив из строк и ввести его:
char text[10][81] ;
for ( i=0 ; i<=9 ; i++) gets( text[i]) ;
Рассмотрим две задачи позволяющие научиться работать со строкой.
Посчитать число вхождений каждого различного символа в строке.
#include<stdio.h>
#include<string.h>
main()
{
int h, sh, i, j ;
char text[]=”произвольная фраза “, ch ;
h=strlen(text) ;
for ( i=0 ; i<h ; i++) // цикл по количеству символов в строке
{
ch=text[i] ; // ch – символ для поиска копий
if(ch!=’-‘) { for (j=i+1, sh=1 ; j<=h ; j++ ) // цикл поиска повторов, sh – количество копий,
if ( ch==text[j] ) { sh++ ; text[j]=’-‘ ; } // вычеркивание копий
printf ( “\n%c %d”, ch, sh ) ;
text[i]=’-‘ ;
}
}
}
Найти в строке слово максимальной длинны:
#include<stdio.h>
#include<string.h>
main()
{
int h, ss=0, i=0, j=0, maxlen=0 ; // maxlen –текущая максимальная длина строки
char text[81], word[10]=’\0’;
gets(text) ;
h=strlen(text) ;
while ( i<=h ) // перебираем все символы строки
{
if ( (*(text+i)==’ ‘)||(i==h) // если обнаружен пробел, т.е. конец слова или конец строки
if ( maxlen<(i-ss)) // если maxlen меньше длины текущего слова,
{
maxlen=i-ss ; // то запоминаем новую длину
for ( j=0 ; j<maxlen ; j++ ) *(word+j)=*(text+ss+j) ; // запоминаем слово
ss=i ; // конец предыдущего слова
}
i++ ;
}
puts (word) ;
}