您的位置:首页 > 编程语言 > C语言/C++

动态函数调用实现下列操作,输入2个数以及操作符计算结果。@最大公约数$最小公倍数+和 -差

2014-07-31 09:02 525 查看
int maxDivisor(int a, int b);
int maxDivisor(int a, int b){
int temp = 0,y = 0;
if (b > a) {
temp = a;
a = b;
b =temp;
}
y = a % b;
while (y != 0) {
a = b;
b = y;
y = a % b;
}
return b;
}
//求最小公倍数
int minMultiple(int a, int b);
int minMultiple(int a, int b){
int i = 0;
for (int i = a; i <= a * b; i++) {
if (i % a == 0 && i % b ==0) {
break;
}
}
return i;
}
//求差
int poorValue(int a, int b);
int poorValue(int a, int b){
return a - b;
}
//求和
int sumValue(int a, int b);
int sumValue(int a, int b){
return a + b;
}
//重命名
typedef int(*PC)(int, int) ;//重命名
typedef struct sign{
char st;
PC function;
} Sign;
PC findFunction(char n, Sign *p, int count){
for (int i = 0; i < count; i++) {
if (n == (p + i)->st) {
return (p + i)->function;
}
}
return NULL;
}
int resultFunction(int a,int b,char *n,Sign *p,int count){
PC function = findFunction(*n, p, count);
return function(a, b);
}
int main(int argc, const char * argv[])
{
//2.动态函数调用实现下列操作,输入2个数以及操作符计算结果。
// @ 求最大公约数       $求最小公倍数
// -  求差      + 求和   等等
Sign sig[4] = {
{'@',maxDivisor},
{'$',minMultiple},
{'-',poorValue},
{'+',sumValue}
};
int m = 0, n = 0;
char str[2] = {0};
printf("请输入你想要做的操作:如@$-+为:");
scanf("%c %d %d", str, &m, &n);
int c = resultFunction(m, n, str, sig, 5);
printf("%d", c);

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  指针 struct 编程 c语言
相关文章推荐