函數功能:
使用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”即可!
歡迎各位大神批評指正!