Знаков тип данни

Според ASCII таблицата символите с числа (кодове) от 0 до 127 са строго определени. В този диапазон числата се присвояват на цифрови символи, малки и големи латински (английски) букви, препинателни знаци, както и някои други символи ('#', '%', '

' и така нататък.). Тук също се задават кодове за различни контролни знаци, които изобщо не се показват на екрана, но правят нещо (например създаване на нов ред или отстъп, даване на звуков сигнал и т.н.). Разширената ASCII таблица кодира знаците от националните азбуки (например българската) с числа от 128 до 255.

В C при достъп до цифрови кодове е достъпно само основното тяло на ASCII, тоест знаци с кодове от 0 до 127. Въпреки че типът char може да приема числови стойности от -128 до 127.

Цифровите знаци от '0' до '9' имат серийни кодове от 48 до 57. Този факт обикновено се използва за преобразуване на цифрови знаци в числа. Ако е известно, че знакът '0' има код 48 и е даден символът '5', който има код 53, тогава ако извадим числото 48 от 53, получаваме числото 5. Така, изпълнявайки операцията '5' - '0', получаваме числото 5.

Английските главни букви (главни) имат последователни кодове от 65 (A) до 90 (Z), малки (малки) - от 97 до 122.

Куестове

Напишете програма, която декларира само две променливи от символен тип. На една променлива се присвоява например символът "4", а на втората - "7". Функцията printf() трябва да отпечата разликата и сумата на числата, които са представени като символи и са присвоени на променливи.

Променливата not_num съдържа низ от три цифри, като например "528". Трябва да получите съответното число от този низ и да го присвоите на променливата num. Дисплейрезултатът от израза num е 10. (Подсказка: низът е масив от знаци, така че можете да извлечете цифрови знаци по техните индекси; когато изчислявате число, първият знак от масива, преобразуван в число, ще бъде числото на стотиците, вторият - десетиците, а третият - единиците.)

Известно е, че знакът A от английската азбука има код 65. Напишете програма, която определя кои знаци в тази азбука са на 5-то, 12-то и 19-то място.

Контролни знаци

Специалните или контролните символи в програмния код се обозначават с два знака, тъй като обикновено е невъзможно да се обозначат с един. Но всъщност те представляват един герой. Например, буквата 'a' може да бъде обозначена с един знак, но как да обозначим знака за нов ред, ако не съвпада с нито един знак? Трябва да представите непечатаем знак с комбинация от няколко други знака: '\n'.

По-долу са изброени няколко контролни символа (не всички) и какво правят:

'\n' - създаване на нов ред и преминаване към него;

'\t' — табулиране (отстъп с няколко интервала);

'\r' — връщане на каретка (преместване на курсора на първата позиция на текущия ред);

'\b' - връща курсора един знак назад и изтрива този знак.

В програмния код, в допълнение към контролните знаци, някои съвсем обикновени знаци могат да бъдат записани със специални знаци, като кавички, единични кавички, обратни наклонени черти и т.н. Някои от тези знаци могат да бъдат зададени като единичен знак в единични кавички. Но много от тях не могат да бъдат вмъкнати просто така в ред, защото те означават нещо от гледна точка на синтаксиса на езика. Например обратна наклонена черта в низ показва, че започва специално обозначение на символа, двойна кавичка показва началото или края на низ. Следователно такива символи също се обозначаватсдвоена комбинация от други знаци:

'\\' - наклонена черта;

'\"' - двойни кавички (не в низ, можете просто '"');

'\0' — празнота, символ с код 0 според ASCII таблицата.

Напишете програма, която използва табулатори, показва низ в двойни кавички, в единични кавички (апострофи), презаписва предишния знак и връща каретка (за последните два случая, за да видите резултата, трябва да се вмъкнат контролни символи в низа). Проверете как се показва даден низ, ако има нулев знак в средата.

Показване на знаците на контролните символи и техните номера според ASCII таблицата. Примерен резултат:

Открийте чрез експеримент как да изведете знака %. (Има два начина.)