* Цикли while и do-while
Публикувано на 25 септември 2008 в раздел С/С++.
Условните оператори за цикли позволяват многократното повторение на един или група от оператори, т.е да се организира цикъл. Пролжителността на цикъла се управлява от "условие за цикъл". Условието е доустим за езика израз. Когато условието даде резултат 0 цикъла се прекратява.
Цикъла while има следния синтаксис:
while(<условие>) { оператори; }
Операторът do-wile има анарлогичен синтаксис:
do { оператори; } while(<условие>);
Разликата между while и do-while, е че при do-while тялото на цикъла се изпълнява поне един път, независимо от условието.
Внимание: Обърнете внимание, че е задъжително да има точка и запетая (;) след скобите на while в оператора do-while!
Пример: Въвеждаме последователно 10 числа от клавиатурата и ги записваме в масив int number[10]. Изведете масива в ред обратен на въвеждането им.
int number[10]; int i = 0; while(i < 10) { printf("Please enter number %d: ", i+1); scanf("%d", &number[i]); i++; } // Показваме редицата на екрана printf("\n\nThe row is:\n"); i=0; while(i<10) { printf("%d ", number[i]); i++; } // Обръщаме масива i=0; while(i < 10-(i+1)) { int temp = number[10-(i+1)]; number[10-(i+1)] = number[i]; number[i] = temp; i++; } // Показваме новата редица printf("\n\nThe reversed row is:\n"); i=0; while(i<10) { printf("%d ", number[i]); i++; }
Пример: Намерете средното аритметично на три числа въведени от клавиатурата.
double num, s=0; int i=1; do { printf("Vavedete chislo N%d: ", i); scanf("%lf", &num); s += num; i++; } while (i<=3); printf("\n\nSredno aritmetichno: %.2f\n\n", s/3);
Задача: Реализирайте алгоритъма на Еклид за намиране на най-голям общ делител на две естествени числа a и b. Направете нужната проверка за ваидност на входните данни.
Припомняне: Докато a!=b изпълнете: ако a>b то a-=b; в противен случай b-=a. След изпълнението на цикъла НОД ще бъде a.
Задача: Да се напише програма, която установява дали във въведено естествено число има цифрата 5. Направете проверка за валидност на входните данни.
Припомняне: chislo%10 ще ви даде последната цифра на числото, а chislo/10 ще я премахне.
Задача: Въведете символен низ от клавиатурата. Извлечете цифрите от този низ и ги запишете в друг.
Пример: От низа "test12hh32L*" ще се поучи низ "1232"
Задача: Преработете предишната задача така, че да се извличат естествените числа от низа в масив от тип int
Пример: От низа "test12hh32L*" ще се получи масив с два елемента {12, 32}.
Помощ: Използвайте вложени цикли.
Добави коментар