指向函数的指针(委托)应用-计算器实现

简易加减乘数计算器的实现

 1 //
 2 //  main.c
 3 //  指向函数的指针
 4 //
 5 //  Created by 丁小未 on 13-7-10.
 6 //  Copyright (c) 2013年 dingxiaowei. All rights reserved.
 7 //
 8 
 9 #include <stdio.h>
10 
11 int sum(int a,int b)
12 {
13     int c = a + b;
14     printf("%d + %d = %d",a,b,c);
15     return c;
16 }
17 
18 int minus(int a,int b)
19 {
20     int c = a - b;
21     printf("%d - %d = %d",a,b,c);
22     return c;
23 }
24 
25 int mul(int a,int b)
26 {
27     int c = a * b;
28     printf("%d * %d = %d",a,b,c);
29     return c;
30 }
31 
32 int div(int a,int b)
33 {
34     int c = a / b;
35     printf("%d / %d = %d",a,b,c);
36     return c;
37 }
38 //count函数是用来做a跟b之间的运算
39 //至于做什么运算取决于p
40 int count(int a,int b,int(*p)(int ,int))
41 {
42     return p(a,b);
43 }
44 
45 int main(int argc, const char * argv[])
46 {
47     //int result = count(5, 6,sum);
48     //printf("result:%d",result);
49     /*
50     //定义了一个指向函数的指针变量p
51     //被p指向的函数:返回值为int类型,结婚搜两个int类型的参数
52     int (*p)(int a,int b);
53     //让指针变量p指向sum函数
54     p = sum;
55     //利用指针变量p简介调用sum函数
56     //(*p)(5,6);
57     //这样也可以
58     p(5,6);
59      */
60     int a,b,c,fuhao;
61     char flag='y';
62     printf("******欢迎进入四则运算********\n");
63     do {
64        
65     printf("请输入功能(1.加法;2.减法;3.乘法;4.乘法),以及输入两个运算数[例如想计算1+2:就输入1 1 2]:");
66     scanf("%d %d %d",&fuhao,&a,&b);
67     switch (fuhao) {
68         case 1:
69             count(a, b, sum);
70             break;
71         case 2:
72             count(a, b, minus);
73             break;
74         case 3:
75             count(a, b, mul);
76             break;
77         case 4:
78             count(a, b, div);
79             break;
80         default:
81             printf("您输入的不正确,请重新选择功能!");
82             break;
83     }
84         printf("\n您想继续吗?(y/n)");
85         //flag = getchar();
86         scanf("%c",&flag);
87     } while ('y'==flag);
88     return 0;
89 }

 

posted @ 2013-07-10 18:44  蓬莱仙羽  阅读(485)  评论(0)    收藏  举报