Хрестоматия по программированию на Си в Unix


Простые программы и алгоритмы. Сюрпризы, советы. Хрестоматия по программированию на Си в Unix - стр. 5


Составьте программу перекодировки вводимых символов со стандартного ввода по следующему правилу:

a -> b b -> c c -> d ... z -> a другой символ -> *

Коды строчных латинских букв расположены подряд по возрастанию.

Составьте программу перекодировки вводимых символов со стандартного ввода по следующему правилу:

B -> A C -> B ... Z -> Y другой символ -> *

Коды прописных латинских букв также расположены по возрастанию.

Напишите программу, печатающую номер и код введенного символа в восьмеричном и шестнадцатеричном виде. Заметьте, что если вы наберете на вводе строку символов и нажмете клавишу ENTER, то программа напечатает вам на один символ больше, чем вы набрали. Дело в том, что код клавиши ENTER, завершившей ввод строки - символ '\n' тоже попадает в вашу программу (на экране он отображается как перевод курсора в начало следующей строки!).

Разберитесь, в чем состоит разница между символами '0' (цифра нуль) и '\0' (нулевой байт). Напечатайте

printf( "%d %d %c\n", '\0', '0', '0' );

Поставьте опыт: что печатает программа?

main(){ int c = 060; /* код символа '0' */ printf( "%c %d %o\n", c, c, c); }

Почему печатается 0 48 60? Теперь напишите вместо

int c = 060; строчку

char c = '0';

Что напечатает программа?

#include <stdio.h>

void main(){ printf("ab\0cd\nxyz"); putchar('\n'); }

Запомните, что '\0' служит признаком конца строки в памяти, а '\n' - в файле. Что в строке "abcd\n" на конце неявно уже расположен нулевой байт:

'a','b','c','d','\n','\0'

Что строка "ab\0cd\nxyz" - это

'a','b','\0','c','d','\n','x','y',z','\0'

Что строка "abcd\0" - избыточна, поскольку будет иметь на конце два нулевых байта (что не вредно, но зачем?). Что printf печатает строку до нулевого байта, а не до закрывающей кавычки. Программа эта напечатает ab и перевод строки.

Вопрос: чему равен sizeof("ab\0cd\nxyz")? Ответ: 10.

Напишите программу, печатающую целые числа от 0 до 100.

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

Напишите программу, печатающую сумму квадратов первых n целых чисел.

Напишите программу, которая переводит секунды в дни, часы, минуты и секунды.

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

Напишите программу, шифрующую текст файла путем замены значения символа (например, значение символа C заменяется на C+1 или на ~C ).

© Copyright А. Богатырев, 1992-95
Си в UNIX

| |




- Начало -  - Назад -  - Вперед -



Книжный магазин