我正在尝试为我的课堂制作一个计算器程序(如您所知还没有完全完成),并且在“乘法和除法”部分遇到了问题。它们都打印出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);
}
}
}
}
答案 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);
// ...