C练习:函数指针数组练习

125 阅读1分钟

题目:有两个整数a、b,用户输入1,2,3,如果输入1,程序就给出a和b中较大者,输入2,程序给出a和b中较小者,输入3,程序输出a与b之和。

int getMax(int data1, int data2)
{
  return data1>data2 ? data1:data2;
}

int getMin(int data1, int data2)
{
 return data1<data2 ? data1:data2;
}

int getSum(int data1, int data2)
{
 return data1+data2;
}

int main()
{
  int a=10;
  int b=20;
  int ret;
  int i;
  
  int (*pfunc[3])(int , int)={getMin, getMax, getSum};
  puts("请输入1,2,3,1:选择较大者,2:选择较小者,3:选择a与b的和");
  scanf("%d", &i);
  ret = (*pfunc[i-1])(a, b);
  printf("ret=%d\n", ret);
  
  return 0;
}

注释:其中运用了一个条件运算符

表达式1 ? 表达式2 : 表达式3
//如果表达式1的值为真,则以表达式2 的值作为整个条件表达式的值,否则以表达式3的值作为整个条件表达式的值。