С программа вылетает при выполнении расчета - PullRequest
3 голосов
/ 15 мая 2019

У меня есть эта программа, в которой я рассчитываю премию сотрудников на основе их зарплаты. Программа завершается, когда n === 999. Но моя проблема в том, что когда я вычисляю бонус, в любом случае печатается «Отладка 1» или «Отладка 2». и программа вылетает без ошибок.

Это моя первая программа на C. Я знаком с Java и не могу понять, что я делаю здесь неправильно. Я использую Code :: blocks для программирования на C.

Может ли кто-нибудь любезно указать на ошибку?

#include <stdio.h>

int main(void)
{
    int n;
    float basic;
    float bonus;

    for(;;)
    {
        printf("Enter the Emp No = ");
        scanf("%d",&n);

        if(n==999)
        {
            break;
        }
        else
        {
            printf("Enter Employee Salary\n");
            scanf("%f",&basic);
            printf("Basic Salary is %f",basic);

            if(basic < 100000)
            {
                printf("Debug 1");
                bonus = 0.75 * basic;
            }
            else
            {
                printf("Debug 2");
                bonus = 0.5 * basic;
            }
            printf("Employee %s Bonus is %.2f",n,bonus);
        }

        basic = 0.0f;
        bonus = 0.0f;
    }

    return 0;
}

Заранее спасибо.

1 Ответ

4 голосов
/ 15 мая 2019

Ваш последний оператор printf печатает n как %s (строка).n является целым числом и не должно быть напечатано в виде строки.

printf("Employee %s Bonus is %.2f",n,bonus);

должно быть:

printf("Employee %d Bonus is %.2f",n,bonus);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...