計算器編譯功能
㈠ codeblocks怎麼編譯運行計算器
你可以使用Codeblocks編消磨態寫一個計算器的C程序,然後在Codeblocks中編譯運行即可。具體步驟為:新建一個工程,創建一個c文件,然後寫出程序代碼游悄,保存好,編譯運行,用Ctrl+F9快捷鍵拿源可以觸發編譯運行。
㈡ 怎麼用C++編譯一個簡單的計算器
我借鑒了別人的某計算器,因為你沒有說多簡易...我就找了個差不多的...
/*
程序名稱:表達式計算器
編譯環境:Microsoft Visual C++ 6.0
作者:吉林大學 計算機科學與技術學院 2006 羅泗勇
時間:200801
*/
/*
說明:
採用樹形結構處理表達式,按優先順序運算結果,一個加,減,乘,除或數值為一個節點
優先順序如下:
函數:4
括弧:3
乘除:2
加減:1
*/
#include <windows.h>
#include <iostream>
#include <fstream>
#include <string>
#include <cmath>
using namespace std;
const char NUM[]={'0','1','2','3','4','5','6','7','8','9','.'};
const char OPERATION[]={'+','-','*','/'};
const double PI=3.14159265358979;
const double EE=2.71828182818281;
class Fun //處理系統數學函數的類
{
public:
Fun(string o,int t,double l=0.0,double r=0.0):op(o),type(t),lvalue(l),rvalue(r){}
static string FUN[];
double calc();
private:
int type; //666 0 1 sin90 2 3! 3 3C2
string op; //函數類型
double lvalue; //函數左邊的值
double rvalue; //函數右邊的值
static int FunNum;
};
int Fun::FunNum=8;
string Fun::FUN[]={"!","sin","cos","tan","log","ln","C","A","^"};
/*
函數說明:
1:log是以10為底的工程對數
2:ln 是以e為底的自然對數
3:C 計算組合數 輸入規則 如計算 3取2的組合 輸入表達式 3C2
4:A 計算排列數 輸入規則 如計算 3取2的排列 輸入表達式 3A2
5:! 計算階乘
6:^ x的y次方 輸入 x^y
*/
int factorial(int n) //階乘函數
{
int i,s=1;
for(i=1;i<=n;i++)
s*=i;
return s;
}
int C(int a,int b)
{
return factorial(a)/(factorial(b)*factorial(a-b));
}
int A(int a,int b)
{
return factorial(a)/factorial(b);
}
double Fun::calc() //計算系統函數的值
{
if(type==0)
return lvalue;
else
{
if(op=="!")
return factorial(lvalue);
if(op=="sin")
return sin(rvalue/180*PI);
if(op=="cos")
return cos(rvalue/180*PI);
if(op=="tan")
return tan(rvalue/180*PI);
if(op=="log")
return log10(rvalue);
if(op=="ln")
return log10(rvalue)/log10(EE);
if(op=="C")
return C(lvalue,rvalue);
if(op=="A")
return A(lvalue,rvalue);
if(op=="^")
return pow(lvalue,rvalue);
else
{
string err="暫時沒有函數"+op;
MessageBox(NULL,err.c_str(),"錯誤",MB_OK);
return 0;
}
}
}
struct Unit //雙向鏈表保存運算單元
{
Unit(int p,char o,string c,double v,int t,Unit * pr=NULL,Unit * n=NULL)
:PRI(p),Operation(o),Code(c),value(v),Type(t),Pre(pr),Next(n){}
int PRI; //優先順序
char Operation; //操作符
string Code; //原始代碼
double value; //數據
int Type; //類型 操作符0 數據1 函數2
Unit * Pre; //構成雙向鏈表
Unit * Next;
};
class Node //表達式樹狀結構的節點
{
public:
Node(char o,int p,int e=1,double v=0,Node * ph=NULL,Node * pl=NULL,Node * pr=NULL)
:Operation(o),PRI(p),Expression(e),value(v),Head(ph),Left(pl),Right(pr){}
Node * Head; //節點的根,左樹枝,右樹枝
Node * Left;
Node * Right;
double GetValue();
char GetOperation() const {return Operation;}
int GetPri() const {return PRI;}
int IsExp() const {return Expression;}
private:
char Operation; //操作符
int PRI; //優先順序
int Expression; //記錄該節點是否是表達式0 1
double value; //該節點的值
};
double Node::GetValue() //運算該節點的值
{
if(IsExp()) //該節點的值還未算出來
{
double lvalue,rvalue;
lvalue=Left->GetValue();
rvalue=Right->GetValue();
Expression=0;
char op=GetOperation();
switch(op)
{
case '+':
return lvalue+rvalue;
case '-':
return lvalue-rvalue;
case '*':
return lvalue*rvalue;
case '/':
return lvalue/rvalue;
default:
return 0;
}
}
else
return value;
}
bool Isnum(char c)
{
for(int i=0;i<sizeof(NUM);i++)
{
if(c==NUM[i])
return true;
}
return false;
}
bool Isoperation(char c)
{
for(int i=0;i<sizeof(OPERATION);i++)
{
if(c==OPERATION[i])
return true;
}
return false;
}
Unit * Analyse(string exp) //分析表達式並生成鏈表
{
int pri=0; //當前優先順序
int stat=-1; //當前的讀入狀態 括弧 0 數據 1 運算符 2
Unit * head=NULL,* p=NULL;
int i=0,explen;
explen=exp.size();
for(i=0;i<explen;i++)
{
char c=exp.at(i);
if(c=='(')
{
pri+=3;
stat=0;
}
else if(c==')')
{
pri-=3;
stat=0;
}
else if(Isoperation(c)) //操作符不會出現在表達式開頭
{
Unit * temp=p;
int add_pri; //自身增加的優先順序
if(c=='+' || c=='-')
add_pri=1;
else
add_pri=2;
p->Next=new Unit(pri+add_pri,c," ",0,0);
p=p->Next;
p->Pre=temp;
}
else //其他的當做函數處理
{
string function="";
while(i<explen && (c=exp.at(i),! Isoperation(c)) && c!=')')
{
function+=c;
i++;
}
i--;
if(head==NULL)
{
p=new Unit(pri,' ',function,0,2);
head=p;
}
else
{
Unit * temp=p;
p->Next=new Unit(pri,' ',function,0,2);
p=p->Next;
p->Pre=temp;
}
}
}
return head;
}
Unit * Calc(Unit * head) //計算雙向鏈表基本單元的值
{
Unit * p=head;
while(p!=NULL)
{
if(p->Type!=0) //非操作符
{
string temp=p->Code;
string op;
double lvalue=0,rvalue=0;
int l_point=0,r_point=0;
int i=0,type=0;
char ch;
while(i<temp.size() && (ch=temp.at(i),Isnum(ch)))
{
if(ch=='.')
{
l_point++;
i++;
continue;
}
if(! l_point)
lvalue*=10;
lvalue+=(ch-'0')*pow(10,-l_point);
i++;
if(l_point)
l_point++;
}
while(i<temp.size() && (ch=temp.at(i),! Isnum(ch)))
{
op+=ch;
type=1;
i++;
}
while(i<temp.size() && (ch=temp.at(i),Isnum(ch)))
{
if(ch=='.')
{
r_point++;
i++;
continue;
}
if(! r_point)
rvalue*=10;
rvalue+=(ch-'0')*pow(10,-r_point);
i++;
if(r_point)
r_point++;
}
Fun * f=new Fun(op,type,lvalue,rvalue);
p->value=f->calc();
}
p=p->Next;
}
return head;
}
Node * Tree(Unit * head) //生成表達式樹
{
Node * root=NULL,* proot=NULL,* pbranch=NULL;
Unit * p=head;
int now_pri; //當前優先順序
bool hadop=false;
while(p!=NULL)
{
if(p->Type==0) //如果是一個操作符
{
hadop=true;
if(root==NULL)
{
proot=new Node(p->Operation,p->PRI,1);
root=proot;
pbranch=root;
now_pri=p->PRI;
proot->Left=new Node(' ',0,0,p->Pre->value);
proot->Right=new Node(' ',0,0,p->Next->value);
}
else
{
if(p->PRI<=now_pri) //優先順序低於當前優先順序,樹根方向 //最初寫的 if(p->PRI<now_pri),9/3/3=9,錯的
{
proot=new Node(p->Operation,p->PRI,1); //新的樹根
proot->Left=root; //根的變換
proot->Right=new Node(' ',0,0,p->Next->value);
root=proot;
pbranch=proot; //右樹枝的變換
//pbranch->Right=new Node(' ',0,0,p->Pre->value); //樹枝右邊取值
}
else
{
Node * temp;
temp=new Node(p->Operation,p->PRI,1);
pbranch->Right=temp;
temp->Head=pbranch;
pbranch=pbranch->Right;
pbranch->Left=new Node(' ',0,0,p->Pre->value);
pbranch->Right=new Node(' ',0,0,p->Next->value);
}
now_pri=p->PRI;
}
}
p=p->Next;
}
if(! hadop)
root=new Node(' ',0,0,head->value);
return root;
}
int main()
{
string exp;
//ifstream infile("test.txt",ios::in);
while(! getline(cin,exp).eof())
{
if(exp=="")
continue;
Unit * h=Analyse(exp);
h=Calc(h);
Node * root=Tree(h);
cout<<exp<<"="<<root->GetValue()<<endl;
}
return 0;
}
㈢ 科學計算器有哪些功能
科學計算器有哪些功能
科學計算器支持顯示24位數字,支持運算優先選擇模式、進制轉換功能、標准數學函數、百分比計算、方根計算、對數、次方、記憶等等功能。下面,我就為大家講講科學計算器的功能,快來看看吧!
1 RCL STO
rcl是查看變數,sto是賦值
2 DEG RAD GRAD
D(DEG) R(RAD) G(GRAD)分別表示角度制,弧度制,百分度制.
計算機有四種狀態:Norm、Fix、Eng、Sci,功能分別是:指定指數記號范圍、小數點位設置、工程計算、有效數位設置。如果計算器處於其它三種狀態則可能會出現運算錯誤。
Deg是將計算器的角設定為度的狀態,共有六種:
Deg—指定度作為預設單位。
Rad—指定弧度作為預設單位。
Gra—指定梯度作為預設單位。也稱為“百分度”和“新度”。
°—指定度作某輸入值的單位。
r—指定弧度作某輸入值的單位。
g—指定梯度作某輸入值的單位。
有時如果誤將角度(Deg)設置為弧度(Rad)或梯度(Gra)狀態就會造成計算結果錯誤°、r、g是用於標識角度單位的。
所以要消除 GRA 你找到計算模式切換就可以消除!
3 hyp sin cos tan ln log等
sin cos tan 為三角函數,sin-1 cos-1 tan-1對應為反三角函數,等同於arcsin,arccos,arctan
hyp是sin、cos、tan的雙曲線函數.
ln 即自然對數 ln a=loge a.
log 對數函數
其餘函數在這里不多解釋
4 MS MR MC M- M+
計算器裡面有一個存儲器,默認狀態下是空的(即0)。它能保存任意一個數值,也只能存一個值。你可以把它當成一個只能保存一件東西的盒子。
MS:存當前顯示的數值
MR:讀取存儲器中的'數值,並顯示出來
MC:清除已存的數據
M-:用已存的數值減去當前顯示的數值後,再將結果保存
M+:用已存的數值加上當前顯示的數值後,再將結果保存
5 conv ans
ans 英文單詞為answer。回答,結果的意思。
conv 為公制換算
卡西歐科學計算器中公制換算(CONV)對應如下
01 英寸 厘米
02 厘米 英寸
03 英尺 米
04 米 英尺
05 碼 米
06 米 碼
07 英里 公里
08 公里 英里
09 海里 米
10 米 海里
11 英畝 平方米
12 平方米 英畝
13 美製加侖 升
14 升 美製加侖
15 英制加侖 升
16 升 英制加侖
17 秒差距 千米
18 千米 秒差距
19 千米/小時 米/秒
20 米/秒 千米/小時
21 盎司 克
22 克 盎司
23 磅 千克
24 千克 磅
25 標准大氣壓 帕
26 帕 標准大氣壓
27 毫米汞柱 帕
28 帕 毫米汞柱
29 馬力 千瓦
30 千瓦 馬力
31 平方厘米千克力 帕
32 帕 平方厘米千克力
33 扭矩 焦
34 焦 扭矩
35 平方英寸磅力 千帕
36 千帕 平方英寸磅力
37 華氏度 攝氏度
38 攝氏度 華氏度
39 焦 卡路里
40 卡路里 焦
;㈣ 怎麼看計算器有沒有編程功能
一般的計算器都是無編程功能的,即使有平方開方階乘正弦餘弦等計算功能也是無編程的。下面的圖片是一個可編程的計算器,你一比較就知道了,可編程的計算器可以輸入程序控制語句。
㈤ 計算器的用途有哪些
計算機主要用途
一、數值計算.計算機廣泛地應用於科學和工程技術方面的計算,這是計算機應用的一個基本方面,也是我們比較熟悉的。如:人造衛星軌跡計算,導彈發射的各項參數的計算,房屋抗震強度的計算等。
二、數據處理.用計算機對數據及時地加以記錄、整理和計算,加工成人們所要求的形茄敬迅式,稱為數據處理。數據處理與數值計算相比較,它的主要特點是原始數據多,處理量大,時間性強,但計算公式並不復雜稿譽.在計算機應用普及的今天,計算機已經不再只是進行科學計算的工具,計算機更多地應用在數據處理方面。如:對工廠的生產管理、計劃調度、統計報表、質量分析和控制等;在財務部門,用計算機對帳目登記、分類、匯總、統計、製表等。我們不可以用計算機實現辦公自動化。用計算機進行文字錄入、排版、製版和列印,比傳統鉛字列印速度快、效率高,並且使用更加方便;用計算機通信即通過區域網或廣域網進行數據交換,可以方便地發送與接收數據報表和圖文傳真。
三、 自動控制.自動控制也是計算機應用的一個重要方面。在生產過程中,採用計算機進行自動控制,可以大大提高產品的數量和質量,提高勞動生產率,改善人們工作條件,節省原材料的消耗,降低生產成本等。
四、輔助設計.計算機輔助設計(簡稱CAD)是藉助計算機進行設計的一項實用技術,採用計算機輔助設計過程實現自動化或半自動化,不僅可以大大縮短設計周期,加速產品的更新換代,降低生產成本,節省人力物力,而且對保證產品有重要作用。
五、輔助教學.計算機輔助教學(簡稱CAI)是利用計算機對學生進行教學。計算機輔助教學的第一個大型系統是在60年代由美國伊里諾大學開發的PLATO。現在世界上發展的各方教學軟體已無法准確統計。CAI的專用軟體稱為課件,是CAD的一大分支,它可按不同教學方式方法以及不同領域內容進行分類。
六、人工智慧.計算機有記憶能力,又擅長進行邏輯推理運算,因此計算機可以模仿人的思維,讓計算機具有一定的學習和推理功能,能夠自己積累知識,並且獨立解決問題,這就是計算機的人工智慧。例如,計算機可以對計算機高級語言進行編譯和解釋;不同國家語言之間的機器翻譯;在很多場合下,裝上電腦的機器人可以代替人們進行繁顫此重的、危險的體力勞動和部分簡單重復的腦力勞動。
七、娛樂活動.我們可以在多媒體電腦上看電視、看VCD、聽音樂、玩游戲、在網上和朋友聊天等等。
㈥ 計算器的12種功能是什麼
1、上電/全清鍵(ON/AC):按下該鍵表示上電,或清除所有寄存器中的數值。
2、清除鍵(C):在數字輸入期間,第一次按下此鍵,將清除除存儲器內容外的所有數值。
3、 清除輸入鍵(CE):在數字輸入期間按下此鍵,將清除輸入寄存器中的值並顯示"0"。
4、 平方根√ :顯示一個輸入正數的平方根。
5、M+:把目前顯示的值放在存儲器中,中斷數字輸入。
6、 M-:從存儲器內容中減去當前顯示值,中斷數字輸入。
7、MRC:第一次按下此鍵將調用存儲器內容,第二次按下時清除存儲器內容。
8、MR:調用存儲器內容。
9、 MC:清除存儲器內容。
10、GT:按下GT鍵,傳送GT存儲寄存器內容到顯示寄存器;按AC或C鍵消除GT顯示標志。
11、 MU(Mark-up and Mark-down鍵):按下該鍵完成利率和稅率計算。
12、 MRC:第一次按下此鍵將調用存儲器內容,第二次按下時清除存儲器內容。
(6)計算器編譯功能擴展閱讀
使用方法
計算器包括標准型和科學型兩種,其中標准型使用方法如下:
1、鍵入數字時,按下相應的數字鍵的,如果按錯可用(CE)鍵消去一個數值,再重新輸入正確的數字。
2、直接輸入數字後,按下乘號將它變為乘數,在不輸入被乘數的情況下直接按(=)鍵,就是該數字的二次方值。
3、根號(√)鍵默認是開二次方根,只有科學計算器才能開多次方根。
4、按下(+/-)鍵可改變數字的正負值。
㈦ C語言 編譯計算器可以分別計算加減乘除
#include<stdio.h>
#defineCLR_INTPUTwhile(getchar()!=' ')
intmain(void)
{
charch;
floatnum1,num2;
doublenum;
printf("輸入方式為(例n*n) ");
while(1)
{
while(scanf("%f",&num1)!=1)//確保輸入數據正確
{
printf("輸入有誤,請重新輸入第一個數 ");
CLR_INTPUT;
}
getchar();//清除空格符
while(scanf("%c",&ch)==1)
{
if(ch!='+'&&ch!='-'&&ch!='*'&&ch!='/')
{
printf("輸入有誤,請重新輸入運算操作 ");
CLR_INTPUT;
continue;
}
break;
}
getchar();//清除空格符
while(scanf("%f",&num2)!=1)
{
printf("輸入有誤,請重新輸入第二個數 ");
CLR_INTPUT;
}
CLR_INTPUT;//清除輸入緩沖
switch(ch)
{
case'+':num=num1+num2;
break;
case'-':num=num1-num2;
break;
case'*':num=num1*num2;
break;
case'/':num=num1/num2;
break;
default:printf("輸入運算有誤 ");
}
printf("%.2f%c%.2f=%.4lf ",num1,ch,num2,num);
}
return0;
}
程序還是有些BUG,對用戶輸入出錯提示的不夠。
㈧ 用C語言編譯一個簡單計算器的程序,要求其中有括弧和冪函數
既然大家都沒發程序,I am coming.
說明:由於冪的運算應該比括弧低比乘除要高,所以為避免混淆用冪運算時用括弧括起來,比如2+9/3^2-5表示2+(9/3)^2-5,要是想要9除以3^2,這樣輸入:2+9/(3^2)-5,以免引起歧義。
程序功能強大代碼簡練。可以對任意數值類型計算,這里全部按double型處理,程序還可以使用大括弧{}中括弧[]小括弧()三種括弧,當然優先順序是小括弧>中括弧>大括弧>運算符。
要是只想結果取整,將所有double類型改為int即可,不過不主張這樣做,既然是計算器,當然要精確計算。
一個完整的c程序如下,程序在win-tc和Dev-c++下都調試通過。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
char s[201];/*全局變數s[]與i分別表示算術表達式字元串以及其當前位置指針變數*/
int i=0;
double proc1(char ch);
void proc2(double *a,char *c);
void str_read(double *a,char *c) /*讀取下一個操作數*/
{ int j=0;
char s1[30];
while ((s[i]!='\0')&&(s[i]!='+')&&(s[i]!='-')&&(s[i]!='(')&&(s[i]!=')')
&&(s[i]!='=')&&(s[i]!='^')&&(s[i]!='*')&&(s[i]!='/')&&(s[i]!='[')&&(s[i]!=']')
&&(s[i]!='{')&&(s[i]!='}')) /*操作數結束標志*/
s1[j++]=s[i++];
s1[j]='\0';
*a=atof(s1);
*c=s[i++];
}
void input_str() /*表達式接收模塊*/
{ int j,k,t=0;
char c,s1[80];
printf("\n請輸入任一算術表達式:\n");
while (!t)
{ gets(s);
j=k=0; t=1;
while ((s[j]!='=')&&(s[j]!='\0')&&(t)) /*判斷括弧配對*/
{if ((s[j]=='(')||(s[j]=='[')||(s[j]=='{'))
switch(s[j])
{ case '(':s1[k++]=')';break;
case '[':s1[k++]=']';break;
case '{':s1[k++]='}';
}
else if ((s[j]==')')||(s[j]==']')||(s[j]=='}'))
if (s1[--k]!=s[j])
{ printf("輸入出錯!請重新輸入(直接回車退出):\n");
t=0;
}
j++;
}
if ((k!=0)&&(t))
{printf("輸入出錯!請重新輸入(直接回車退出):\n");
t=0;
}
}
}
void proc2(double *a,char *c)
/*算術運算符之後只有兩種情況:要麼是各種左括弧,要麼是操作數*/
{ char ch;
if ((s[i]=='(')||(s[i]=='[')||(s[i]=='{'))
{ switch(s[i])
{ case '(':ch=')';break;
case '[':ch=']';break;
case '{':ch='}';
}
++i;
*a=proc1(ch);
/*計算從當前左括弧開始到與其相對應的右括弧結束這段表達式的值*/
*c=s[i++]; /*跳過右括弧*/
}
else str_read(a,c); /*讀取一個操作數*/
}
double proc1(char ch)
/*該過程對算術表達式s從當前位置s[i]開始到表達式結束或s[i]==ch這部分進行求值*/
{ double a1=0,a2,a=0;
char c1='+',c='+',c2='+';
/*給表達式前面加上"0+"(第一操作數與第一操作符)*/
while((c!='=')&&(c!='\0')&&(c!=ch))
{ proc2(&a,&c); /*讀取第二操作數與第二操作符.*/
while (c=='^' || c=='*' || c=='/')
{ proc2(&a2,&c2); /*讀取第三操作數與第三操作符.*/
switch (c) /*對第二操作符進行運算*/
{ case '*':a=a*a2; break;
case '/':a=a/a2; break;
case '^':a=pow(a,a2);
}
c=c2; /*把第三操作符賦給第二操作符變數*/
}
switch (c1) /*對第一操作符進行運算*/
{ case '+':a1=a1+a;break;
case '-':a1=a1-a;
}
c1=c; /*把第二操作符賦給第一操作符變數*/
}
return(a1); /*返回這部分表達式的值*/
}
int main(void)
{ system("cls");
input_str();
if (s[0]=='\0') return 0;
printf("該表達式的值是: ");
printf("%-8f\n",proc1('\0'));
system("pause");
return 0;
}
㈨ 計算器解題是,首先必須要把解題過程編成什麼
計算機程序語言,c,java等等。
系統軟體由一組控制計算機系統和管理其資源的程序組成。其主要功能包括:啟動計算機、存儲、載入和執行應用程序、分類和檢索文件、將程序語言翻譯為機器語言等。
實際上,系統軟體可以看作是用戶與計算機之間的介面。它為應用軟體和用戶提供了控制和訪問硬體的辯肆手段。這些功能主要由操作系統來完成。在這一類中還有編譯系統和各種工具,它們以另一種方式幫助用戶使用計算機。以下是它們的功能。
注意事項:
匯編程序。使用匯編語言來編寫計算機程序,程序員仍然需要非常熟悉計算機系統的硬體結構,所以程序設計本身仍然效率低、蘆灶敬陪慎繁瑣。
但由於匯編語言與計算機硬體系統密切相關,在某些特定的場合,如系統核心程序、實時控製程序等對時空效率要求較高的場合,它仍然是一種非常有效的編程工具。
但它具有不可替代的特點,如一些單片機或一些直接控制的硬體程序都必須使用匯編語言。
以上內容參考:網路-編程
㈩ 計算器主要的功能有哪些
基本運算、負數計算、分數計算、倒數、階乘、統計計算、復數計算。