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

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

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

方法一

#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("請選擇:>");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			printf("請輸入:>");
			scanf("%d %d", &x, &y);
			ret = Add(x, y);
			printf("%d\n", ret);
			break;
		case 2:
			printf("請輸入:>");
			scanf("%d %d", &x, &y);
			ret = Sub(x, y);
			printf("%d\n", ret);
			break;
		case 3:
			printf("請輸入:>");
			scanf("%d %d", &x, &y);
			ret = Mul(x, y);
			printf("%d\n", ret);
			break;
		case 4:
			printf("請輸入:>");
			scanf("%d %d", &x, &y);
			ret = Div(x, y);
			printf("%d\n", ret);
			break;
		case 0:
			printf("退出計算器\n");
			break;
		default:
			printf("輸入錯誤,請重新輸入\n");
			break;
		}
	} while (input);
}

方法二

使?函數(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("請選擇:>");
		scanf("%d", &input);

		if (input >= 1 && input <= 4)
		{
				printf("請輸入:>");
				scanf("%d %d", &x, &y);
				ret = pf[input](x, y);
				printf("%d\n", ret);
		}
		else if (input == 0)
		{
			printf("退出計算器\n");
		}
		else
		{
			printf("輸入錯誤,請重新輸入\n");
		}
	} while (input);
}

回調(diào)函數(shù)是什么?

回調(diào)函數(shù)就是?個通過函數(shù)指針調(diào)?的函數(shù)。

如果你把函數(shù)的指針(地址)作為參數(shù)傳遞給另?個函數(shù),當(dāng)這個指針被?來調(diào)?其所指向的函數(shù)時,被調(diào)?的函數(shù)就是回調(diào)函數(shù)?;卣{(diào)函數(shù)不是由該函數(shù)的實現(xiàn)?直接調(diào)?,?是在特定的事件或條件發(fā)?時由另外的??調(diào)?的,?于對該事件或條件進(jìn)?響應(yīng)。
中我們寫的計算機的實現(xiàn)的代碼中,紅?框中的代碼是重復(fù)出現(xiàn)的,其中雖然執(zhí)?計算的邏輯是區(qū)別的,但是輸?輸出操作是冗余的,有沒有辦法,簡化?些呢?因為紅?框中的代碼,只有調(diào)?函數(shù)的邏輯是有差異的,我們可以把調(diào)?的函數(shù)的地址以參數(shù)的形式傳遞過去,使?函數(shù)指針接收,函數(shù)指針指向什么函數(shù)就調(diào)?什么函數(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("請輸入:>");
	scanf("%d %d", &x, &y);
	ret = pf_t(x, y);
	printf("%d\n", ret);
}

int main()
{
	int input = 0;

	do
	{
		menu();
		printf("請選擇:>");
		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("退出計算器\n");
			break;
		default:
			printf("輸入錯誤,請重新輸入\n");
			break;
		}
	} while (input);
}

總結(jié) 

到此這篇關(guān)于C語言計算器的3種實現(xiàn)方法代碼的文章就介紹到這了,更多相關(guān)C語言計算器實現(xiàn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++有限狀態(tài)機實現(xiàn)詳解

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

    這篇文章主要為大家詳細(xì)介紹了C++有限狀態(tài)機的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    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++深入講解對象的銷毀之析構(gòu)函數(shù)

    C++深入講解對象的銷毀之析構(gòu)函數(shù)

    構(gòu)造函數(shù)在創(chuàng)建對象時被系統(tǒng)自動調(diào)用,而析構(gòu)函數(shù)(Destructor)在對象被撤銷時被自動調(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)用的時空開銷,C++ 提供一種提高效率的方法,即在編譯時將函數(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++里有很多排序方法,比如相對簡單的冒泡排序、選擇排序、插入排序,還有 STL里的sort函數(shù)  手寫快排  歸并排序等,還有就是堆排序,這次主要說堆排序和堆
    2022-03-03
  • 使用Objective-C獲取IPHONE手機IMSI序列號

    使用Objective-C獲取IPHONE手機IMSI序列號

    這篇文章主要介紹了使用Objective-C獲取IPHONE手機IMSI序列號的方法以及通過IMSI序列號獲取運營商、手機號的方法,非常的實用,有需要的小伙伴可以參考下。
    2015-04-04
  • 基于C語言實現(xiàn)的迷宮游戲代碼

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

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

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

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

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

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

最新評論