"Андрей Богатырев. Хрестоматия по программированию на Си в Unix" - читать интересную книгу автора


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

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

Почему печатается 0 48 60? Теперь напишите вместо
int c = 060;
строчку
char c = '0';

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

#include
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.

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

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

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

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

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

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

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