用C語言編寫函數實現一個整數計算機,程序接受三個參數,第一個參數爲操作項,後兩個參數爲操作數。

函數功能:

使用main函數的參數,實現一個整數計算機,程序可以接受三個參數,第一個參數“-a”選項執行加法,“-s”選項執行減法,“-m”選項執行乘法,“-d”選項執行除法,後面兩個參數爲操作數。


思考:

三個參數中兩個操作數不用處理,直接傳入即可,而對於第一個操作數就需要處理了,以保證傳入的參數是“'-a','-s','-m','-d'”,以便於處理計算,第一步將操作符號轉化爲上述賦好,然後將參數以及操作數傳入函數。

程序如下:

/*
**1.使用main函數的參數,實現一個整數計算機,程序可以接受三個參數,
**第一個參數“-a”選項執行加法,“-s”選項執行減法,
**“-m”選項執行乘法,“-d”選項執行除法,後面兩個參數爲操作數。
*/
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
int my_math(char *p, int num1, int num2)
{
	assert(p);
	if (p == "-a")
		return num1 + num2;
	else if (p == "-s")
		return num1 - num2;
	else if (p == "-m")
		return num1*num2;
	else if (p == "-d")
		return num1 / num2;
	else return 0;
}
int main()
{
	char a,b;
	char *p=&b;
	int num1 = 0;
	int num2 = 0;
	printf("請輸入要計算的算式:");
	scanf("%d%c%d",&num1,&a,&num2);  //錄入算式,num1,num2爲操作數,a保存的是操作符
	while (1)      //分別對參數指針p賦值,‘+’,‘-’,‘*’,‘/’,分別對應“-a,-s,-m,-d”,如果別的符號隊p賦‘\0’
	{
		if (a == '+')
		{
			p= "-a" ;
			break;
		}
		else if (a == '-')
		{
			p = "-s";
			break;
		}
		else if (a == '*')
		{
			p = "-m";
			break;
		}
		else if (a == '/')
		{
			p = "-d";
			break;
		}
		else *p = '\0';
	}
	int result = my_math(p, num1, num2);    //函數調用,得到結果。
	printf("%d%c%d=%d\n",num1,a,num2,result);  //分別輸出
	system("pause");
	return 0;
}

經過驗證,結果正確,注意:錄入算數式的時候不要錄入等號,如要計算5加3,錄入“5+3”即可!


歡迎各位大神批評指正!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章