小型计算器
2017-11-20 11:22
92 查看
思想:
利用转移表实现计算器功能,实现之前先来补充一下转移表知识
转移表(函数指针数组)
将函数的地址存到一个数组中,那这个数组就叫函数指针数组,那函数指针的数组 如何定义呢?
int (* parr1[10]])();
int* parr210; int (* )() parr3[10];
答案是:parr1 parr1先和[]结合,说明parr1是数组,数组的内容是什么呢? 是int (*)()类型的函数指针。
代码
功能测试
开始
计算
利用转移表实现计算器功能,实现之前先来补充一下转移表知识
转移表(函数指针数组)
将函数的地址存到一个数组中,那这个数组就叫函数指针数组,那函数指针的数组 如何定义呢?
int (* parr1[10]])();
int* parr210; int (* )() parr3[10];
答案是:parr1 parr1先和[]结合,说明parr1是数组,数组的内容是什么呢? 是int (*)()类型的函数指针。
代码
#include<stdio.h> void menu() { printf("*************************\n"); printf("* 1.Add 2.Sub *\n"); printf("* 3.Mul 4.Div *\n"); printf("* 0.quit *\n"); printf("*************************\n"); } int my_add(int x,int y) { return x+y; } int my_sub(int x,int y) { return x-y; } int my_mul(int x,int y) { return x*y; } int my_div(int x,int y) { return x/y; } int main() { int input = 1; int (*arr[5])(int x,int y)={' ',my_add,my_sub,my_mul,my_div}; int res=0; int x,y; while(input) { menu(); printf("\nPlease select:"); scanf("%d",&input); if(input >0 && input <5){ printf("\nPlease enter two number:"); scanf("%d %d",&x,&y); res=(*arr[input])(x,y); }else if(input==0){ printf("Start quit!\n"); break; }else{ printf("enter erro!\n\n\n\n"); continue; } printf("res:%d\n\n\n\n",res); } return 0; }
功能测试
开始
计算