#include <stdio.h> #include <time.h> //加法 int add(int a,int b) { return a+b; } //减法 int subtract(int a,int b) { return a-b; } //乘法 int multi(int a,int b) { return a*b; } //除法 int divide(int a,int b) { return a/b; } int claculate(int a,int b,char oper) { //这里使用switch语句 switch (oper) { case '+': return add(a,b); case '-': return subtract(a,b); case '*': return multi(a,b); case '/': return divide(a,b); default: return -1; break; } } void main() { int a = 250; int b = 5; //统计程序运行时间 clock_t start, finish; start = clock(); printf("%d\n",claculate(a,b,'+')); printf("%d\n",claculate(a,b,'-')); printf("%d\n",claculate(a,b,'*')); printf("%d\n",claculate(a,b,'/')); finish = clock(); printf( "%f seconds\n", (double)(finish - start) / CLOCKS_PER_SEC ); }再看一个使用函数指针数组的程序
#include <stdio.h> #include <time.h> //加法 int add(int a,int b) { return a+b; } //减法 int subtract(int a,int b) { return a-b; } //乘法 int multi(int a,int b) { return a*b; } //除法 int divide(int a,int b) { return a/b; } int claculate(int a,int b,int oper) { //其实这里应该使用hashMap,将字符'+'映射到add函数。 //直接使用数字是为了简便 //声明指向函数指针的数组 int (*pfunc[])(int a,int b) = {add,subtract,multi,divide}; return pfunc[oper](a,b); } void main() { int a = 250; int b = 5; //统计程序运行时间 clock_t start, finish; start = clock(); printf("%d\n",claculate(a,b,0)); printf("%d\n",claculate(a,b,1)); printf("%d\n",claculate(a,b,2)); printf("%d\n",claculate(a,b,3)); finish = clock(); printf( "%f seconds\n", (double)(finish - start) / CLOCKS_PER_SEC ); }
原文地址:http://blog.csdn.net/wanghao109/article/details/44830579