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

Оператор switch

Оператор switch, как и условные операторы, используется для ветвления программы в зависимости от значения некоторого выражения.

Синтаксис этого оператора имеет вид:

switch (выражение)

{ case выражение 1: операторы_1;

case выражение 2: операторы_2;

…

case выражение n: операторы_n

default: операторы_d; }

где выражение 1, выражение 2,..., выражение n – константные выражения целого типа.

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

Если не будет обнаружено ни одного совпадения, то выполняется оператор(ы) в цепи, помеченной ключевым словом default.

Впрочем, последняя может и отсутствовать в операторе switch. Работа переключателя приведена на рисунке 2.4.

Рис. 2.4. Схема работы оператора switch

Операторы прерывания break и continue

Оператор прерывания break имеет следующий вид:

break;

Оператор прерывает выполнение операторов while, do, for и switch и передает управление следующему за ними оператору.

В случае вложенных друг в друга выше перечисленных операторов оператор break прерывает их выполнение только на текущем уровне вложенности. Оператор break не может быть использован ни в каких других конструкциях языка Си, кроме выше перечисленных.

В отличии от оператора break оператор прерывания continue прерывает не выполнение самих операторов while, do или for, а только их текущую итерацию и имеет вид:

continue;

Пример

По номеру дня недели напечатать его название.

# include stdio.h

void main( )

{ int n ;

printf (Введите номер дня недели \n );

scanf ( %d, &n);

switch (n)

{ case 1: printf (Понедельник); break;

case 2: printf (Вторник); break;

case 3: printf (Среда); break;

………………………………………

………………………………………

case 7: printf(Воскресенье); break;

default: printf(Неверный номер дня недели); }

}

Оператор break используется здесь для исключения последующих функций printf() после первого совпадения значения переменной n с константами 1, 2,…7.

Блок-схема оператора switch для решения вышеуказанной задачи приведена ниже.

Пример

Напечатать таблицу умножения.

# include stdio.h

void main()

{

int i, j ;

for ( i=1; i<10; i++ )

{

for ( j=1; j<10; j++ )

printf (“%d*%d=%2d\t “, i, j, i*j ) ;

printf (“\n”) ;

}

}

Массивы

Массив – это упорядоченная совокупность однородных компонент.

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

тип имя_массива [размер] ;

где: тип – определяет тип компонент массива,

размер – выражение целого типа, определяющее количество компонент описываемого массива.

Обращение к элементам массива осуществляется по имени массива и номеру его компоненты в квадратных скобках, причем нумерация компонент начинается с нуля.

При описании массивы могут быть инициализированы, например,

float m[5] {1.2, 3.01, 0.2, 1.1, 5.0};

Возможно и такое описание массива:

int m[ ] = { 1, 4, 2, 3, 7, 3 } ;

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

Аналогично определяются многомерные массивы. Стандарт языка Си требует, чтобы транслятор мог обрабатывать определения массивов с размерностью до 31.

Например, конструкция float b[5][3]; описывает двумерный массив с именем  b, содержащий пять элементов, каждый из которых содержит по три элемента..

Инициализирование двумерных массивов может быть различным:

int a[2][3] = { 1, 5, 6, 9, 7, 8 } ;

int a[2][3] = {{ 1, 5, 6}, {9, 7, 8}} ;

int a[ ][ ] = {{1, 5, 6}, { 9, 7, 8}} ;

Одномерные массивы символов представляют собой строки. Строки должны заканчиваться специальным нуль-символом \0.

Инициализация строки может осуществляться по-разному:

char s1[ 6] {L, i, n, u, x, \0};

char s1[ 6] Linux;

Для ввода массивов используются циклы for.

  1. Одномерные массивы:

float a[7] ; int i ;

for ( i=0; i<7; i++ )

{ printf (“ a[%d] = ”, i+1) ;

scanf (“ %f “, &a[i] ) ; }

  1. Двумерные массивы:

float a[4][5] ; int i , j ;

for ( i=0; i<4; i++ )

for ( j=0; j<5; j++ )

{ printf (“ a[%d][%d] = ”, i+1, j+1) ;

scanf (“ %f ”, &a[i][j] ) ; }

  1. Ввод строк:

a) char str[20] ; scanf ( “ %s “, str ) ;

b) char str[20] ; gets ( str ) ;

В первом случае ввод идет до первого пробела, во втором – можно вводить и пробелы, конец ввода определяется нажатием клавиши “Enter”.

Пример

Вычислить среднее геометрическое положительных элементов целочисленного массива X[12].

void main()

{

int X[12], i, k=0; float sg=1;

for ( i=0; i<12; i++ )

{ printf (“ X[%d] = ”, i+1) ;

scanf (“ %d “, &X[i] ) ;

if (X[i] >0 ) { sg *= X[i] ; k++ ; }

}

sg = pow (sg , 1./k ) ;

printf (“среднее геометрическое = %f “, sg);

}

Пример

Найти сумму целых положительных чисел, меньших 50 и кратных 4 из целочисленного массива С[3][7].

void main()

{

int С[3][7], i, j, s=0;

for ( i=0; i<3; i++ )

for ( j=0; j<7; j++ )

{ printf (“ C[%d][%d] = ”, i+1, j+1 ) ;

scanf (“ %d “, &C[i][j] ) ;

if ( C[i][j] >0 && C[i][j]<50 && C[i][j]%4==0 )

s + = C[i][j] ;

}

printf (“сумма = %d “, s ) ;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]