为什么我的程序打印0而不是预期值? (C)

时间:2020-09-01 20:20:20

标签: c

我正在尝试为我的课堂制作一个计算器程序(如您所知还没有完全完成),并且在“乘法和除法”部分遇到了问题。它们都打印出0而不是它们的预期值,但是加法和减法可以正常工作。有帮助吗?

int choice = 8;
double numberone;
double numbertwo;
    
while(choice > 7 || choice < 1){
    printf("(1) Addition \n(2) Subtraction \n(3) Multiplication \n(4) Division \n(5) Modulus (integers only) \n(6) Test if prime (integers only) \n(7) Exit \nPlease choose an operation: \n");
    scanf(" %i", &choice);
    
    if (choice != 5 || choice!= 6){
        printf("Enter the first number: ");
        scanf(" %d", &numberone);
        
        printf("Enter the second number: ");
        scanf(" %d", &numbertwo);
        
        if (choice == 1){
            double sum = numberone + numbertwo;
            printf("Sum: %d", sum);
        }
        else if (choice == 2){
            double dif = numberone - numbertwo;
            printf("Difference: %d", dif);
        }
        else if (choice == 3){
            double pro = numberone * numbertwo;
            printf("Product: %d", pro);
        }
        else if (choice == 4){
            double quo = numberone / numbertwo;
            printf("Quotient: %d", quo);
        }
    }
}
}

1 个答案:

答案 0 :(得分:1)

您在%d中使用printf,将结果转换为Integer。请改用%lf

// ...
        else if (choice == 3){
            double pro = numberone * numbertwo;
            printf("Product: %lf", pro);
        }
        else if (choice == 4){
            double quo = numberone / numbertwo;
            printf("Quotient: %lf", quo);
// ...

编辑: 这同样适用于您的scanf。使用%lf代替%i

// ...
       printf("Enter the first number: ");
       scanf(" %lf", &numberone);
        
       printf("Enter the second number: ");
       scanf(" %lf", &numbertwo);
// ...
相关问题