#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;
}
}