АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Листинг 3. Исходный текст программы OUT2.CPP в файле List7-3.CPP

Читайте также:
  1. C) в тексте нет информации
  2. C.) При кодировании текстовой информации в кодах ASCII двоичный код каждого символа в памяти ПК занимает
  3. I. Системные программы.
  4. II. Требования к результатам освоения основной образовательной программы начального общего образования
  5. III. Описание основных целей и задач государственной программы. Ключевые принципы и механизмы реализации.
  6. III. Требования к структуре основной образовательной программы начального общего образования
  7. III. Характеристика ведомственных целевых программ и мероприятий подпрограммы
  8. III. Характеристика ведомственных целевых программ и мероприятий подпрограммы
  9. III. Характеристика ведомственных целевых программ и мероприятий подпрограммы
  10. III. Характеристика ведомственных целевых программ и мероприятий подпрограммы
  11. IV. Требования к условиям реализации основной образовательной программы начального общего образования
  12. IX. Перепишіть і зробіть письмовий переклад українською мовою наступного тексту.

 

  // Программа, использующая printf для форматирования вывода
   
  #include <stdio.h>
   
  int main()
  {
  int anInt = 67;
  Unsigned char aByte = 128;
  char aChar = '@';
  Float aSingle = 355.0;
  Double aDouble = 1.130e+002;
   
  Printf("%3d + %2d = %3d\n",
  aByte, anInt, aByte + anInt);
   
  Printf("Вывод использует спецификации преобразования %%lf:\n");
  Printf(" %6.4f / %10.4lf = %7.5lf\n",
  aSingle, aDouble, aSingle / aDouble);
   
  Printf("Вывод использует спецификации преобразования %%le:\n");
  printf(" %6.4e / %6.4le = %7.5le\n",
  aSingle, aDouble, aSingle / aDouble);
   
  printf("Вывод использует спецификации преобразования %%lg:\n");
  printf(" %6.4g / %6.4lg = %7.5lg\n",
  aSingle, aDouble, aSingle / aDouble);
   
  printf("Символьная переменная aChar: %c\n", aChar);
  printf("ASCII-код %c: %d\n", aChar, aChar);
  return 0;
  }

Пример вывода программы из листинга 3:

128 + 67 = 195

Вывод использует спецификации преобразования %lf:

355.0000 / 113.0000 = 3.14159

Вывод использует спецификации преобразования %le:

3.5500e+02 / 1.1300e+02 = 3.14159e+00

Вывод использует спецификации преобразования %lg:

355 / 113 = 3.1416

Символьная переменная aChar: @

ASCII-код @: 64

В программе из листинга 3 объявляется целый набор переменных раз­личных типов. Оператор вывода в строках 13 и 14 выводит целые, используя спецификацию формата %d. В таблице 4 приведены результаты действия спецификаций преобразования из строки 13. Обратите внимание на то, что первая переменная была преобразована из типа unsigned char в тип integer.

Таблица 4. Результат действия спецификаций форматирования в функции printf из строки 13

Спецификация формата Переменная Тип данных Тип после преобразования
%3d aByte unsigned char Int
%2d anInt int Int
%3d aByte + anInt int Int

 

Оператор вывода в строке 17 выводит переменные aSingle, aDouble и вы­ражение aSingle / aDouble, используя спецификации преобразования %6.4f, %6.41f и % 7.51f. Точность представления задается ими равной 4, 4 и 5 цифрам, а минимальная ширина поля 6, 6 и 7 цифрам соответственно. Две последних спецификации осуществляют преобразование величин двойной точности.

Оператор вывода в строке 21 подобен оператору из строки 17. Отличие состоит в том, что используется е-формат вместо f-формата. Соответственно три значения выводятся в экспоненциальном формате.

Оператор из строки 25 также похож на оператор из строки 17. Основное отличие состоит в том, что вместо f-формата используется g-формат. В ре­зультате первые два числа выводятся без дробной части, поскольку они яв­ляются целыми величинами.

Оператор вывода в строке 28 выводит содержимое переменной aChar по формату %с. Оператор вывода в строке 29 выводит ту же переменную aChar дважды, первый раз как символ, а второй раз как целое (или, если быть точным, выводится ASCII-код символа). Для этого используются специфика­ции преобразования %с и %d соответственно.

Массивы символов в C++

В C++ имеется специальный класс для работы со строками, которого, конечно, не было в языке С. В С строки вводились как массивы символов, ограниченные нуль-символом (ASCII-код которого равен нулю), поэтому боль­шое количество программ, написанных на С, используют символьные мас­сивы. Более того, и в C++, несмотря на то, что он имеет класс для работы со строками, находится применение массивам символов. Поэтому термин «строка» имеет два значения: строка в смысле C++ и строка как массив символов. Весь этот раздел будет посвящен тому, как нужно и не нужно использовать символьные массивы.

Символ '\0' также называют нуль-терминатором. Строки, оканчивающиеся нуль-терминатором, называют еще ASCIIZ-строками, где символ Z обозначает ноль — ASCII-код нуль-терминатора. Еще этот символ называют NUL-символом, поскольку этот термин является его именем в ASCII.

Все строки обязательно должны оканчиваться нуль-терминатором, и при объявлении размера массива необходимо это учитывать. Когда вы объявляете строковую переменную как массив символов, увеличьте размер массива на один символ для нуль-терминатора. Использование строк с конечным нулем также имеет то преимущество, что здесь отсутствуют ограничения, накладываемые реализацией C++. Кроме того, структура ASCIIZ-строк очень проста.


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.)