-1
ちょっと私はCプログラミングの使い方を学ぶのが初めてで、電卓の分割部分に問題があります。私は浮動小数点を2桁持っている必要があります。私は%dの代わりに%fを使う必要があると思いますが、変数を変更するとブレークします。ファンはフロートの答えです。浮動小数点除算の計算
ここにコード全体があります。部門はケース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 =(float)num1/num2;printf( "%d /%d =%d \ n"、num1、num2、ans); ' - >' fans =(float)num1/num2;printf( "%d /%d =%.2f \ n"、num1、num2、fans); '? – chux
整数入力のみを受け入れる電卓はかなり役に立たない。 2.5を5で割ったければどうなりますか? –