--- 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

Reply via email to