源代码:

  1. #include <stdio.h>  
  2.   2 #include <ctype.h>  
  3.   3 char get_first(void);  
  4.   4 char get_choice(void);  
  5.   5 float get_float(void);  
  6.   6 int main(void)  
  7.   7 {  
  8.   8         int choise;  
  9.   9         float num1;  
  10.  10         float num2;  
  11.  11   
  12.  12         while((choise = get_choice()) != 'q')  
  13.  13         {  
  14.  14                 switch(choise)  
  15.  15                 {  
  16.  16                         case 'a' : printf("a\n");  
  17.  17                                  printf("Enter first number:");  
  18.  18                                  num1 = get_float();  
  19.  19                                  printf("Enter second number:");  
  20.  20                                  num2 = get_float();  
  21.  21                                  printf("%.1f + %.1f = %.1f\n",num1,num2,num1 + num2);  
  22.  22                                  break;  
  23.  23                         case 's' : printf("b\n");  
  24.  24                                  printf("Enter first number:");  
  25.  25                                  num1 = get_float();  
  26.  26                                  printf("Enter second number:");  
  27.  27                                  num2 = get_float();  
  28.  28                                  printf("%.1f - %.1f = %.1f\n",num1,num2,num1 - num2);  
  29.  29                                  break;  
  30.  30                         case 'm' : printf("m\n");  
  31.  31                                  printf("Enter first number:");  
  32.  32                                  num1 = get_float();  
  33.  33                                  printf("Enter second number:");  
  34.  34                                  num2 = get_float();  
  35.  35                                  printf("%.1f * %.1f = %.1f\n",num1,num2,num1 * num2);  
  36.  36                                  break;  
  37.  37                         case 'd' : printf("d\n");  
  38.  38                                  printf("Enter first number:");  
  39.  39                                  num1 = get_float();  
  40.  40                                  printf("Enter second number:");  
  41.  41                                  num2 = get_float();  
  42.  42                                  printf("%.1f / %.1f = %.1f\n",num1,num2,num1 / num2);  
  43.  43                                  break;  
  44.  44                         default : printf("Program error!\n");  
  45.  45                                 break;  
  46.  46                 }  
  47.  47         }  
  48.  48         printf("Bye!\n");  
  49.  49         return 0;  
  50.  50 }  
  51. 51   
  52.  52 char get_choice(void)  
  53.  53 {  
  54.  54         int ch;  
  55.  55   
  56.  56         printf("Enter the operation of your choice:\n");  
  57.  57         printf("a.add           s.subtract\n");  
  58.  58         printf("m.multiply      d.divide\n");  
  59.  59         printf("q.quit\n");  
  60.  60   
  61.  61         ch = get_first();  
  62.  62         while((ch != 'a') && (ch != 's') && (ch != 'm') && (ch != 'd') && (ch != 'q') )  
  63.  63         {  
  64.  64                 printf("Please respond with a,s,m,d,q.\n");  
  65.  65                 ch = get_first();  
  66.  66         }  
  67.  67         return ch;  
  68.  68   
  69.  69 }  
  70.  70   
  71.  71 /*char get_first(void)  
  72.  72 {  
  73.  73         int ch;  
  74.  74   
  75.  75         ch = getchar();  
  76.  76         while(getchar() != '\n')  
  77.  77                 continue;  
  78.  78         return ch;  
  79.  79 }*/ 
  80.  80   
  81.  81   
  82.  82   
  83.  83 char get_first(void)  
  84.  84 {  
  85.  85         int ch;  
  86.  86   
  87.  87         ch = getchar();  
  88.  88         while(isspace(ch))  
  89.  89                 ch = getchar();  
  90.  90         while(getchar() != '\n')  
  91.  91                 continue;  
  92.  92         return ch;  
  93.  93 }  
  94.  94   
  95.  95   
  96.  96 float get_float(void)  
  97.  97 {  
  98.  98         float input;  
  99.  99         char ch;  
  100. 100   
  101. 101         while(scanf("%f",&input) != 1)  
  102. 102         {  
  103. 103                 while((ch = getchar()) != '\n')  
  104. 104                         putchar(ch);  
  105. 105                 printf(" is not an number.\n");  
  106. 106                 printf("Please enter a number, such as 2.5, -1.78E8, or 3:");  
  107. 107         }  
  108. 108         return input;  
  109. 109 }  
  110. 110  

运行效果:

 :!gcc test8.c -o test8
:! ./test8
Enter the operation of your choice:
a.add           s.subtract
m.multiply      d.divide
q.quit
s
b
Enter first number:3
Enter second number:5
3.0 - 5.0 = -2.0
Enter the operation of your choice:
a.add           s.subtract
m.multiply      d.divide
q.quit
m
m
Enter first number:4567
Enter second number:789
4567.0 * 789.0 = 3603363.0
Enter the operation of your choice:
a.add           s.subtract
m.multiply      d.divide
q.quit
q
Bye!