浮点数计算器
Float Division Calculator
嘿,我刚开始学习如何使用 C 编程,我在使用计算器的除法部分时遇到了问题。我需要让它浮动并保留 2 位小数。我想我需要使用 %f 而不是 %d 但是当我更改变量时它会中断。粉丝是浮动答案。
这是完整的代码。划分为案例4.
#include <stdio.h>
#include <math.h>
int menu(void);
int main(void){
int selection, num1, num2, ans;
float fans;
selection = menu();
while (selection !=8) {
switch (selection) {
case 1: printf("Enter 1st number: ");
scanf("%d", &num1);
printf("Enter 2nd number: ");
scanf("%d", &num2);
ans = num1 + num2;
printf("%d + %d = %d\n", num1, num2, ans);
break;
case 2: printf("Enter 1st number: ");
scanf("%d", &num1);
printf("Enter 2nd number: ");
scanf("%d", &num2);
ans = num1 - num2;
printf("%d - %d = %d\n", num1, num2, ans);
break;
case 3: printf("Enter 1st number: ");
scanf("%d", &num1);
printf("Enter 2nd number: ");
scanf("%d", &num2);
ans = num1 * num2;
printf("%d * %d = %d\n", num1, num2, ans);
break;
case 4: printf("Enter 1st number: ");
scanf("%d", &num1);
printf("Enter 2nd number: ");
scanf("%d", &num2);
if(num2 != 0) {
fans=(float)num1/num2;
printf("%d / %d = %d\n", num1, num2, ans);
}
else {
printf("Error. Cannot divide by 0!\n");
}
break;
case 5: printf("Enter number: ");
scanf("%d", &num1);
ans=abs(num1);
printf("|%d| = %d\n", num1, ans);
break;
case 6: printf("Enter number: ");
scanf("%d", &num1);
if(num1<0) {
printf("Error. Cannot be a negative number.\n");
}
else {
fans=sqrt(num1);
printf("Sqrt(%d)=%d\n", num1, ans);
}
break;
case 7: printf("Enter base number: ");
scanf("%d", &num1);
printf("Enter exponent: ");
scanf("%d", &num2);
if((num1==0)&&(num2<=0)){
printf("Error. Power cannot be represented.\n");
}
else {
fans=pow(num1,num2);
printf("%d^%d=%d\n", num1, num2, ans);
}
break;
default:printf("%d is not a valid selection\n", selection);
}
selection=menu();
}
printf("Bye!\n");
}
int menu(void) {
int choice;
printf("1 Add\n");
printf("2 Subtract\n");
printf("3 Multiply\n");
printf("4 Divide\n");
printf("5 Absolute Value\n");
printf("6 Square Root\n");
printf("7 Powers\n");
printf("8 Quit\n");
scanf("%d", &choice);
return choice;
}
你很亲近;您打算使用 fans
因为您知道这是一个浮动答案,并且您在上一行进行了计算,但输入错误或忘记使用它。
你是对的 %f
:
printf("%d / %d = %f\n", num1, num2, fans);
注意:%.2f
也适用于 2 位精度; %f
有效,但打印小数点后 6 位。请参阅 printf()
的 POSIX 规范:
f
— double
— 如果没有给出精度,则以默认精度 6 打印浮点数;小写。
顺便说一下,漂亮的计算器程序:)
嘿,我刚开始学习如何使用 C 编程,我在使用计算器的除法部分时遇到了问题。我需要让它浮动并保留 2 位小数。我想我需要使用 %f 而不是 %d 但是当我更改变量时它会中断。粉丝是浮动答案。
这是完整的代码。划分为案例4.
#include <stdio.h>
#include <math.h>
int menu(void);
int main(void){
int selection, num1, num2, ans;
float fans;
selection = menu();
while (selection !=8) {
switch (selection) {
case 1: printf("Enter 1st number: ");
scanf("%d", &num1);
printf("Enter 2nd number: ");
scanf("%d", &num2);
ans = num1 + num2;
printf("%d + %d = %d\n", num1, num2, ans);
break;
case 2: printf("Enter 1st number: ");
scanf("%d", &num1);
printf("Enter 2nd number: ");
scanf("%d", &num2);
ans = num1 - num2;
printf("%d - %d = %d\n", num1, num2, ans);
break;
case 3: printf("Enter 1st number: ");
scanf("%d", &num1);
printf("Enter 2nd number: ");
scanf("%d", &num2);
ans = num1 * num2;
printf("%d * %d = %d\n", num1, num2, ans);
break;
case 4: printf("Enter 1st number: ");
scanf("%d", &num1);
printf("Enter 2nd number: ");
scanf("%d", &num2);
if(num2 != 0) {
fans=(float)num1/num2;
printf("%d / %d = %d\n", num1, num2, ans);
}
else {
printf("Error. Cannot divide by 0!\n");
}
break;
case 5: printf("Enter number: ");
scanf("%d", &num1);
ans=abs(num1);
printf("|%d| = %d\n", num1, ans);
break;
case 6: printf("Enter number: ");
scanf("%d", &num1);
if(num1<0) {
printf("Error. Cannot be a negative number.\n");
}
else {
fans=sqrt(num1);
printf("Sqrt(%d)=%d\n", num1, ans);
}
break;
case 7: printf("Enter base number: ");
scanf("%d", &num1);
printf("Enter exponent: ");
scanf("%d", &num2);
if((num1==0)&&(num2<=0)){
printf("Error. Power cannot be represented.\n");
}
else {
fans=pow(num1,num2);
printf("%d^%d=%d\n", num1, num2, ans);
}
break;
default:printf("%d is not a valid selection\n", selection);
}
selection=menu();
}
printf("Bye!\n");
}
int menu(void) {
int choice;
printf("1 Add\n");
printf("2 Subtract\n");
printf("3 Multiply\n");
printf("4 Divide\n");
printf("5 Absolute Value\n");
printf("6 Square Root\n");
printf("7 Powers\n");
printf("8 Quit\n");
scanf("%d", &choice);
return choice;
}
你很亲近;您打算使用 fans
因为您知道这是一个浮动答案,并且您在上一行进行了计算,但输入错误或忘记使用它。
你是对的 %f
:
printf("%d / %d = %f\n", num1, num2, fans);
注意:%.2f
也适用于 2 位精度; %f
有效,但打印小数点后 6 位。请参阅 printf()
的 POSIX 规范:
f
— double
— 如果没有给出精度,则以默认精度 6 打印浮点数;小写。
顺便说一下,漂亮的计算器程序:)