0

プログラムは、割引 (顧客が教師の場合) と消費税を計算し、売上合計を見つけます。エラーが発生し続けます:

[警告] ポインタと整数の比較 [デフォルトで有効]

#include <stdio.h>
#include <math.h>

#define SALES_TAX .05
#define DISCOUNT_LOW .10
#define DISCOUNT_HIGH .12
#define DISCOUNT_LIMIT .100

int main(void)
{
    double purchase_total;
    double discount;
    double discounted_total;
    double sales_tax;
    double total;
    int teacher;
    FILE* output_file;

    /* request inputs */
    printf("Is the customer a teacher (y/n)?");
    scanf("%d", &teacher);
    printf("Enter total purchases.");
    scanf("%lf", &purchase_total);

    /* calculations for teacher */
    if (teacher == "y");
    {/*calculate discount (10% or 12%) and 5% sales tax */
        /* purchase total less than 100 */
        if (purchase_total < 100)
        {
            /* calculate 10% discount */
            discount = purchase_total * DISCOUNT_LOW;
            discounted_total = purchase_total - discount;
        }

        /*purchase total greater than 100 */
        else
        {   /* calculate 12% discount */
            discount = purchase_total * DISCOUNT_HIGH;
            discounted_total = purchase_total - discount;
        }

        printf("Total purchases    $%f\n", purchase_total);
        printf("Teacher's discount (12%%)    %fs\n", discount);
        printf("Discounted total     %f\n", discounted_total);
        printf("Sales tax (5%%)    %f\n", sales_tax);
        printf("Total     $%f\n", total);
    }


    /* calculation for nonteacher */
    if (teacher =="n");
    {
        /* calculate only 5% sales tax */
        sales_tax = purchase_total *  sales_tax;
        total = purchase_total + sales_tax;

        printf("Total purchases    $%f\n", purchase_total);
        printf("Sales tax (5%%)    %f\n", sales_tax);
        printf("Total     $%f\n", total);
    }

    return (0);
}
4

3 に答える 3

4

;その後if、問題を引き起こしています

if (teacher == "y");
{

する必要があります

if (teacher == 'y')
{

また

if (teacher =="n");

する必要があります

if (teacher == 'n')

もう一つ:

scanf("%d", &teacher);

する必要があります

scanf("%c", &teacher);

== "n"の変更に注意してください== 'n'

于 2013-06-26T20:00:38.967 に答える
0

警告の原因は次のとおりです。

if (teacher == "y")

teacherint-は"y"文字列です。それらを比較することはできません。

コードには他にも多くの問題があります。たとえばteacher、最初に取得するときに文字を要求しているのに、int.

于 2013-06-26T20:04:29.653 に答える
0

変化する

if (teacher == "y");

if (teacher == 'y');

変更する

if (teacher == "n");

if (teacher == 'n');

"n" または "y" は文字配列 (C の文字列) になります。そのため、ポインターのように扱われるため、エラーが発生します。

また、テスト プログラムを実行したとき、'y' および 'n' ロジックとの比較は機能しましたが、全面的に 0 を取得しています。いくつかのロジックを修正する必要があります。それはあなたにお任せします。

于 2013-06-26T20:04:47.833 に答える