【C/C++】用回呼函數實現計算機__Jquery

來源:互聯網
上載者:User
一、問題概述

用C語言實現一個簡易計算機,可以用來實現加減乘除的功能

  名詞解釋:

函數指標:一個指標,用於指向一個函數

函數指標數組:是一個數組,裡面存放多個函數指標

回呼函數:一個函數,若參數中有函數指標,那麼這個函數便是回呼函數 二、問題分析

這個問題大可用switch,case語句實現

但是這裡我們用一種比較高大上的方法

 

利用函數指標數組

以及回呼函數

  思路:

(1)先把加減乘數各寫成一個函數

注意:類型與傳回值必須相同

(2)用函數指標數組,將四個運算函數存到該數組裡

通過調用該數組,根據函數地址來調用了該函數 三、代碼實現 (1)函數指標數組 代碼塊:

#include<stdio.h>//將運算的四個函數寫出來void Add(int x,int y){printf("%d\n",x+y);}void Sub(int x,int y){printf("%d\n",x-y);}void Mul(int x,int y){printf("%d\n",x*y);}void Div(int x,int y){printf("%d\n",x/y);}void calculate(int option){void (*pfun[5])(int ,int) = {0,Add,Sub,Mul,Div};//定義了一個函數指標數組pfun,指向了Add,Sub,Mul,Div函數int x = 0;int y = 0;printf("請輸入兩個運算元:>");//進入運算元的選擇scanf("%d%d",&x,&y);if((option==4)&&(y==0))//當選項是除法,並且第二個運算元為0的時候報錯{printf("參數有誤!\n");return ;//直接返回}pfun[option](x,y);//通過 函數指標數組 進行 函數的調用}void menu()//菜單函數{printf("1.add2.sub\n");printf("3.mul4.div\n");printf("0.exit\n");}int main(){int option = 0;while(1){menu();printf("請輸入:>");scanf("%d",&option);if(option>=1&&option<=4){calculate(option);}else if(option==0){break;}else{continue;}}return 0;}



  (2)回呼函數 代碼塊:

#include<stdio.h>void Add(int x,int y){printf("%d\n",x+y);}void Sub(int x,int y){printf("%d\n",x-y);}void Mul(int x,int y){printf("%d\n",x*y);}void Div(int x,int y){printf("%d\n",x/y);}void calculate(void (*pfun)(int,int))//由於參數中是一個函數指標,因此這是一個回呼函數{int x = 0;int y = 0;printf("請輸入兩個運算元:>");scanf("%d%d",&x,&y);if((pfun==Div)&&(y==0)){printf("參數有誤!\n");return ;}pfun(x,y);//通過函數指標來回調 指向的函數} void menu()//菜單函數{printf("1.add2.sub\n");printf("3.mul4.div\n");printf("0.exit\n");}int main(){void (*pfun[5])(int ,int) = {0,Add,Sub,Mul,Div};int option = 0;while(1){menu();printf("請輸入:>");scanf("%d",&option);if(option>=1&&option<=4){calculate(pfun[option]);}else if(option==0){break;}else{continue;}}return 0;}



 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.