【问题标题】:Float Division Calculator浮点除法计算器
【发布时间】:2016-09-22 00:48:10
【问题描述】:

嘿,我刚开始学习如何使用 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=(float)num1/num2; printf("%d / %d = %d\n", num1, num2, ans); --> fans=(float)num1/num2; printf("%d / %d = %.2f\n", num1, num2, fans); ?
  • 只接受整数输入的计算器非常没用。如果您想将 2.5 除以 5,会发生什么?

标签: c variables calculator division


【解决方案1】:

你很亲密;您打算使用fans,因为您知道这是一个浮动答案,并且您在前一行进行了计算,但是错字或忘记使用它。

你是对的使用%f

printf("%d / %d = %f\n", num1, num2, fans);

注意:%.2f 也适用于 2 位精度; %f 有效,但打印 6 个小数位。请参阅printf() 的 POSIX 规范:

fdouble — 如果没有给出精度,则打印默认精度为 6 的浮点数;小写。

顺便说一句,不错的计算器程序:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    • 2011-01-23
    相关资源
    最近更新 更多