首页 > 解决方案 > C中的循环计算器

问题描述

我只是在做一个简单的计算器,想知道当输入无效的运算符/浮点数时,如何让我的计算器循环回到开头;要求用户再次输入所有内容。基本上重新启动它。

#include <stdlib.h>
#include <stdio.h>
#include <math.h>

int main()
{
    double num1;
    double num2;
    char op;

    printf("Input a number: ");
    scanf("%lf", &num1);
    printf("Enter operator (+,-,*,/,^): ");
    scanf(" %c", &op);
    printf("Enter the second number: ");
    scanf(" %lf", &num2);

    if (op == '+')
    {
        printf("%f", num1 + num2);
    } 
    else if (op == '-')
    {
        printf("%f", num1 - num2);
    }
    else if (op == '/')
    {
        printf("%f", num1 / num2);
    }
     else if (op == '*')
    {
        printf("%f", num1 * num2);
    } 
    else if (op == '^')
    {
        printf("%f", pow(num1,num2));
    }
    else
    {
        printf("Invalid operator entered");
    }
    return 0;
}
                                

标签: c

解决方案


我会用另一种方法来避免\nscanf 问题

#define MAXNUMSTR 100

int calc(void)
{
    char line[MAXNUMSTR];
    double num1;
    double num2;
    double res;

    do
    {
        printf("\nInput first number: ");
        if(!fgets(line, MAXNUMSTR -1, stdin)) return 0;
    }while(sscanf(line, "%lf", &num1) != 1);
    do
    {
        printf("\nInput second number: ");
        if(!fgets(line, MAXNUMSTR -1, stdin)) return 0;
    }while(sscanf(line, "%lf", &num2) != 1);
    printf("\nEnter operator (+,-,*,/,^, x): ");
    if(!fgets(line, MAXNUMSTR -1, stdin)) return 0;

    switch(line[0])
    {
        case '+':
            res = num1 + num2;
            break;
        case '-':
            res = num1 - num2;
            break;
        case '*':
            res = num1 * num2;
            break;
        case '/':
            if(num2 == 0.0) 
            {
                printf("\nDivision by zero\n");
                return 1;
            }
            res = num1 / num2;
            break;
        case '^':
            res = pow(num1, num2);
            break;
        case 'x':
            return 0;
        default:
                printf("\nInvalid operation\n");
                return 1;

    }
    printf("\n%f %c %f = %f\n", num1, num2, res);
    return 1;
}

int main(void)
{
    while(calc());
    return 0;
}

推荐阅读