C语言 无法计算损益,程序停止,无输出

szqfcxe2  于 2023-04-11  发布在  其他
关注(0)|答案(2)|浏览(97)

问题:
如果通过键盘输入一个商品的成本价和销售价,编写一个程序来判断销售者是盈利还是亏损,以及盈利多少或亏损多少。
下面是我的代码:

#include <stdio.h>

int main() {
    int x, y, z, b, n;
    char k = '%';
    char r = '$';
    printf("Enter cost of item:-");
    scanf("%d", &x);
    printf("Enter selling price of item:-");
    scanf("%d", &y);
    if (x < y) {
        n = y - x;
        z = 100 / x;
        b = n / z;
        printf("You made %d%c profit \n", b, k);
        printf("or\n");
        printf("%d %c profits\n", n, r);
    }
    if (x > y) {
        n = y - x;
        z = 100 / x;
        b = n / z;
        printf("You made %d%c loss \n", b, k);
        printf("or\n");
        printf("%d %c loss\n", n, r);
    }
    return 0;
}

嘿,我是新的C编程只知道基本的。今天我学习if/else,我试图解决这个问题。但我的代码没有给出任何错误和警告。它需要输入,并在其结束后,我如果不工作。请帮助:(

6fe3ivhb

6fe3ivhb1#

这里有一个问题:

z = 100 / x;
    b = n / z;

如果价格x大于100,则由于整数除法语义,z将具有值0,并且由于除法溢出,n / z将导致未定义的行为,这可能导致程序停止。
以下是我的建议:

  • 避免被零除
  • 使用浮点运算以避免过度舍入。
  • 使用明确的名称,使您的程序更容易阅读和理解。
  • 测试scanf()的返回值以检测无效或丢失的输入。

以下是修改后的版本:

#include <stdio.h>

int main(void) {
    int cost, sale;

    printf("Enter cost of item: ");
    if (scanf("%d", &cost) != 1) {
        printf("input error!\n");
        return 1;
    }
    printf("Enter selling price of item: ");
    if (scanf("%d", &sale) != 1) {
        printf("input error!\n");
        return 1;
    }
    if (cost == 0) {
        printf("no cost base, total profit of $%d\n", sale);
    } else
    if (cost == sale) {
        printf("it's a wash: no profit, no loss\n");
    } else
    if (cost < sale) {
        int profit = sale - cost;
        int margin = profit * 100 / cost;
        printf("You made a %d%% profit of $%d\n", margin, profit);
    } else {
        int loss = cost - sale;
        int margin = loss * 100 / cost;
        printf("You made a %d%% loss of $%d\n", margin, loss);
    }
    return 0;
}
pxq42qpu

pxq42qpu2#

这是给你的完整答案。你在计算中有错误

#include <stdio.h>

int main() {
    float x, y, z, b, n;
    char k = '%';
    char r = '$';
    printf("Enter cost of item: ");
    scanf("%f", &x);
    printf("Enter selling price of item: ");
    scanf("%f", &y);
    if (x <= y) {
        n = y - x;
        z = n/x*100;
      
        printf("You made %f %c profit \n", z, k);
        printf("or\n");
        printf("%f %c profits\n", n, r);
    }
    if (x > y) {
        n = x-y;
        z = n/x*100;
        printf("You made %f%c loss \n", z, k);
        printf("or\n");
        printf("%f %c loss\n", n, r);
    }
    return 0;
}

相关问题