--- In [email protected], "bo" <[EMAIL PROTECTED]> wrote:
>
> I am still reading up on switches. However your help was greatly
> appreciated. I went back and looked at my semicolons and brace
> placement. Now my program will run but it doesn't do the math. My
> output is
> "Your tax is"
> "Your total is"
>
> Did I do something wrong with my printf statements? or should I have
> used a constant instead of a float?
>
> here is the revised code:
> :
> if (iResponse ==1){
> printf ("\nYour tax is", "fTax1 * fSales");
> printf ("\nYour total is", "fTotal1");
> }
> :
Good effort, but you need to look up printf and format strings. For
example, to output the value of int i you might do:
printf("value is %d\n", i);
where the %d, a 'conversion specification', tells the compiler that
there should be an integer argument (i in this case) whose value will
be converted to a string of decimal digits to replace the %d in the
output text.
(If you look at the scanf function, it also uses a format string,
although the argument corresponding to the %d has to be the address of
an integer where the value will be stored - & is the 'address of'
operator.)
To output your float values you can use the %f conversion specifier eg.
printf("value is %f\n", x * y);
where x and y are floats. What you have done:
printf("tax is ", "x * y");
is give printf a format string with no conversion specifiers in it, so
the format string is just output as-is. The string argument "x * y" is
'lost', because it doesn't have a corresponding conversion specifier
in the format string. (This could have caused the program to crash -
you were lucky.)
The x and y inside the "" have no relationship with variables x and y
- they are just letters as far as the compiler is concerned.
HTH
John