1.
2. Символьные массивы – СТРОКИ 2
3. Варианты заданий 4
4. Функции для работы с текстом 6
5. Вопросы для самоконтроля 8
6. Двумерные массивы – МАТРИЦЫ 9
7. Варианты заданий 11
8. Вопросы для самоконтроля 12
Массив - поименованный набор элементов одного типа, располагающихся в последовательных ячейках памяти. Элементы массива нумеруются от 0 до N-1, где N – количество элементов.
#define N 20
. . .
int i, n, array [N];
float mas [] = {1.75, 0.27, 17.892, -0.379,123.56};
. . .
for (i = 0; i < N; i++) array [i] = i+1;
. . .
n = sizeof (mas) / sizeof (float);
for (i = 0; i < n; i++) mas [i] *= 10;
. . .
Каждый элемент имеет свой номер, доступ к нему осуществляется через имя массива и индекс.
Имя массива является константой и рассматривается как адрес первого элемента массива.
Для ведения записи характеристик массива, компилятор задает таблицу, называемую дескриптором массива. Таблица включает следующую информацию:
Начальный адрес массива array
Количество элементов массива N
Размер элемента sizeof (int)
Строкой называется последовательность символов, ограниченная символом с кодом 0, то есть '\0'. Особенности:
строка хранится в массиве символов, который может быть инициализирован при описании, а может быть заполнен программно:
char A[] = { 'С','т','р','о','к','а','\0' };
. . .
int i;
char B[N];
for (i=0; i<N; i++) B[i] = 'A' + i;
B [N] = '\0';
строка имеет переменную размерность, ограниченную символом '\0'. Работать с ней можно, просматривая от начала до конца, пока не встретится символ '\0':
for (i=0; B[i] !='\0'; i++)...
соответствие размерности массива и длины строки транслятором не контролируется, за это несет ответственность программист, её написавший.
Способы определения строк:
- массив типа char char A[] = { 'С','т','р','о','к','а','1','\0' };
- массив типа char char B[] = “строка 2”;
- указатель на тип char char *C = “строка 3”;
- указатель на тип char char *D = { “строка 4” };
- указатель на тип char char *E ( “строка 5” );
- массив указателей на строки char *text[] = {“String 1”, “ String 2”};
Пример 1. Напечатать заданную строку, удалив из неё повторные вхождения каждого символа.
#include<stdio.h>
#define L 80
void main()
{
char s[L];
int i, j, k;
puts("Введи строку");
gets(s);
for (i=0; s[i] != '\0'; i++)
{ j=i+1;
while (s[j] != '\0')
{ if(s[i] == s[j]) // нашли дубликат
for (k=j; s[k]!='\0'; k++) s[k] = s[k+1]; //затираем символ
else j++;
}
}
puts("Результат:");
puts(s);
}
#include<stdio.h>
#define L 20
void main()
{
char s[L], t;
int i = 0, k, n;
long int number;
printf("\n Enter : ");
scanf("%ld", &number);
while(number != 0)
{
s[i]='0'+(number%10);
number /= 10;
i++;
}
s[i] = '\0';
for(k = 0, n = i-1; k<i/2; k++, n--) { t = s[k]; s[k] = s[n]; s[n] = t;}
puts(s);
}
1. Определить, какие из цифр 0..9 есть в строке.
2. Определить, сколько раз встречается в строке заданный символ.
3. Заменить в строке знаки препинания .,: на пробелы.
4. Удалить из строки последнее слово (слова разделены пробелами).
5. Заменить в строке символ ch1 на ch2.
6. Заменить в строке каждую группу стоящих рядом точек одной точкой.
7. Заменить в строке каждую точку многоточием, т.е. тремя точками.
8. Подсчитать количество появлений в строке пар символов ,- .
9. Вывести на экран все пары стоящих рядом в строке одинаковых символов.
10. В строке перед каждым символом цифры вставить символ #.
11. В строке заменить первую букву каждого слова на заглавную, слова разделены пробелами.
12. В строке заменить каждый пробел двумя символами ,- .
13. Исключить из строки заданный символ.
14. Подсчитать в строке количество символов, отличных от пробела.
15. Подсчитать в строке количество символов цифр.
16. Подсчитать в строке количество символов, которые не являются цифрами.
17. В строке удалить все символы, предшествующие заданному символу.
18. В строке после заданного символа удалить К символов.
19. В строке продублировать заданный символ.
20. Из строки исключить все появления пары заданных символов.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.