Студопедия

Главная страница Случайная страница

Разделы сайта

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






Задания к практическим занятиям. 9.1 Составить программу, которая в заданном тексте: Заменяет одну букву на другую; Заменяет все буквы «а» на «о»






9.1 Составить программу, которая в заданном тексте: Заменяет одну букву на другую; Заменяет все буквы «а» на «о», а буквы «о» на «а»; Заменяет одну последовательность символов на другую, той же длины, иной длины. Подсчитать число произведенных замен; Убирает лишние пробелы между словами, оставляя их по одному; Вставляет между словами вместо одного пробела запятую и пробел; Удваивает каждую букву; Заменяет все маленькие буквы на большие; Вычеркивает все буквы, совпадающие с заданной.

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

9.3 Составить программу: Поиска всех слов, в которых ровно два раза встречается заданная буква; Поиска количества слов, у которых первая и последняя буква совпадают между собой; Вывода на экран строки, составленной из n первых букв всех слов; Вывода на экран строки, составленной из n последних букв всех слов.

9.4 Текст не содержит знаков препинания и набран одинаковым шрифтом. Составить программу определения количества использования в тексте: Заданного символа; Заданного слова; Заданного двухбуквенного сочетания.

9.5 Составить программу вывода на экран списка символов, из которых образован заданный текст.

9.6 Составить программу, определяющую в заданном тексте для каждой буквы алфавита: Количества ее использований; Частоту ее употребления (отношение количества использованной буквы к количеству всех букв в тексте).

9.7 Составить программу, которая читает текст справа налево.

9.8 Дан список слов различной длины. Составить программу упорядочения списка слов: По их длине; По алфавиту.

9.9 Составить программу текущей сортировки слов: слова вводятся с клавиатуры одно за другим и сразу занимают свое место в списке в соотвествии с алфавитом. Рассмотреть случаи английских, русских, украинских слов.

9.10 Составить программу образования из двух упорядоченных списков слов общего списка, также упорядоченного по алфавиту.

9.11 Имеется список абоентов телефонной станции. Составить программу упорядочения списка по форме: Номер телефона, фамилия (номера идут в порядке возрастания); Фамилия, номер телефона (фамилии идут в алфавитном порядке).

9.12 Составить программу, выделяющую из двух строк общую подстроку наибольшей длины. Например, для строк «проблеск» и «пролески» общей подстрокой наибольшей длины является «леск».

9.13 Даны два слова. Составить программу проверки, можно ли из букв, входящих в одно слово, составить другое (каждая буква используется только один раз).

9.14 Задан массив слов. Составить программу вывода на экран всех пар слов, образующих рифму.

9.15 Составить программу, которая случайным образом «перемешивает»: Символы в строке; Слова в фразе.

9.16 Дано натуральное число (до 1000). Составить программу записи этого числа словами: На русском языке; На украинском языке; На английском языке.

9.17 Составить программу, определяющую, является ли заданная последовательность символов: Целым число; Вещественным числом; Идентификатором, допустимым в изучаемом языке программирования.

9.18 Дано алгебраическое выражение. Составить программу проверки: Имеет ли место баланс открывающих и закрывающих скобок в этом выражении; Допустимым ли образом расставлены в нем скобки.

9.19 Составить программу для определения количества цифр в записи заданного вещественного числа.

9.20 Составить программу шифровки и дешифровки данного текста по следующему правилу: Каждая буква от а до ю заменяется на следующую по алфавиту, буква я заменяется на букву а; Первая буква алфавита заменяется на одиннадцатую, вторая на двеннадцатую,... последняя – на десятую; После каждой согласной вставляется случайным образом буква а или буква я.

9.21 Составить программу шифрования и дешифрования символьной строки.

9.22 Составить программу перевода чисел (до 100) в числа прописью, например, на запрос 22 программы выдает twenty two.

9.23 Составить программу счета количества пробелов в заданной строке.

9.24 Составить программу проверки правильности открывающихся и закрывающихся кавычек в заданной строке.

Тема 10. Подпрограммы (Функции)

Часто в программе требуется повторить определенную последовательность операторов в разных частях программы. Для того, чтобы описывать эту последовательность один раз, а применять многократно, в языках программирования применяются подпрограммы. Подпрограмма - автономная часть программы, выполняющая определенный алгоритм и допускающая обращение к ней из различных частей общей программы.

В языке Си существует один вид подпрограмм - функции. Каждая программа в своем составе должна иметь главную функцию main(), служащую точкой входа в программу. Кроме функции main(), в программу может входить произвольное число функций, выполнение которых инициализируется либо прямо, либо вызовами из функции main(). Каждая функция по отношению к другой является внешней. Для того, чтобы функция была доступной, необходимо, чтобы до ее вызова о ней было известно компилятору. Форма записи функции:

< тип > < имя функции> (< формальные параметры>){< тело функции > }

Если тип возвращаемого функцией значения не указан, то подразумевается int. Если с именем функции не связан результат, то нужно указать тип функции void. Параметры, записываемые в обращении к функции, называются фактическими; параметры, указанные в описании функции - формальными. Фактические параметры должны соответствовать формальным по количеству, порядку следования и типу. Объекты, объявленные вне функции, действуют в любой функции и называются глобальными. Объекты, объявленные в функции, действуют только в ней и называются локальными. В теле функции обычно присутствует оператор return < выражение>, определяющий возвращаемое функцией значение.

Все параметры функции, кроме массивов, передаются по значению, т.е. внутри функции создаются локальные копии параметров. Если необходимо передать саму переменную, а не её копию, то в функцию передаётся адрес этой переменной. Таким образом, через параметры можно передавать результат выполнения функции. То есть, параметры, с помощью которых результаты должны передаваться из функции в точку вызова, описываются как указатели. Вызов функции может быть оформлен в виде оператора, если с именем функции не связано возвращаемое значение, или в виде выражения, если возвращаемое значение связано с именем функции.

Прототип функции может указываться до вызова функции вместо описания функции для того, чтобы компилятор мог выполнить проверку соответствия типов аргументов и параметров. Прототип функции по форме такой же, как и заголовок функции. В конце него ставится «;».

Функции можно подключать с помощью директивы #include < имя файла>. Такие файлы с функциями удобно использовать в диалоговых программах с пользовательским меню, позволяющих выбрать один из режимов.

Пример: Функция с параметрами-значениями. Результат связан с именем функции. В программе объявляется прототип функции, а сама функция описывается ниже.

#include < stdio.h>

#include < conio.h>

int max(int, int); //Прототип функции

void main()

{ int x, y, z;

printf(" input x, y ");

scanf(" %d %d", & x, & y);

z=max(x, y); //Вызов функции с фактическими параметрами

printf(" x=%d y=%d max=%d", x, y, z);

getch();

}

int max(int a, int b) //Заголовок функции с формальными параметрами

{ int c;

if (a> b) c=a;

else c=b;

return c;

}

 

Пример: Функция с параметрами-указателями. Здесь передаются адреса фактических параметров, по которым и получаем результат. Функция меняет местами переменные x, y.

#include < stdio.h>

#include < conio.h>

main()

{ float x, y;

void swap(float *, float *); // Прототип функции с параметрами - указателями

printf(" \n введите x, y ");

scanf(" %f %f", & x, & y);

swap(& x, & y); // Передаём адреса переменных

printf(" \n x=%4.2f y=%4.2f ", x, y);

getch();

}

void swap(float * a, float * b)

{float c;

c=*a; // *a - содержимое по адресу a

*a=*b;

*b=c;

}

 

Пример: Передача в функцию массива с использованием указателя. Результат – элементы массива возводятся в квадрат. Функция описывается до вызова, поэтому прототип не объявляется.

#include < stdio.h>

#include < conio.h>

void quart(int n, float * x) // Можно void quart(int n, float x[])

{ int i;

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

x[i]=x[i]*x[i];

}

main()

{ float z[]={1, 2, 3, 4}; int j;

clrscr();

for (j=0; j< 4; j++)

printf(" %6.2f", z[j]);

quart(4, z);

for (j=0; j< 4; j++)

printf(" \n %6.2f", z[j]);

getch();

}

 

КОНТРОЛЬНЫЕ ВОПРОСЫ

1. Описание функции. Для чего объявляется прототип?

2. Что такое формальные и фактические параметры? Локальные и глобальные?

3. Как можно передавать массив в функцию?

4. Способы вызова функций.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.