for (j=i+1; s[j]!='\0'; j++) if(s[i]==s[j]) count++;
printf("\n (%c) - %d", s[i],count);
count=1;
}
}
}
Пример 4б. Написать программу, которая отображает встречаемые в строке символы с частотой появления каждого из них (с использованием библиотечных функций).
#include<string.h>
#define L 80
void main()
{
char s[L], *p;
int i, j, count = 1;
puts ("\n Enter string:");
gets (s);
for(i = 0; s[i] != '\0'; i++, count = 1)
{
p = (s+i);
if ((strchr (s, s[i])) == p) // если символ не встречался раньше
{
while(p = strchr(p+1, s[i])) count++;
printf("\n (%c) - %d", s[i], count);
}
}
}
Пример 5а. Написать программу, которая определяет, является ли данная строка палиндромом, то есть читается одинаково в прямом и обратном направлении (без использования библиотечных функций).
void main()
{
char s[L];
int i, j, k, l;
puts ("\n Enter string:");
gets (s);
for (l = 0; s[l] != '\0'; l ++);
k = l / 2;
l - - ;
for (i = 0; i < k; i++, l--) if (s[i] != s[l]) break;
if (i == k) puts ("Yes!");
else puts ("No !");
}
Пример 5б. Написать программу, которая определяет, является ли данная строка палиндромом, то есть читается одинаково в прямом и обратном направлении (с использованием библиотечных функций).
void main()
{
char str[L], *p;
puts ("\n Enter string:");
gets (str);
strcpy (p,str);
if ((strcmp (str, strrev (p))) == 0) puts ("Yes!");
else puts ("No!");
}
1. Дайте определение массива, определите массив из 20 элементов целого типа.
2. Какими способами возможен доступ к элементу массива, запишите примеры.
3. Какие характеристики массива компилятор фиксирует в таблице-дескрипторе?
4. Как определить размер памяти, отводимой под массив?
5. Что такое строка? Какими способами можно определять строки в программе?
6. Какой последовательностью операторов можно перевести число в строку и наоборот?
7. Запишите последовательность действий для исключения из массива элемента с заданным значением.
8. Запишите последовательность операторов для добавления числа в необходимую позицию в массиве?
9. Какие библиотечные функции по обработке символов можете назвать?
10. Перечислите и запишите примеры использования функций по работе со строками.
int matrix [N][M];
Одномерные массивы соответствуют векторам, двумерным массивам можно поставить в соответствие – матрицы.
Двумерные массивы – это вид удобной записи, так как память имеет одно измерение.
Наименьший адрес в памяти соответствует значению элемента первого столбца в первой строке matrix [0][0], наибольший адрес – значению элемента в последнем столбце последней строки матрицы matrix [N-1][M-1].
Доступ к элементам осуществляется по индексам строк и индексам столбцов.
Можем представить двумерный массив как одномерный, каждый элемент которого есть одномерный массив.
Двумерный массив может быть инициализирован присваиванием элементам по одной строке каждый раз:
int matrix [][4] = {{3,5,7}, {-2,-4,-6}, {1,7,13}};
При таком описании в памяти будет выделен блок для таблицы размером (3х4) х 2 байта, общим объемом – 24 байта. Последний элемент в каждой строке будет содержать нулевое значение.
Для доступа к элементу матрицы, компилятор расширяет таблицу – дескриптор массива, включая информацию о количестве столбцов и длине каждой строки:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.