Практикум по пмм ( 2 курс, 3 семестр ) Волгоград, 1998 Лабораторная работа №1 Массивы и указатели



страница8/8
Дата29.04.2013
Размер0.57 Mb.
ТипПрактикум
1   2   3   4   5   6   7   8

main ()

{

char *t1, *t2;

int l, l1, l2, i, j;

printf ("Программа, определяющая номер позиции,\n");

printf ("начиная с которой вторая\n");

printf ("строка является подстрокой первой строки.\n");

printf ("введите 1-ю строку\n"); gets (t1);

printf ("введите 2-ю строку\n"); gets (t2);

l1=strlen(t1);

l2=strlen(t2);

for ( i=0; i

for ( j=0; j

if ( j == l2 ) /* нашли совпадение ? */

{

printf ("позиция %d", i);

exit (0);

}

printf ("не является под строкой");

exit (1);

}
Пример 9. Программа сравнения двух символьных строк на совпадение.

/* string compare */

main ()

{

char s1 [100], s2 [100];

int i;

printf ("Программа сравнения двух символьных строк на совпадение.\n");

printf ("введите 1-ю строку\n"); gets (s1);

printf ("введите 2-ю строку\n"); gets (s2);

for ( i=0; s1[i] && s2[i] && s1[i] == s2[i]; ++i )

;

if ( s1[i] == s2[i] )

printf ("совпадают");

else

printf ("не совпадают");

}

Пример 10. Программа, печатающая строку в обратном направлении.

*/

/* string inverse */

void strinv (s) /* функция инверсии строки */

char *s;

{

char *p = s;

while ( *p ) /* поиск конца строки */

p++;

p --; /* последний ненулевой */

while ( s < p )

{

char x = *s; *s = *p; /* меняются равноотстоящие */

*p = x; p--; s++; /* от концов символы */

}

}

void main ()

{

char *q;

printf ("Программа, печатающая строку в обратном направлении.\n");

q = "пример другой строки";

printf ("%s\n", q);

strinv (q);

printf ("%s\n", q);

}

Пример 11. Программа для определения являются ли символы цифрами или прописными буквами.


/* isdigit , isupper */
int isdigit ( x ) /* аргумент цифра? */

char x;

{

return (x>='0' && x<='9') ? 1 : 0 ;

}

int isupper ( x ) /* аргумент прописная латинская буква? */

char x;

{

return (x>='A' && x<='Z') ? 1 : 0 ;

}

main ()

{

printf ("Программа для определения являются ли символы цифрами или\n");

printf ("прописными буквами.\n");

printf ("символ e %s\nсимвол 3 %s\nсимвол Z %s\nсимвол a %s",

( isdigit('e')?"цифра":"не цифра"),

( isdigit('3')?"цифра":"не цифра"),

( isupper('Z')?"прописная":"строчная"),

( isupper('a')?"прописная":"строчная"));

}

Пример 12. Программа, содержащая несколько функций для обработки строк:

strcpy – копирование строки в другую,

strlen – определение длины,

strcat – присоединение одной строки к другой,

strcmp – лексикографическое сравнение строк.

/* strings manipulation */
void strcpy (s,t) /* копирование строки */

char *s, *t;

{

while ( *s++ = *t++ )

;

}

int strlen (s) /* длина строки */

char *s;

{

char *p = s;

while ( *p ) /* while ( *p++ ) */

p++; /* ; */

return (p-s); /* return p-s-1; */

}

void strcat (s,t) /* присоединение строки */

char *s, *t;

{

while ( *s ) /* поиск конца строки s */

s++;

while ( *s++ = *t++ ); /* копирование */

}

int strcmp (s,t) /* сравнение строк */

char *s, *t;

{

for ( ; *s == *t; s++, t++ ) /* = 0 строки совпадают */

if ( *s == '\0' ) /* < 0 s < t | лексикогра */

return (0); /* > 0 s > t | фически */

return (*s-*t);

}

main ()

{

char *p, *q; int l = 0, m = 0;

printf ("Программа, содержащая несколько функций для обработки строк:\n");

printf ("strcpy – копирование строки в другую,\n");

printf ("strlen – определение длины,\n");

printf ("strcat – присоединение одной строки к другой,\n");

printf ("strcmp – лексикографическое сравнение строк.\n");

p = "string 1";

printf ("строка p =%s\n", p);

strcpy (q,p);

printf ("строка q после копирования =%s\n", q);

l = strlen (q);

printf ("длина строки q=%d\n", l);

p = "string 2";

printf ("строка p =%s\n", p);

strcat (q,p);

printf ("строка q после соединения с p=%s\n", q);

l = strlen (q);

printf ("длина q %d\n", l);

printf ("строки p и q %s", (strcmp (q,p)?"не совпадают":"равны"));

}

Задание

1. Напишите программу для подсчета пробелов, табуляций и новых строк.

2. Напишите программу, которая копирует ввод на вывод, за- меняя при этом каждую последовательность из одного или более пробелов на один пробел.

3. Как бы Вы стали проверять программу подсчета слов? Какие имеются ограничения ?

4. Напишите программу, которая будет печатать слова из файла ввода, причем по одному на строку.

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

6. Напишите программу, печатающую гистограмму длин слов из файла ввода. Самое легкое – начертить гистограмму горизонтально; вертикальная ориентация требует больших усилий.

7. Переделайте ведущую часть программы поиска самой длинной строки таким образом, чтобы она правильно печатала длины сколь угодно длинных вводимых строк и возможно больший текст.

8. Напишите программу печати всех строк длиннее 80 символов.

9. Напишите программу, которая будет удалять из каждой строки стоящие в конце пробелы и табуляции, а также строки, целиком состоящие из пробелов.

10. Напишите функцию reverse(s), которая распологает символьную строку s в обратном порядке. С ее помощью напишите программу, которая обратит каждую строку из файла ввода.

11. Напишите программу удаления из "C"–программы всех комментариев. Не забывайте аккуратно обращаться с "закавыченными" строками и символьными константами.

12. Напишите программу проверки "C"-программы на элементарные синтаксические ошибки, такие как несоответствие круглых, квадратных и фигурных скобок. Не забудьте о кавычках, как одиночных, так и двойных, и о комментариях. (Эта программа весьма сложна, если Вы будете писать ее для самого общего случая).

1   2   3   4   5   6   7   8

Похожие:

Практикум по пмм ( 2 курс, 3 семестр ) Волгоград, 1998 Лабораторная работа №1 Массивы и указатели iconЛабораторная работа №1 36 Лабораторная работа №2 47 введение данное учебно-методическое пособие представляет собой сборник лабораторных работ
Предлагаемый лабораторный практикум является руководством для выполнения лабораторных работ. Практикум охватывает основные темы дисциплины....
Практикум по пмм ( 2 курс, 3 семестр ) Волгоград, 1998 Лабораторная работа №1 Массивы и указатели iconЛабораторная работа по теме: «Одномерные массивы»
Дан массив целых чисел. Найти максимальный элемент массива и его порядковый номер
Практикум по пмм ( 2 курс, 3 семестр ) Волгоград, 1998 Лабораторная работа №1 Массивы и указатели iconЛабораторная работа №1 Работа в Oracle Database Express Edition 1 Лабораторная работа №6
Лабораторная работа Выполнение расчетов с использованием программирования в среде Visual Basic for Applications
Практикум по пмм ( 2 курс, 3 семестр ) Волгоград, 1998 Лабораторная работа №1 Массивы и указатели iconПрактикум по курсу Информатика (раздел Работа с пакетами прикладных программ) для студентов заочной формы обучения
Лабораторная работа №6. Обобщение данных. Создание таблицы подстановки. Подведение итогов 28
Практикум по пмм ( 2 курс, 3 семестр ) Волгоград, 1998 Лабораторная работа №1 Массивы и указатели iconК ф. м н. А. О. Беляков. Список публикаций
Замечания к статье Л. Д. Акуленко и С. В. Нестерова "Устойчивость равновесия маятника переменной длины". Пмм. 2009. Т. 73. Вып. С....
Практикум по пмм ( 2 курс, 3 семестр ) Волгоград, 1998 Лабораторная работа №1 Массивы и указатели iconРабочая учебная программа «История и культура страны изучаемого языка»
Форма контроля: 1 курс, второй семестр – зачет; 2 курс, третий семестр – экзамен
Практикум по пмм ( 2 курс, 3 семестр ) Волгоград, 1998 Лабораторная работа №1 Массивы и указатели iconРабочая учебная программа «История и культура страны изучаемого языка»
Форма контроля: 1 курс, второй семестр – зачет; 2 курс, третий семестр – экзамен
Практикум по пмм ( 2 курс, 3 семестр ) Волгоград, 1998 Лабораторная работа №1 Массивы и указатели iconПрактикум по гидробиологии Выписка из учебного плана. Форма обучения: очная Курс: IV семестр: VII
Реквизиты составителя. Доцент кафедры зоологии, к б н. Анастасия Михайловна Ларионова
Практикум по пмм ( 2 курс, 3 семестр ) Волгоград, 1998 Лабораторная работа №1 Массивы и указатели iconЛабораторная работа «Одномерные массивы»
Цели: формирование практических умений и навыков составления блок-схем и записи на языке программирования Паскаль алгоритмов заполнения,...
Практикум по пмм ( 2 курс, 3 семестр ) Волгоград, 1998 Лабораторная работа №1 Массивы и указатели iconПрактикум по герпетологии Выписка из учебного плана. Форма обучения: очная Курс: IV семестр: VIII
Реквизиты составителя. Старший преподаватель кафедры зоологии Василий Егорович Колодезников
Разместите кнопку на своём сайте:
ru.convdocs.org


База данных защищена авторским правом ©ru.convdocs.org 2016
обратиться к администрации
ru.convdocs.org