(1) Some printf / scanf hints based on stuff that came up during office hours: float tempSuppliedByUser; printf("Enter a temperature in farenheit:"); scanf("%8.2lf\n", &tempSuppliedByUser); There are three things wrong with this code. What are they? (i) float vs. double.. float should use %f, double should use %lf (ii) no numbers in the %lf for scanf... numbers should be used only in printf. (Some books will tell you otherwise, but in practice, leaving out the numbers almost always works better than putting them in.) (iii) no \n in scanf, only in printf. (Same note as above.. this doesn't necessarily agree with the textbook, or what some other instructors may teach, but it does accord with my long experience.) For scanf, only use: "%d" "%f" "%lf" "%c" Never anything fancier. Save the fancy stuff for the printf format strings... Speaking of fancy stuff... What does this do? double priceOfPizzaInDollars; ... printf("Price in Dollars: $%6.2lf\n", priceOfPizzaInDollars); %6.2lf means the following: the lf part means "the variable or expression printed should be of type 'double' " the 6 part means "six characters altogether, including the part before the decimal pt, the decimal pt itself, and the part after the decimal point" the .2 means "2 digits after the decimal point" printf command result (note the \n's don't print) printf("$%6.2lf\n",3.99); $ 3.99\n printf("$%5.2lf\n",3.99); $ 3.99\n printf("$%6.3lf\n",3.99); $ 3.99 \n printf("$%3.2lf\n",13.99); $13.99\n That last one may be unexpected... the field is only supposed to be 3 characters wide. But, because the value being printed won't fit, the input is just printed anyway, and the field is forced to be four characters wide.