This is, what seemed like, a pretty simple homework assignment. I've tested it using all the menu options including an invalid response, and everything works perfectly, but it seems to exit the loop even if I say Y/y at the end one run-through.

Any help would be appreciated.

Code:
#include <stdio.h>

int get_problem();
void get2_pt(double *x_onep, double *y_onep, double *x_twop, double *y_twop);
void get_pt_slope(double *x_onep, double *y_onep, double *slopep);
void slope_intcpt_from2_pt(double x_one, double y_one, double x_two, double y_two, double *slopep, double *y_intp);
double intcpt_from_pt_slope(double x_one, double y_one, double slope);
void display2_pt(double x_one, double y_one, double x_two, double y_two);
void display_pt_slope(double x_one, double y_one, double slope);
void display_slope_intcpt(double slope, double y_int);

int
	main(void)
{
	double x_one,
		x_two,
		y_one,
		y_two,
		slope,
		y_int;
	int problem;
	char cont;

	cont = 'Y';
	while (cont == 'Y' || cont == 'y') {
		problem = get_problem();
		if (problem == 1) {
			get2_pt(&x_one, &y_one, &x_two, &y_two);
			slope_intcpt_from2_pt(x_one, y_one, x_two, y_two, &slope, &y_int);
			display2_pt(x_one, y_one, x_two, y_two);
			display_slope_intcpt(slope, y_int);
			printf("\n\nDo another conversion? (Y/N): ");
			scanf("%c", &cont);
		}
		else if (problem == 2) {
			get_pt_slope(&x_one, &y_one, &slope);
			y_int = intcpt_from_pt_slope(x_one, y_one, slope);
			display_pt_slope(x_one, y_one, slope);
			display_slope_intcpt(slope, y_int);
			printf("\n\nDo another conversion? (Y/N): ");
			scanf("%c", &cont);
		}
		else if (problem == 3) {
			printf("Exiting Program");
			cont = 'N';
		}
		else {
			printf("Invalid response.  Please try again.\n\n");
			cont = 'Y';
		}
	}

	return(0);
}

int
	get_problem()
{
	int problem;

	printf("Select the form that you would like to convert to slope intercept form:");
	printf("\n1) Two-point form (you know two points on the line)");
	printf("\n2) Point-slope form (you know the line's slope and one point)");
	printf("\n3) Exit");
	printf("\n\n>> ");
	scanf("%d", &problem);
	return(problem);
}

void
	get2_pt(double *x_onep, double *y_onep, double *x_twop, double *y_twop)
{
	double one,
		two;
	printf("\nEnter the coordinates of the first point separated by one space: ");
	scanf("%lf %lf", &one, &two);
	*x_onep = one;
	*y_onep = two;
	printf("Enter the coordinates of the second point: ");
	scanf("%lf %lf", &one, &two);
	*x_twop = one;
	*y_twop = two;
}

void
	get_pt_slope(double *x_onep, double *y_onep, double *slopep)
{
	double x,
		y,
		slope;
	printf("\nEnter the coordinates of the known point separated by one space: ");
	scanf("%lf %lf", &x, &y);
	printf("Enter the slope of the line: ");
	scanf("%lf", &slope);
	*x_onep = x;
	*y_onep = y;
	*slopep = slope;
}

void
	slope_intcpt_from2_pt(double x_one, double y_one, double x_two, double y_two, double *slopep, double *y_intp)
{
	*slopep = ((y_two - y_one) / (x_two - x_one));
	*y_intp = (y_one - (*slopep * x_one));
}

double
	intcpt_from_pt_slope(double x_one, double y_one, double slope)
{
	double y_int;

	y_int = y_one - (slope * x_one);
	return(y_int);
}

void
	display2_pt(double x_one, double y_one, double x_two, double y_two)
{
	printf("\nTwo-point form");
	printf("\n   (%.2f - %.2f)", y_two, y_one);
	printf("\nm = -----------");
	printf("\n   (%.2f - %.2f)", x_two, x_one);
}

void
	display_pt_slope(double x_one, double y_one, double slope)
{
	printf("\nPoint-slope form");
	printf("\n  y - %.2f = %.2f(x - %.2f)", y_one, slope, x_one);
}

void
	display_slope_intcpt(double slope, double y_int)
{
	printf("\n\nSlope-intercept form");
	printf("\n  y = %.2fx - %.2f", slope, y_int);
}