编辑代码

#include <stdio.h>

#include <ctype.h>

float getnum(void);
float getresult(char symbol, float num01, float num02);
char formula(char ch01, char right);

int main () {
    char right = '0';
    char ch, symbol;
    float num_01, num_02, result;
    printf("Enter the operation of your choice:\n");
    printf("a. add%10cs. subtract\n", '\0');
    printf("m. multiply%10cd. divide\n", '\0');
    printf("q. quit\n");
    while((ch = getchar())!= 'q')
    {
        right = formula(ch, right);
        if(ch == '\n')
            continue;
        if(right == '1')
        {
            right = '0';
            printf("输入有误,请重新输入:");
            continue;
        }
        symbol = formula(ch, right);
        printf("Enter first number:");
        num_01 = getnum();
        printf("Enter second number:");
        num_02 = getnum();
        result = getresult(symbol, num_01, num_02);
        printf("%.2f %c %.2f = %.2f\n", num_01, symbol, num_02, result);
        printf("Enter the operation of your choice:\n");
        printf("a. add%10cs. subtract\n", '\0');
        printf("m. multiply%10cd. divide\n", '\0');
        printf("q. quit\n");
    }
	return 0;
}

char formula(char ch01, char right)
{
    switch (ch01)
    {
        case 'a':return '+';break;
        case 's':return '-';break;
        case 'm':return '*';break;
        case 'd':return '/';break;
        default:return '1';
    }
}

float getnum(void)
{
    float num;
    char ch;
    while(scanf("%f", &num) != 1)
    {
        while((ch = getchar()) != '\n')
            putchar(ch);
        printf(" is not an number.\n");
        printf("Please enter a number, such as 2.5, -1.78E8, or 3:");
    }
    return num;
}

float getresult(char symbol, float num01, float num02)
{
    switch (symbol)
    {
        case '+':return (num01 + num02);break;
        case '-':return (num01 - num02);break;
        case '*':return (num01 * num02);break;
        case '/':return (num01 / num02);break;
    }
}