Программа должна считывать введенные числа и определять, являются ли они четными или нечетными. Затем ему нужно отобразить нечетное и четное число, а также средние числа введенных чисел. Он останавливается, когда вводится 0
.Программа висит после ввода
Моя проблема в том, что она просто зависает после ввода первого числа.
#include "stdio.h"
int main(void)
{
int oddcount = 0, evencount = 0; /* Count of even and odd numbers. */
int number;
float avge = 0, avgo = 0; /* Average for even and odd numbers. */
int evennum = 0, oddnum = 0;
printf("Enter a number or enter 0 to stop: ");
scanf_s("%i", &number);
while(number != 0)
{
if(number % 2 == 0)
{ evencount = evencount + 1;
evennum += number; }
else
{ oddcount = oddcount + 1;
oddnum += number; }
}
if(oddnum != 0)
avgo = oddnum/oddcount; /* Finding the odd average. */
if(evennum != 0)
avge = evennum/evencount; /* Finding the even average. */
printf("Here is the count odd %i and even %i numbers.\n", oddcount, evencount);
printf("And their averages %f odd and %f even.\n", avgo, avge);
return 0;
}
у вас есть 'While (число! = 0)' петля. Если пользователь вводит число, которое не равно нулю, как будет проходить этот цикл? – shf301
Посмотрите на ответ шекхара-сумана, он решит вашу проблему. – Jite
Эта строка: scanf_s ("% i", & number); не читает целое число. Возможно, вы имели в виду: scanf_s («% d», & number); однако, не потребляет «\ n», сгенерированный, когда пользователь нажимает клавишу ввода после ввода первого номера. предложите использовать: scanf_s ("% d", & number); который будет потреблять пустое пространство, затем получите номер. Кроме того, во время цикла больше не вводится число, поэтому число никогда не обновляется. Таким образом, цикл никогда не заканчивается. – user3629249