- 论坛徽章:
- 0
|
/* author: xiaowh00 */
/* date: 2012-7-27 */
#include <stdio.h>
void menu(void); // print munu
void get_input(char); // get operation and operand
float get_float(void); // get float number
void operate(float,float,char); // operate (+-*/)
void flush(void); // flush keyboard
int main(void)
{
char ch; // choice
menu();
while(scanf("%c",&ch)==1 && ch!='q')
{
if(ch=='a' || ch=='s' || ch=='m' || ch=='d')
{
get_input(ch);
menu();
flush();
}
else
{
printf("wrong operation\n");
menu();
flush();
}
}
printf("Bye.\n");
return 0;
}
void menu(void)
{
printf("Enter the operation of your choice:\n");
printf("a. add s. subtract\n");
printf("m. multiply d. divide\n");
printf("q. quit\n");
}
void flush(void)
{
int ch;
while((ch=getchar())!=EOF && ch!='\n')
;
}
void get_input(char op)
{
float op1,op2;
printf("Enter first number: ");
op1=get_float();
printf("Enter second number: ");
op2=get_float();
while((op=='d' || op=='s') && op2==0)
{
printf("Enter a number other than 0: ");
op2=get_float();
}
operate(op1,op2,op);
}
float get_float(void)
{
float f;
int ch;
while(scanf("%f",&f)!=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 f;
}
void operate(float op1,float op2,char op)
{
switch(op)
{
case 'a' : printf("%.2f + %.2f = %.2f\n",op1,op2,op1+op2);
break;
case 's' : printf("%.2f - %.2f = %.2f\n",op1,op2,op1-op2);
break;
case 'm' : printf("%.2f * %.2f = %.2f\n",op1,op2,op1*op2);
break;
case 'd' : printf("%.2f / %.2f = %.2f\n",op1,op2,op1/op2);
break;
default : printf("there must be some error!\n");
break;
}
} |
|