1樓:匿名使用者
最近自己做的,可以進行乘除優先,括號優先的運算
#include
#include
#include
#include
void bracket(char *a);/*處理含有括號的式子,將括號部分計算後值放回原陣列*/
int digit(double a);/*計算一個浮點型數整數部分的位數*/
int partlength;/*存放括號處字串的長度*/
void pick(double a,char *ch);/*將浮點數a存入陣列ch中(不包括小數點)*/
double part_take1(char a,int b,int c);/*取出陣列a下標b到c的字元所組成的數*/
double multiply(char h);/*對陣列h中存放的式子進行乘除運算*/
void part_take2(char d,char *e,int f,int g);/*取出陣列d下標f到g的字元並存入陣列e中*/
double sum(char express);/*對陣列express中字元組成的表示式進行運算*/
int main(void)
return 0;
}double sum(char express)/*對陣列express中字元組成的表示式進行運算*/
if(express[k]=='+'&&k>0)
if(express[k]=='-'&&k>0)
ch2[0]='\0';
k=i;}}
part_take2(express,ch2,k+1,length-1);
part1=multiply(ch2);
if(k==-1||express[k]=='+')
else
return(result);
}double part_take1(char a,int b,int c)
result=atof(ch1);
return(result);
}double multiply(char h)
if(h[k]=='/'&&k>0)
k=i;}}
num=part_take1(h,k+1,s-1);
if(h[k]=='*'||k==-1)
else
return(part);
}void part_take2(char d,char *e,int f,int g)
e[j]='\0';
}void bracket(char *a)
if(a[i]==')')
a[k-1]='.';
while(j<=partlength-count+1)}}
}void pick(double a,char *ch)
ch[k]='\0';
}int digit(double a)
return(i);}
2樓:軍飛雙
#include
#include
#include
#define maxsize 100
typedef struct
stack;
int table = ;//查詢運算子優先順序表
void infix_to_suffix(stack *sta, char *infix, int *suffix, int *length);
//將字尾表示式轉換為結果直接返回
int suffix_to_result(stack *sta, int *suffix, int length);
void init(stack *sta);
int main()
void infix_to_suffix(stack *sta, char *infix, int *suffix, int *length)
suffix[j] = b;
j++;
continue;
} if (infix[i] == 41)
sta->data[sta->top] = 0;
sta->top--;
priority = table[sta->data[sta->top] % 10];
i++;
continue;
} if (infix[i] == 40)
if (infix[i] >= 42 && infix[i] <= 47)
sta->top++;
sta->data[sta->top] = infix[i];
priority = table[sta->data[sta->top] % 10];
i++;
} else
suffix[j] = b * -1;
sta->data[sta->top] = 0;
sta->top--;
j++;
i += 2;
priority = table[sta->data[sta->top] % 10];
continue;
} sta->top++;
sta->data[sta->top] = infix[i];
priority = table[sta->data[sta->top] % 10];
i++;
} }} while (sta->top != -1)
*length = j;
} int suffix_to_result(stack *sta, int *suffix, int length) }
return result;
} //初始化棧空間
void init(stack *sta)
sta->top = -1;}
用c語言怎樣實現計算器加減乘除功能?
3樓:匿名使用者
我學c++時寫的
#include
#include "string"
int count(int a,int b,char c)void main()
; char sign[10];
int i,j=0,k=0,m;
int strlong=strlen(str);//#include "string"
cout<='0'&&str[i]<='9')number[j]=number[j]*10+str[i]-48;
else }
j++;
//cout<
2.堆疊
#include "string"
#include "iostream"
#include
#include
#include
using namespace std;
//自定義型別 用於儲存 兩種資料型別
class newtype
data;
}; //將字串轉換為 數字陣列和字元陣列 (通用提取字串中數字)
這裡要使用引用
flag=false;
} else
}//for
return true;
} //計算沒有括號的表示式
計算四者表示式 無括號型別 1+2*3+4int ii=0;
//先計算乘除
while(iiall,float &value){
int pos=0;
vectornumbers;
vectorchars;
float va=0;
for(int i=0;inumbers;
vectorchars;
vectorall;
couvert(str, numbers, chars,all);
for(int i=0;i
這是我翻家底找到的 .
4樓:匿名使用者
#include
void main()
scanf("%d\n",&d);}
5樓:沐星辰曦
#include
void main()
6樓:sky思念很淺
#include
void main()}
7樓:
我有個vc++的 任意進位制轉換----棧的連結儲存/* 棧的連結儲存----任意進位制轉換*/#include
#include
typedef int elemtype;
struct snode ;
void initstack(snode*& hs)// 壓棧 插入元素
void push(snode*& hs, const elemtype& item)
//從棧中刪除一個元素並返回該元素
elemtype pop(snode*& hs)//讀取棧頂元素
elemtype peek(snode* hs)bool emptystack(snode* hs)void clearstack(snode*& hs)hs = null;
}void transform(long number, int r)
while(!emptystack(a))
8樓:匿名使用者
#include
int main()
if(b!=0) //如果除數不為0return 0;}
9樓:匿名使用者
#include
#include
int main()
printf("%f%c%f=%f",a,b,c,d);
return 0;}
用c語言編一個計算器程式,能夠實現基本的加減乘除,能夠輸出運算物件,運算子,運算結果。謝謝啦!
10樓:天雨下凡
#include
int main(void)
return 0;}
11樓:雲丶痕無跡
# include
int main(void)
*/switch (chose)}}
用c語言寫一個只有加減乘除的計算器,它可以多次輸入,直到使用者想結束再退出程式。
12樓:幻想祕境
#include //望採納!!!
int main (void)
case '-':
case '/':
case '*':
default:
}fflush(stdin,null);
printf("計算完畢!是否再次使用?y/n:");
scanf ("%c",&yn);
if (yn=='y' || yn=='y')printf("感謝使用本計算器!本次服務到此結束!\n");
break;
}while (1);}
13樓:匿名使用者
#include
#include
int main(void)
else
break;
default:printf("unknown operator!\n");
}printf("do you want to continue(y/n or y/n?)");
scanf(" %c",&reply);//%c前有一空格}while(reply=='y'||reply=='y');
printf("program is over!\n");
return 0;
}注意一定要有空格,否則程式無法正常執行
用c語言寫可以加減乘除的計算器,可迴圈的
李小宇 學了十天寫出的第一個小作品 include int main else if c else if c else if c else else return 0 首先,scanf f c f a t b 這句有錯,缺逗號。應改為scanf f c f a,t,b 其次,if get 這句有錯。...
用c語言編寫簡單計算器程式,用c語言編寫一個簡單計算器程式
問明 include stdio h 計算器 voidmenu 自定義的選單介面 printf n printf 請輸入你的選擇 n printf 1 n printf 2 n printf 3 n printf 4 n printf n intmain inti 0 intj 0 intnum 0...
C語言中如何實現計算器功能,c語言如何建立一個按鈕?做計算器用
如果你的表示式不超過一級括號,可以不使用棧.如你的例題,但象這樣不用棧很煩 3 4 3 2 6 3 如只有一級,沒人寫,就加我.include using namespace std bool cal double lv,char op,double rv,double val return tru...