* Цикли 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}.
Помощ: Използвайте вложени цикли.
Добави коментар