c語言簡易計算器

2021-07-11 14:04:23 字數 3480 閱讀 4509

c語言簡易計算器

表示式求值專案(多功能計算器)。該專案主要包含了10個模組,10項功能:

1:加法運算:主要進行兩個數的加法運算,可進行計算整數和浮點數;

2:減法運算:主要進行兩個數的減法運算,可進行計算整數和浮點數;

3:乘法運算:主要進行兩個數的乘法運算,可進行計算整數和浮點數;

4:除法運算:主要進行兩個數的除法運算,可進行計算整數和浮點數;增加了報錯功能,由於除數不可以為0,當使用者輸入的除數為0的時候,該專案會出提示紅色字型提示語句,提醒使用者輸入有誤重新輸入。

5:開平方根:主要進行某個數的開方,選擇該功能時,計算器會提示輸入需開方的數,然後列印出開方後的結果;

6:求某數的n次冪:選擇該功能時,計算器會提示請輸入需要計算的數x以及n的值,然後列印出n次冪後的結果;

7:進製的轉換:任意輸入某個數字,可以將該數字分別轉換為二進位制,八進位制,和十六進製制。

8:表示式求值:

9:一元二次方程求解:

10:中綴表示式轉換為字尾表示式:輸入表示式後,計算器會對表示式進行判斷。判斷括號是否匹配,括號匹配完成後進行下一步表示式運算子匹配,匹配成功後輸出其字尾表示式。如果匹配出現錯誤,出現紅色字型警告,發出嗶嗶的聲音,提示重新輸入。

0:退出功能:選擇退出時,出現乙個退出介面。並退出程式。

小功能介紹:計算器包含了3個介面,開始介面,選單介面,退出介面。採用多級變色提示音,紅,綠,紫,黃。方便使用者操作和檢視。

開始介面如圖:

功能介面如圖:

int getlevel(char op)//得到運算子的優先等級

double add(double a,double b)//加法運算

double sub(double a,double b)//減法運算

double multi(double a,double b)//乘法運算

double div(double a,double b,double *result)//除法運算

int calculate(double a,double b,char op,double *result)

//用於對兩個數進行運算

}void getrpn(char *str,char *rpn)

for(i=0; i='0'&&str[i]<='9'||str[i]=='.')

if(isnum)

if(str[i]=='('&&str[i+1]=='-')

if(str[i]=='(')

stackop.op[++stackop.top]=str[i];

else if(str[i]==')')

stackop.top--;

}else if(stackop.top!=-1&&getlevel(str[i])<=

getlevel(stackop.op[stackop.top]))

stackop.op[++stackop.top]=str[i];

}else

}if(isnum)

rpn[cnt++]='#';

while(stackop.top!=-1)

rpn[cnt]='\0';

}int getans(char *rpn,double *result)

if(rpn[i]=='.')

}fnum+=num;

stacknum.num[++stacknum.top]=fnum;

}else

else}}

*result=stacknum.num[stacknum.top];

return 1;

}int kuohao(char *str)//判斷圓括號輸入是否正確

} }printf("\n多項式輸入正確\n");

return 1;

}int main()

else

case 8:}}

case 10:

else

if(scanf("%c",&ch)=='\0');

system("cls");

break;

}else

printf("表示式為空,請核證後在輸入.\n");

}case 9:

else if (rad == 0)

else

if(scanf("%c",&ch)=='\0');

system("cls");

break;

}case 7:

printf("請輸入需要轉換的十進位制數:");

scanf("%d", &ary_10);

getchar();

itoa (ary_10, string ,2);

printf("二進位制: %s\n",string);

printf("八進位制: %o\n",ary_10);

printf("十六進製制: %x\n",ary_10);

if(scanf("%c",&ch)=='\0');

system("cls");

break;

case 5:

printf("請輸入要開平方根的數x:\n");

scanf("%lf",&x);

getchar();

result=sqrt(x);

printf("%.2lf開根後的結果:%.2lf",x,result);

if(scanf("%c",&ch)=='\0');

system("cls");

break;

case 6:

printf("請輸入你要求冪的數x和指數n:");

scanf("%lf%d",&x,&n);

getchar();

result=pow(x,n);

printf("%.2lf的%d次冪為%.2lf",x,n,result);

if(scanf("%c",&ch)=='\0');

system("cls");

break;

case 0:

print2();

return 0;}}

return 0;

}int menu()

while(v<0||v>10);

return v;

}void print1()

void print2()

C 簡易計算器

介紹 僅支援自然數間的 操作,並沒有括號。實現 利用棧實現儲存運算數以及運算子。流程 輸入 string exp 對exp進行處理 數字入數棧,運算子入字元棧。對字元棧檢測,非空時進行 計算 輸出 結果。處理 數字則入數棧,字元就進行判斷,1 棧空,字元入棧 2 而棧非空 棧頂運算級別 當前字元運算...

簡易計算器

include include include char xpr expression int level char ch double calc int lim return ret int main cal的遞迴使用,利用了當 運算子運算完畢以後,仍然會留在這個位置 比如式子 3 5 2 的分析...

簡易計算器

cpp copyright c 2012,煙台大學計算機學院 all rights reserved.檔名稱 text.cpp 作 者 胡穎 完成日期 2013 年 6 月 28 日 版 本 號 v1.0 輸入描述 輸入操作指令及計算的數字 符號 問題描述 製作簡易計算器 程式輸出 輸出操作頁面及計...