C語言計(jì)算器的3種實(shí)現(xiàn)方法代碼
方法一
#include <stdio.h> int Add(int x, int y) { return x + y; } int Sub(int x, int y) { return x - y; } int Mul(int x, int y) { return x * y; } int Div(int x, int y) { return x / y; } void menu() { printf("***************************\n"); printf("*** 1. Add 2. Sub ***\n"); printf("*** 3. Mul 4. Div ***\n"); printf("*** 0. Exit ***\n"); printf("***************************\n"); } int main() { int input = 0; int x = 0; int y = 0; int ret = 0; do { menu(); printf("請(qǐng)選擇:>"); scanf("%d", &input); switch (input) { case 1: printf("請(qǐng)輸入:>"); scanf("%d %d", &x, &y); ret = Add(x, y); printf("%d\n", ret); break; case 2: printf("請(qǐng)輸入:>"); scanf("%d %d", &x, &y); ret = Sub(x, y); printf("%d\n", ret); break; case 3: printf("請(qǐng)輸入:>"); scanf("%d %d", &x, &y); ret = Mul(x, y); printf("%d\n", ret); break; case 4: printf("請(qǐng)輸入:>"); scanf("%d %d", &x, &y); ret = Div(x, y); printf("%d\n", ret); break; case 0: printf("退出計(jì)算器\n"); break; default: printf("輸入錯(cuò)誤,請(qǐng)重新輸入\n"); break; } } while (input); }
方法二
使?函數(shù)指針數(shù)組的實(shí)現(xiàn):
#include <stdio.h> int Add(int x, int y) { return x + y; } int Sub(int x, int y) { return x - y; } int Mul(int x, int y) { return x * y; } int Div(int x, int y) { return x / y; } void menu() { printf("***************************\n"); printf("*** 1. Add 2. Sub ***\n"); printf("*** 3. Mul 4. Div ***\n"); printf("*** 0. Exit ***\n"); printf("***************************\n"); } int main() { int (*pf[])(int, int) = { NULL,Add,Sub,Mul,Div }; int input = 0; int x = 0; int y = 0; int ret = 0; do { menu(); printf("請(qǐng)選擇:>"); scanf("%d", &input); if (input >= 1 && input <= 4) { printf("請(qǐng)輸入:>"); scanf("%d %d", &x, &y); ret = pf[input](x, y); printf("%d\n", ret); } else if (input == 0) { printf("退出計(jì)算器\n"); } else { printf("輸入錯(cuò)誤,請(qǐng)重新輸入\n"); } } while (input); }
回調(diào)函數(shù)是什么?
回調(diào)函數(shù)就是?個(gè)通過函數(shù)指針調(diào)?的函數(shù)。
如果你把函數(shù)的指針(地址)作為參數(shù)傳遞給另?個(gè)函數(shù),當(dāng)這個(gè)指針被?來調(diào)?其所指向的函數(shù)時(shí),被調(diào)?的函數(shù)就是回調(diào)函數(shù)?;卣{(diào)函數(shù)不是由該函數(shù)的實(shí)現(xiàn)?直接調(diào)?,?是在特定的事件或條件發(fā)?時(shí)由另外的??調(diào)?的,?于對(duì)該事件或條件進(jìn)?響應(yīng)。
中我們寫的計(jì)算機(jī)的實(shí)現(xiàn)的代碼中,紅?框中的代碼是重復(fù)出現(xiàn)的,其中雖然執(zhí)?計(jì)算的邏輯是區(qū)別的,但是輸?輸出操作是冗余的,有沒有辦法,簡化?些呢?因?yàn)榧t?框中的代碼,只有調(diào)?函數(shù)的邏輯是有差異的,我們可以把調(diào)?的函數(shù)的地址以參數(shù)的形式傳遞過去,使?函數(shù)指針接收,函數(shù)指針指向什么函數(shù)就調(diào)?什么函數(shù),這?其實(shí)使?的就是回調(diào)函數(shù)的功能。
方法三
#include <stdio.h> int Add(int x, int y) { return x + y; } int Sub(int x, int y) { return x - y; } int Mul(int x, int y) { return x * y; } int Div(int x, int y) { return x / y; } void menu() { printf("***************************\n"); printf("*** 1. Add 2. Sub ***\n"); printf("*** 3. Mul 4. Div ***\n"); printf("*** 0. Exit ***\n"); printf("***************************\n"); } void Cal(int(*pf_t)(int, int)) { int x = 0; int y = 0; int ret = 0; printf("請(qǐng)輸入:>"); scanf("%d %d", &x, &y); ret = pf_t(x, y); printf("%d\n", ret); } int main() { int input = 0; do { menu(); printf("請(qǐng)選擇:>"); scanf("%d", &input); switch (input) { case 1: Cal(Add); break; case 2: Cal(Sub); break; case 3: Cal(Mul); break; case 4: Cal(Div); break; case 0: printf("退出計(jì)算器\n"); break; default: printf("輸入錯(cuò)誤,請(qǐng)重新輸入\n"); break; } } while (input); }
總結(jié)
到此這篇關(guān)于C語言計(jì)算器的3種實(shí)現(xiàn)方法代碼的文章就介紹到這了,更多相關(guān)C語言計(jì)算器實(shí)現(xiàn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++有限狀態(tài)機(jī)實(shí)現(xiàn)詳解
這篇文章主要為大家詳細(xì)介紹了C++有限狀態(tài)機(jī)的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10Java?C++?算法題解拓展leetcode670最大交換示例
這篇文章主要介紹了Java?C++算法題解拓展leetcode670最大交換示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09詳解C++中的vector容器及用迭代器訪問vector的方法
使用迭代器iterator可以更方便地解引用和訪問成員,當(dāng)然也包括vector中的元素,本文就來詳解C++中的vector容器及用迭代器訪問vector的方法,需要的朋友可以參考下2016-05-05C++深入講解對(duì)象的銷毀之析構(gòu)函數(shù)
構(gòu)造函數(shù)在創(chuàng)建對(duì)象時(shí)被系統(tǒng)自動(dòng)調(diào)用,而析構(gòu)函數(shù)(Destructor)在對(duì)象被撤銷時(shí)被自動(dòng)調(diào)用,相比構(gòu)造函數(shù),析構(gòu)函數(shù)要簡單的多2022-04-04C++超詳細(xì)分析講解內(nèi)聯(lián)函數(shù)
為了消除函數(shù)調(diào)用的時(shí)空開銷,C++ 提供一種提高效率的方法,即在編譯時(shí)將函數(shù)調(diào)用處用函數(shù)體替換,類似于C語言中的宏展開。這種在函數(shù)調(diào)用處直接嵌入函數(shù)體的函數(shù)稱為內(nèi)聯(lián)函數(shù)(Inline Function),又稱內(nèi)嵌函數(shù)或者內(nèi)置函數(shù)2022-06-06使用Objective-C獲取IPHONE手機(jī)IMSI序列號(hào)
這篇文章主要介紹了使用Objective-C獲取IPHONE手機(jī)IMSI序列號(hào)的方法以及通過IMSI序列號(hào)獲取運(yùn)營商、手機(jī)號(hào)的方法,非常的實(shí)用,有需要的小伙伴可以參考下。2015-04-04