欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言計(jì)算器的3種實(shí)現(xiàn)方法代碼

 更新時(shí)間:2024年07月01日 11:48:23   作者:星光終將不負(fù)趕路人  
這篇文章主要給大家介紹了關(guān)于C語言計(jì)算器的3種實(shí)現(xiàn)方法,文中通過代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一的參考借鑒價(jià)值,需要的朋友可以參考下

方法一

#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)詳解

    C++有限狀態(tài)機(jī)實(shí)現(xiàn)詳解

    這篇文章主要為大家詳細(xì)介紹了C++有限狀態(tài)機(jī)的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Java?C++?算法題解拓展leetcode670最大交換示例

    Java?C++?算法題解拓展leetcode670最大交換示例

    這篇文章主要介紹了Java?C++算法題解拓展leetcode670最大交換示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • 詳解C++中的vector容器及用迭代器訪問vector的方法

    詳解C++中的vector容器及用迭代器訪問vector的方法

    使用迭代器iterator可以更方便地解引用和訪問成員,當(dāng)然也包括vector中的元素,本文就來詳解C++中的vector容器及用迭代器訪問vector的方法,需要的朋友可以參考下
    2016-05-05
  • C++深入講解對(duì)象的銷毀之析構(gòu)函數(shù)

    C++深入講解對(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-04
  • C++超詳細(xì)分析講解內(nèi)聯(lián)函數(shù)

    C++超詳細(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
  • c++深入淺出講解堆排序和堆

    c++深入淺出講解堆排序和堆

    在c++里有很多排序方法,比如相對(duì)簡單的冒泡排序、選擇排序、插入排序,還有 STL里的sort函數(shù)  手寫快排  歸并排序等,還有就是堆排序,這次主要說堆排序和堆
    2022-03-03
  • 使用Objective-C獲取IPHONE手機(jī)IMSI序列號(hào)

    使用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
  • 基于C語言實(shí)現(xiàn)的迷宮游戲代碼

    基于C語言實(shí)現(xiàn)的迷宮游戲代碼

    這篇文章主要介紹了基于C語言實(shí)現(xiàn)的迷宮游戲代碼,對(duì)于學(xué)習(xí)游戲開發(fā)的朋友相信有一定的借鑒價(jià)值,需要的朋友可以參考下
    2014-08-08
  • 解析Linux下C++編譯和鏈接

    解析Linux下C++編譯和鏈接

    編譯&鏈接對(duì)C&C++程序員既熟悉又陌生,熟悉在于每份代碼都要經(jīng)歷編譯&鏈接過程,陌生在于大部分人并不會(huì)刻意關(guān)注編譯&鏈接的原理。本文通過開發(fā)過程中碰到的四個(gè)典型問題來探索64位linux下C++編譯&鏈接的那些事。
    2021-05-05
  • C++超詳細(xì)講解操作符的重載

    C++超詳細(xì)講解操作符的重載

    C++預(yù)定義中的運(yùn)算符的操作對(duì)象只局限于基本的內(nèi)置數(shù)據(jù)類型,但是對(duì)于我們自定義的類型(類)是沒有辦法操作的。但是大多時(shí)候我們需要對(duì)我們定義的類型進(jìn)行類似的運(yùn)算,這個(gè)時(shí)候就需要我們對(duì)這么運(yùn)算符進(jìn)行重新定義,賦予其新的功能,以滿足自身的需求
    2022-06-06

最新評(píng)論