Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабораторные работы / работа со строками в языке программирования СИ.doc
Скачиваний:
82
Добавлен:
28.01.2014
Размер:
125.95 Кб
Скачать

2. Содержание и технология работы

Для решения задач необходимо запустить MS VS 2005 (Пуск - Microsoft Visual Studio 2005), создать новый проект.

  1. В диалоговом окне Начальная страница (Start Page) нажать кнопку Create Project.

  2. В появившемся диалоговом окне New Project в полях и областях задать параметры:

  • поле Name - имя создаваемого проекта;

  • поле Location - установить папку для размещения файлов проекта;

  • область Project Types - выбрать вариант Visual C++ Projects;

  • области Templates - выбрать вариант Win32 Console Application;

  • нажать кнопку ОК.

  • Ввести текст программы на языке программирования СИ.

  • Запустить программу нажатием кнопки Start или F5. Если в программном коде не обнаружено ошибок, будет получен результат.

    Рассмотрим примеры задач работы со строками.

    Задача 1. Ввод и вывод строк

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

    Текст программы будет выглядеть следующим образом:

    Подключим библиотеки, в нашей программе их потребуется 3: stdafx.h, stdio.h, conio.h:

    #include < stdafx.h

    #include < stdio.h>

    #include < conio.h>

    Объявим главную функцию:

    void main ()

    {

    Объявим две строки:

    char name[15];//отведение в памяти компьютера места под строку с максимальной длиной 15 символов

    char fam[20];//отведение в памяти компьютера места под строку длиной 20 символов

    Организуем считывание (инициализацию) двух строк с клавиатуры:

    prinf ("Как Вас зовут?\n");

    prinf ("Введите свое имя и фамилию, затем нажмите Enter");

    printf ("->");

    scanf ("%s",&name);

    scanf ("%s",&fam);

    Здесь функция scanf читает из буфера клавиатуры символы до разделителя – пробела.

    Выведем строки на экран:

    printf ("Здравствуйте, %s %s!\n", name, fam);

    Задержим результат на экране:

    getch ();

    Закроем главную функцию:

    }

    Блок-схема данной программы приведена на рисунке 1.

    Блок 1 – начало программного блока.

    Блок 2 – ввод строк name и fam с клавиатуры.

    Блок 3 – вывод значений строк name и fam на экран.

    Блок 4 – конец программного блока.

    Рис.1. Блок-схема ввода и вывода строк

    После запуска программы на выполнение, получим следующий результат:

    Как Вас зовут?

    Введите свое имя и фамилию, затем нажмите Enter

    -> Иван Федоров

    Здравствуйте, Иван Федоров!

    Задача 2. Организация посимвольного считывания строк

    Составим программу, которая запрашивает у пользователя строку, затем выводит эту строку, вставляя после каждой буквы дополнительный символ '*'.

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

    Блок-схема данной программы приведена на рисунке 2.

    Рис.2. Блок-схема программы посимвольного считывания строк.

    Текст программы будет выглядеть следующим образом:

    Подключим библиотеки, в нашей программе их потребуется 4: stdafx.h, stdio.h, conio.h, string.h:

    #include <stdafx.h

    #include <stdio.h>

    #include <conio.h>

    #include <string.h>

    Объявим главную функцию:

    void main ()

    {

    Объявим строку:

    char str[30];

    Объявим дополнительные переменные (длину строки l и переменную цикла с заданным числом итераций i, целого типа):

    int i,l;

    Организуем считывание (инициализацию) строки с клавиатуры:

    prinf ("Введите строку, затем нажмите Enter");

    printf ("->");

    scanf ("%s",&str);

    Определим длину строки:

    l=strlen(str);

    В цикле с заданным количеством итераций будем посимвольно считывать каждый символ строки, вставляя после каждого символа знак '*', здесь – переменная i – текущий номер символа в строке:

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

    {

    printf ("%c *",str[i]);

    }

    Задержим результат на экране:

    getch ();

    Закроем главную функцию:

    }

    После запуска программы на выполнение, получим следующий результат:

    Введите строку, затем нажмите Enter

    -> Здравствуйте

    З*д*р*а*в*с*т*в*у*й*т*е*

    Задача 3. Работа с кодами символов

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

    Подобное преобразование основано на использовании таблицы кодировок ASCII. Символы нижнего регистра имеют в ней коды от 97(a) до 122(z), а верхнего – от 65 (A) до 90(Z). При этом символы в таблице располагаются последовательно. В результате чего преобразование можно осуществить просто путем вычитания из кода символа нижнего регистра значения 32. Например, пользователь вводит значение символа в строковом формате:

    scanf ("%s",&str);

    Для получения кода символа достаточно преобразовать введенный символ в числовой формат:

    int a=int(str);

    Далее проверяем, находится ли полученный код символа в нижнем регистре, то есть попадает в диапазон от 97 до 122 и при необходимости вычитаем из него число 32.

    Текст программы будет выглядеть следующим образом:

    Подключим библиотеки, в нашей программе их потребуется 4: stdafx.h, stdio.h, conio.h, string.h:

    #include <stdafx.h

    #include <stdio.h>

    #include <conio.h>

    #include <string.h>

    Объявим главную функцию:

    void main ()

    {

    Объявим строку:

    char str[30];

    Объявим дополнительные переменные (длину строки l и переменную цикла с заданным числом итераций i, целого типа):

    int i,l;

    Организуем считывание (инициализацию) строки с клавиатуры:

    prinf ("Введите строку, затем нажмите Enter");

    printf ("->");

    scanf ("%s",&str);

    Определим длину строки:

    l=strlen(str);

    Огранизуем посимвольное считывание строки, i – текущий номер символа в строке:

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

    {

    Проверим условие, что текущий символ строки попадает в заданный диапазон, то есть является строчной буквой латинского алфавита. Для преобразования символа в его код используем оператор int, если условие истинно, то изменяем код символа, то есть вычитаем из него 32:

    if (int(str[i])<=97 && int(str[i])>=122) int(str[i])=int(str[i])-32;

    Выводим символ на экран:

    printf ("%c ",str[i]);

    Закрываем цикл с заданным количеством итераций:

    }

    Задерживаем результат на экране:

    getch ();

    Закрываем главную функцию:

    }

    В результате выполнения программы получим следующее:

    Вариант 1. Все символы введенной строки будут являться строчными буквами латинского алфавита:

    Введите строку, затем нажмите Enter

    -> hello

    HELLO

    Вариант 2. Не все символы введенной строки будут являться строчными буквами латинского алфавита:

    Введите строку, затем нажмите Enter

    -> Hello123

    HELLO123я

    Блок-схема данной программы приведена на рисунке 3.

    Рис.3. Блок-схема программы работы с кодами символов

    Выполнить индивидуальные задания, выданные преподавателем.