Учебное пособие Челябинск Издательство юургу 2000 icon

Учебное пособие Челябинск Издательство юургу 2000



Смотрите также:
1   2   3   4   5   6   7   8

8. Работаем со строками

Цель занятий


Познакомиться с литералами, научиться создавать строки-переменные с помощью массивов и указателей, получить информацию о стандартных функциях работы со строками (в том числе функциях ввода-вывода).

Теоретические сведения и примеры



Строки



Строка-переменная

Строка-константа”


char str[80];

char* str;





str=”литерал”;

str=malloc(80);



scanf(“%s”,str);// до пробела

gets(str); // до ENTER

П
printf(“%s\n”,str); //печать

puts(str); //печать
ри выполнении заданий могут понадобиться следующие стандартные функции для работы со строками:

strlen — длина строки

strcpy — копирование

strcat — склеивание #include

strcmp — сравнение





atoi itoa

atol строка число ltoa

atof ultoa




#include


sscanf — чтение из строки;

sprintf — вывод в строку; #include


В стандартной библиотеке существует множество других полезных функций работы со строками.

Пример 8.1


Ввести строку произвольной длины. Сосчитать количество символов ‘*’ в этой строке.


#include

void main (void)

{ int i,к=0; // k — счётчик ‘*’

char* S; // объявляем указатель на строку

S=(char *) malloc(80); // выделим память под строку


puts(“ Введите строку произвольной длины (<80 символов )”);

gets (S); // ввод строки до ENTER

for(i=0; S[i]!=’\0’; i++) // ‘\0’ — конец строки

if(*(S+i )==’*’) k++; //*(S+i) (или по-другому S[i]) —
// i-й символ строки


printf(“ \n в строке %d ’*’ \n”, k );

}


Запускаем программу и вот результат:

Введите строку произвольной длины (<80 символов)

Язык СИ **** Язык СИ *** Язык СИ ** Язык СИ *

в строке 10 ’*’


Запускаем ещё раз:

Введите строку произвольной длины (<80 символов)

Информатика

в строке 0 ’*’

Задания для самостоятельного выполнения

Задание 8.1


Ввести строку произвольной длины (<80 символов). Распечатать первый и последний символ и их адреса.

Задание 8.2


Ввести строку произвольной длины (<80 символов), содержащую символ ’*’. Какой этот символ по счёту? Распечатать его адрес и его соседей (при условии, что символ ’*’ не первый и не последний).

Задание 8.3


Ввести с клавиатуры предложение на русском языке. Найти количество символов в нём:

  1. используя стандартные функции работы со строками;

  2. не используя стандартные функции работы со строками.

Задание 8.4


Ввести с клавиатуры предложение на русском языке. Найти количество цифр в нём:

  1. используя стандартные функции работы со строками;

  2. не используя стандартные функции работы со строками.

Задание 8.5


Ввести с клавиатуры две строки произвольной длины. Распечатать 15 раз строку большей длины:

  1. используя стандартные функции работы со строками;

  2. не используя стандартные функции работы со строками.

Задание 8.6


Ввести с клавиатуры предложение на русском языке. Создать копию введённой фразы, а в оригинале «вычеркнуть» последнее слово:

  1. используя стандартные функции работы со строками;

  2. не используя стандартные функции работы со строками.

Задание 8.7


Ввести строку произвольной длины (<80 символов), содержащую два символа ’*’.

  1. Распечатать часть строки после первой ’*’.

  2. Сделать копию части строки после второй ’*’.

  3. Распечатать часть строки между первой ’*’ и второй ’*’.

  4. Сделать копию части строки между первой ’*’ и второй ’*’.

Задание 8.8


Ввести с клавиатуры две строки произвольной длины. Сцепить их, поставив на первое место строку большей длины:

  1. используя стандартные функции работы со строками;

  2. не используя стандартные функции работы со строками.

Задание 8.9


Ввести с клавиатуры строку из двух слов (без знаков препинания). Распечатать фразу, поставив на первое место более длинное слово:

  1. используя стандартные функции работы со строками;

  2. не используя стандартные функции работы со строками.

Задание 8.10


Ввести с клавиатуры две строки. Определить совпадают ли они:

  1. используя стандартные функции работы со строками;

  2. не используя стандартные функции работы со строками.

Задание 8.11


Ввести с клавиатуры две строки. Сцепить:

  1. первую половину первой строки со второй половиной второй строки;

  2. вторую половину первой строки с первой половиной второй строки.

Задание 8.12


Ввести строку произвольной длины (<80 символов). Инвертировать её

( зима амиз ).

Задание 8.13


Ввести строку произвольной длины (<80 символов). Поменять местами первую и вторую половины ( зима мази ).

Задание 8.14


Ввести строку, содержащую имя, отчество, фамилию. Получить строку, содержащую:

  1. имя и отчество;

  2. имя и фамилию;

  3. фамилию, имя, отчество.

Задание 8.15


Написать программу, которая будет «положительно реагировать» только на фамилии из заданного списка (например, преподавателей кафедры).

  1. Список состоит из 10 фамилий (задаются при инициализации).

  2. Список состоит из N фамилий (N и фамилии вводятся с клавиатуры).

Указание: использовать массив указателей на строки.

9. Разрабатываем алгоритмы

Цель занятий


На небольших по объёму задачах научиться разрабатывать эффективные алгоритмы решения, выбирать программные средства для реализации алгоритма на языке СИ.

Теоретические сведения


При выполнении заданий можно использовать весь изученный арсенал программных средств. Для выполнения заданий 9.1–9.5 достаточно материала, содержащегося в разделе 3 (операторы ветвления). Задания 9.6–9.10 требуют применения операторов цикла (раздел 5), но могут быть выполнены без привлечения массивов (раздел 6). Задания 9.9–9.22 могут использоваться в качестве простых индивидуальных заданий для студентов.

Задания для самостоятельного выполнения

Задание 9.1


Целым переменным a и b присвоить случайные значения. Поменять значения переменных местами.

Задание 9.2


Ввести с клавиатуры переменные a и b. Большую заменить полусуммой, меньшую — полуразностью.

Задание 9.3


Ввести двузначное число.

  1. Распечатать большую цифру.

  2. Распечатать цифры в обратном порядке.

Задание 9.4


Ввести трёхзначное число.

  1. Найти сумму цифр.

  2. Поменять порядок цифр на противоположный.

  3. Каких цифр в нём больше — чётных или нечётных?

Задание 9.5


Ввести четырёхзначное число.

  1. Найти общее количество 0 и 1.

  2. Переставить половинки числа (1459 5914).

Задание 9.6


  1. Найти все целые делители числа N (N вводится с клавиатуры).

  2. Найти делители чисел от 2 до M (M вводится с клавиатуры).

Задание 9.7


  1. Является ли число N простым, то есть делящимся без остатка только на себя и на 1 (N вводится с клавиатуры).

  2. Распечатать все простые числа от 2 до M (M вводится с клавиатуры).

Задание 9.8


  1. Распечатать все простые делители натурального числа N (N вводится с клавиатуры).

  2. Распечатать все простые делители чисел от 2 до M (M вводится с клавиатуры).

Задание 9.9


Дано натурального числа n (n вводится с клавиатуры). Выяснить, имеются ли среди чисел n, n+1, … ,2n «близнецы», то есть простые числа, разность между которыми равна двум.

Задание 9.10


Ввести с клавиатуры два целых числа. Найти:

  1. наибольший общий делитель (то есть наибольшее число, на которое делятся оба исходных числа);

  2. наименьшее общее кратное (то есть наименьшее число, которое делится на оба исходных числа).

Задание 9.11


В произвольной последовательности, содержащей N чисел, найти самую длинную подпоследовательность, упорядоченную по возрастанию.

Задание 9.12


Ввести с клавиатуры массив из N элементов. Определить, сколько содержится в массиве групп из трёх последовательных положительных чисел. Группы из четырёх, пяти, … последовательных чисел считать группами из трёх чисел.

Задание 9.13


Даны две упорядоченные по возрастанию последовательности. Составить из них третью последовательность, упорядоченную по убыванию.

Задание 9.14


Из массива BN удалить повторяющиеся элементы. Массив сжать, хвост его заполнить нулями.

Задание 9.15


Упорядочить последовательность по возрастанию методом вставки. Числа вводятся по одному и вставляются на нужное место среди ранее введённых чисел, уже упорядоченных.

Задание 9.16


Числа Пифагора определяются соотношением

c2 = a 2 + b2 ,

где a, b и c — целые числа. Найти пять чисел Пифагора.

Задание 9.17


Найти несколько положительные целых чисел I, J, K, L, которые удовлетворяют следующему уравнению:

I 3 - J 3 = ( K 2 + L2 ) 2 .

Задание 9.18


Найти положительные целые числа I, J, K, L ( каждое меньше 20), которые удовлетворяют следующему уравнению:

I 3 + J 3 + K 3 = L3 .

Задание 9.19


Даны целые числа a1 , a2 , … , aK (количество чисел K и сами числа вводятся с клавиатуры). Пусть M — наибольшее, а m — наименьшее из чисел a1 , a2 , … , aK . Получить в порядке возрастания все целые числа из интервала (m, M), которые не входят в последовательность a1 , a2 , … , aK .

Задание 9.20


Решето Эратосфена. Получить простые числа (< N), используя следующий метод. Создайте последовательность положительных целых чисел от 1 до N. Начните с числа 2 и вычеркните все числа, кратные 2. Следующее за 2 невычеркнутое число является очередным простым числом, то есть 3. Вычеркните все числа, кратные 3. Следующее невычеркнутое число 5 является очередным простым числом. Вычеркните все числа, кратные 5 и т. д. Все оставшиеся числа будут простыми.

Задание 9.21


Получить суммы элементов, расположенных в диагоналях квадратной матрицы, параллельных главной или побочной диагонали.

Задание 9.22


Расположить символы a b c d в квадрате 4*4, так чтобы символы в строках и в столбцах не повторялись.




страница6/8
Дата конвертации01.04.2013
Размер0,66 Mb.
ТипУчебное пособие
1   2   3   4   5   6   7   8
Разместите кнопку на своём сайте или блоге:
rud.exdat.com


База данных защищена авторским правом ©exdat 2000-2012
При копировании материала укажите ссылку
обратиться к администрации
Документы