Цикл выполняется только раз - C (СИ)
Формулировка задачи:
задача 75: > Очень странный цикл, не нравится мне, он в
любом случае только один
раз выполнится, а всё последующее вообще
ни одного. Что-то не то ты
сделал. Если там задание про "без использования if",
то имеется в виду, что
нужно воспользоваться тем свойством, что
логические операции
возвращают 0 или 1 сами по себе и их можно
вместе комбинировать при помощи && и ||. > while (p>0) {
#include <stdio.h>
#include <math.h>
int main()
{
int x,y,z,p,k;
printf("x = "); > scanf("%d",&x);
printf("y = ");
scanf("%d",&y);
printf("z = ");
scanf("%d",&z);
k = 0; > p = x*y*z;
while (p<0) {
++k;
printf("%d\n",k);
p = 0;
} while (x*z*z*y < 0) {
printf("%d\n",k);
x = 0;
}
while (x*y*y*z < 0) { > printf("%d\n",k);
x = 0;
}
while (x*x*y*z < 0) {
printf("%d\n",k);
x = 0; > }
while (x*x*z*y >0) {
++k;
printf("%d\n",k);
x = 0;
} }
return 0;
}Решение задачи: «Цикл выполняется только раз»
textual
Листинг программы
int x,y,z,k;
scanf("%d%d%d", &x, &y, &z);
k=!((x*y*z > 0)&&((x*y<0)||(x*z<0)));
printf ("%d\n", k);
system("pause");
return 0;
Объяснение кода листинга программы
- Объявляются четыре переменные типа int: x, y, z, k.
- С помощью функции scanf в переменные x, y, z считываются значения, вводимые пользователем.
- Переменная k принимает значение, равное логическому отрицанию выражения (xyz > 0)&&((xy<0)||(xz<0)).
- Выводится значение переменной k с помощью функции printf.
- С помощью функции system(
pause) программа переходит в режим ожидания нажатия клавиши пользователем. - Программа возвращает 0, завершая свою работу.