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

Типичные ошибки

  1. Использование в выражени­ях вместо проверки на равенство (= =) простого присваивания (=).

if (а = 1) b=0;

Синтаксической ошибки нет, так как операция присваивания формирует результат, кото­рый и оценивается на равенство/неравенство нулю. В данном примере присваивание пере­менной b будет выполнено независимо от значения переменной а. Поэтому константу рекомендуется записывать слева от операции сравнения: if (1 ==а) b=0 ; .

  1. неверная запись проверки на принадлежность диапазону

0<х<l неверно

0<х && х<l верно

Оператор switch

Оператор switch (переключатель) предназначен для разветвления процесса вы­числений на несколько направлений. Формат оператора:

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

case константное_выражение_l: [список_операторов_l]

case константное_выражение_2: [список_операторов_2]

case константное_выражение_п: [список_операторов_п]

[default: операторы]

}

Выполнение оператора начинается с вычисления выражения (оно должно быть целочисленным), а затем управление передается первому оператору из списка, помеченного константным выражением, значение которого совпало с вычислен­ным. После этого, если BЫXOД из переключателя явно не указан, последовательно выполняются все остальные ветви (включая defauit).

Выход из переключателя обычно выполняется с помощью операторов break или return. Оператор break выполняет выход из самого внутреннего из объемлющих его операторов switch, for, while и do. Оператор return выполняет выход из функ­ции, в теле которой он записан.

Все константные выражения должны иметь разные значения, но быть одного и того же целочисленного типа. Несколько меток могут следовать подряд. Если совпадения не произошло, выполняются операторы, расположенные после слова default (а при его отсутствии управление передается следующему за switch опе­ратору).

Пример (программа реализует простейший калькулятор на 4 действия):

#include <stdio.h>

int main() {

int а=15,b=3, res,f;

char ор;

printf( "\пВведите знак операции: ");

scanf(“%с”, &ор);

f = 1:

switch (ор){

case '+': res = а + b; break;

case ' : res = а – b; break;

case '*': res = а * b; break;

case ':’:

case '/’: res = а / b; break;

default : printf(“\ пНеизвестная операция"); f = 0:}

if (f) printf( "\пРезультат : %d" , res);

return 0;

}

Примечание

В случае синтаксической ошибки в слове default сообщение об ошибке не выдается, по­скольку компилятор воспримет это слово как допустимую метку оператора.

Операторы цикла

Цикл – это многократное повторение оператора или группы операторов. Тело цикла – это повторяемые операторы. Однократное повторение тела цикла называется итерацией. В языке С есть три оператора цикла: цикл с предусловием while , цикл с постусловием do while и цикл с параметром for.

Цикл с предусловием

Синтаксис оператора:

while (выражение) оператор;

Группа 103

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

Пример: Дана последовательность из 10 целых чисел. Найти сумму этих чисел и вывести ее на экран.

Решение.Группа 392

Пунктирной линией выделено тело цикла. Оно состоит из трех операторов, поэтому эти операторы надо взять в фигурные скобки.

#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])

{

int x, //значение элемента последовательности

i=0, //счетчик - номер элемента

s=0; //сумма элементов последовательности

while(i<10){

scanf("%d",&x); //ввод элемента

s+=x; //добавление элемента к сумме

i++;} // увеличение счетчика

printf("\ns=%d",s); //печать результата

return 0;}