#include "stdafx.h"
#include <stdio.h>
#include <Windows.h>
double FindPopulation(char);
void main()
{
char state;
double population;
int flag = 1;
while(flag == 1)
{
printf("This program will display the population for any New England state. \n");
printf("e=ME, v=VT, n=NH, m=MA, c=CT, r=RI\n");
printf("Enter the state using the above symbols: ");
scanf("%c", &state);
printf("You entered %c \n", state);
population = FindPopulation(state);
if (population == 0)
{
printf("You have entered a invalid state!\n");
}
else
printf("This state has a population of %.2f million!!\n", population);
printf("To quit please enter the number 0, to run this program again please enter the number 1: ");
scanf("%d", &flag);
}
}
double FindPopulation(char s)
{
double pop;
switch (s)
{
case 'e': pop = 1.34;
break;
case 'v': pop = 0.63;
break;
case 'n': pop = 1.36;
break;
case 'm': pop = 6.90;
break;
case 'c': pop = 3.57;
break;
case 'r': pop = 1.06;
break;
default: pop = 0;
}
return pop;
}
Я новичок в C, никогда не делал пока циклов в C. В любом случае идея состоит в том, что есть 2 scanf, один из которых запрашивает ввод данных пользователем, чтобы вернуть правильную совокупность состояний, другой scanf будет флагом, который прерывает цикл while. Флаг scanf работает отлично. Если я введу 0, он выйдет из цикла и завершит программу. Если я наберу 1, он продолжит цикл. Однако первый scanf после первого цикла перестанет работать. Он не будет запрашивать ввод другого пользователя. Вместо этого он пропустит себя и напечатает вывод:
"Enter the state using the above symbols: You entered "
Для второго сканирования я могу нажать 0, чтобы выйти в любое время, даже после нескольких итераций.
Может кто-нибудь сказать мне, почему один scanf работает правильно, а другой выходит из строя?