<span style="font-family:Arial;font-size:32px;">#import <Foundation/Foundation.h>
//求最大公约数
int maxDivisor(int x, int y){
int i = 0;
if (x < y) {
for (int i = x; i > 0; i--) {
if (x % i ==0 && y % i ==0) {
break;
}
}
}else if (x > y){
for (int i = y; i > 0; i--) {
if (x % i ==0 && y % i ==0) {
break;
}
}
}
return i;
}
//求最小公倍数
int minMultiple(int x ,int y){
int i = 0;
if (x < y) {
for (int i = y; i >= y; i++) {
if (i % x ==0 && i % y==0) {
break;
}
}
}else if (x > y){
for (int i = x; i >= x; i++) {
if (i % x ==0 && i % y ==0) {
break;
}
}
}
return i;
}
//求和
int sumValue(int x,int y){
return x + y;
}
//求差
int poorValue(int x, int y){
return x - y;
}
typedef int (*FUN)(int,int);
//建立操作符和函数对应的一一关系
typedef struct symFunctionPair{
char sym; //存储函数对应的操作符
FUN function; //存储操作符对应的函数地址
}SymFunctionPair;
FUN getFunctionBySym(char sym,SymFunctionPair *p,int count){
//根据输入的内容查表匹配对应的函数
for (int i = 0; i < count; i++) {
if (sym == (p + i)->sym) {
return (p + i)->function;
}
}
return NULL;
}
void output(int x,int y,char sym,SymFunctionPair *pair,int count){
FUN function = getFunctionBySym(sym, pair, count);
int value = function(x,y);
printf("%d",value);
}
int main(int argc, const char * argv[])
{
int a = 0;
int b = 0;
char c = ' ';
printf("请输入两个数和操作符\n");
scanf(" %d %c %d",&a,&c,&b);
// getchar();
// scanf("%c",&c);
//创建匹配表
SymFunctionPair pair[4] = {
{'@',maxDivisor},
{'$',minMultiple},
{'-',poorValue},
{'+',sumValue}
};
output(a, b, c, pair, 4);
return 0;
}
</span>
//2.、动态函数调用实现下列操作,输入2个数以及操作符计算结果。@ 求最大公约数 $求最小公倍数 - 求差+ 求和 等等
最新推荐文章于 2023-04-08 16:13:24 发布