Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум ЭВМ ответы.doc
Скачиваний:
3
Добавлен:
07.05.2019
Размер:
309.25 Кб
Скачать

2.3. Константы

   В языке Си константы представляют фиксированные величины, которые не могут быть изменены в программе. Константы могут быть любого базового типа данных. Пример констант:

char - 'a','\n','8'

int - 1, 134, -500

unsigned int - 53500

long int - 87000, -37, 7L

short int - 11, 13, -128

float - 133.34, 3.36E-6, 5E+5

double - 133.45, 133340, -2.789

   Правила определения типа констант следующие. Целая константа относится к типу int, если эта константа входит в интервал значений типа int.    Если эта константа не входит в интервал значений типа int, например - 37750 (а как известно тип int, как правило принимает значения в диапазоне от -32768 до 32767), то она считается константой типа unsigned (применительно к int это уже от 0 до 65535). Если же и этого мало, то она считается константой типа long (т.е. long int).    Константа с десятичной точкой считается константой типа double, если она помещается в соответствующий интервал измерения.    Для явного задания типа констант используется механизм суффиксов. В качестве суффиксов целочисленных (int) констант используются u,l,h,U,L,H. Для чисел с плавающей точкой - l,L,f,F.    Например:

13h, 35H

-

short int

25L, -223l

-

long int

87lu, 88Lu, 89ul

-

unsigned long int

55uh

-

unsigned short int

27.43f, 7.7E-6F

-

float

1.41l, 3.2E+12L

-

double

Символьная переменная - это величина размером в 1 байт, которая используется для представления литер и целых чисел в диапазоне от 0 до 255 или от -128 до 127, в зависимости от того, знаковая переменная или беззнаковая. Символьные константы заключаются в одинарные кавычки. Примеры символьных констант: 'd', '+', '8'. Приведем пример программы с использованием символьных переменных и констант:

#include /* Пример 4 */   main()  {   char ch;   ch='c';   printf("%c",ch);   ch='+';   printf("%c%c", ch,ch);  }

В функции printf() появилась новая спецификация - %c. В таком формате печатается символ. Этот же формат можно использовать в функции scanf() для ввода символа с клавиатуры. В языке Си в стандартной библиотеке ввода/вывода есть специальная функция getche(). Эта функция ожидает, пока не будет нажата какая-либо клавиша клавиатуры, и затем вводит код этой клавиши. Рассмотрим пример программы, использующей указанную функцию:
   
   4. Условный оператор, оператор переключатель-свитч

3.1. Условный оператор

   Основная форма условного оператора выглядит следующим образом:

if(условие) оператор;

else оператор;

   Если значение условия истинно, о выполняется оператор (это может быть и составной оператор), следующий за условием. Если же условие принимае значение ложно, о выполняется оператор, следующий за словом else. В записи оператора if вторая часть (т.е. оператор else) может отсутствовать. Тогда, если условие принимает значение ложно, выполняется следующий оператор программы. В качестве условия может стоять произвольное выражение. В операторе if лишь проверяеся, является ли значение эого выражения ненулевым (истинным) или нулевым (ложным). Рассморим пример программы определения знака воодимого с клавиатуры вещественного числа с использованием нашего оператора if.

#include<stdio.h>    /* Пример 9 */   main() {   int sgn;   float x;   printf("Введите число: \n");   scanf("%f",&x);   if(x>0)   { sgn=1; printf("Число %f\n, положительное sgn = %d\n", x, sgn);}   if(x==0)   { pritf("Число %f\n равно нулю sgn = %d\n", x, sgn);}   if(x<0) {sgn=-1; printf("Число %f отрицательное sgn=%d\n", x, sgn);} }

   Нередко возникает необходимость в использовании конструкции вложенных if-else-if:

if(условие1) оператор1;

else if(условие2) оператор2;

else if(условие3) оператор3;

...

else оператор;

   В такой форме условия оператора if проверяютсяч сверху вниз. Как только некоторое условие принимает значение истинно, выполняется оператор, следующий за этим условием, а вся остальная часть конструкции будет проигнорирована. Поэтому, предыдущую программу можно было бы написать следующим образом:

#include<stdio.h>    /* Пример 9 */   main() {   int sgn;   float x;   printf("Введите число: \n");   scanf("%f",&x);   if(x>0) { sgn=1; printf("Число %f\n, положительное sgn = %d\n", x, sgn);}   if(x<0) {sgn=-1; printf("Число %f отрицательное sgn=%d\n", x, sgn);}   else { pritf("Число %f\n равно нулю sgn = %d\n", x, sgn);} }

   Для того чтобы проверить, равно число x нулю или нет, можно написать

if(x==0) printf("Число равно нулю ...");

else printf("Число не равно нулю ...");

   Такой же результат можно получить, написав более компактный код

if(!x) printf("Число равно нулю ...");

else printf("Число не равно нулю ...");

   Вложенным оператором if называется конструкция вида

if(x)

if(y) printf(" ...");

else операторX ....;

   В такой форме непонятно, к какому из операторов if относится else. В языке Си оператор else ассоциируется с ближайшим if в соответствующем блоке. Поэтому в указанной конструкции else относится к if(y). Для того чтобы отнести else к if(x), необходимо соответствующим образом расставить операторные скобки:

if(x){

if(y) printf(" ...");

if(x)}

else операторX ....;

   Теперь if(y) относится к другому блоку.