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 輸入描述 輸入操作指令及計算的數字 符號 問題描述 製作簡易計算器 程式輸出 輸出操作頁面及計...