📄 calculator.cpp
字号:
#include<stdio.h>
int quan(char c){
int qq;
qq=0;
switch(c){
case '^' : qq=4;break;
case '/' :
case '*' : qq=3;break;
case '+' :
case '-' : qq=2;break;
case '(' :
case ')' : qq=1;break;
case ';' : qq=0;break;
default : qq=-1;break;
}
return(qq);
}
void main() {
int d,k,right,rightop,z,x,y,shu[10];
char c,top,f,fu[10];
for(k=0;k<=9;k++){
shu[k]=0;
fu[k]=' ';
}
fu[0]=';';
for(k=0;k<=9;k++) {
printf("%d%c", shu[k],fu[k]);
}
printf("\n");
f=' ';
top=';';
c=' ';
x=0;
y=0;
z=0;
k=0;
right=0;
rightop=0;
d=c;
while(d!=59||top!=';'){
c=getchar();
d=c;
if(d==10){ break; }
for(k=0;k<=9;k++) {
if(fu[k]==' ') break;
}
if(k==0) top=' ';
else if(k>0) top=fu[k-1];
if(48<=d&&d<=57) {
for(k=0;k<=9;k++){
if(shu[k]==0) break; }
shu[k]=(d-48);
// printf(" %d",shu[k]);
continue;
}
else{
right=quan(c);
rightop=quan(top);
if(right>rightop||d==40) {
for(k=0;k<=9;k++){
if(fu[k]==' ') break; }
fu[k]=c;
top=c;
//printf(" %c",fu[k]);
}
else if(d==41&&top=='(')
for(k=0;k<=9;k++) { if(fu[k]==' ') fu[k-1]=' '; }
else { // ji suan
while(right<=rightop){
for(k=0;k<=9;k++) {
if(fu[k]==' ') break;}
if(k==0) printf("error");
else if(k>0) f=fu[k-1];
fu[k-1]=' ';
for(k=0;k<=9;k++) {
if(shu[k]==0) break;}
if(k==0) printf("error");
else if(k>0) y=shu[k-1];
shu[k-1]=0;
for(k=0;k<=9;k++) {
if(shu[k]==0) break;}
if(k==0) printf("error");
else if(k>0) x=shu[k-1];
shu[k-1]=0;
switch(f){
case '^' : z=(x^y);break;
case '/' : z=(x/y);break;
case '*' : z=(x*y);break;
case '+' : z=(x+y);break;
case '-' : z=(x-y);break;
default : break;
}
for(k=0;k<=9;k++) {
if(shu[k]==0) break;}
shu[k]=z;
z=0;
x=0;
y=0;
f=' ';
for(k=0;k<=9;k++) {
if(fu[k]==' ') break; }
if(k==0)top=' ';
else if(k>0) top=fu[k-1];
rightop=quan(top);
// end of the first circle
if(right>rightop)
for(k=0;k<=9;k++){
if(fu[k]==' ') { fu[k]=c; top=c;break; }
}
else if(d==41&&top=='(') {
for(k=0;k<=9;k++) if(fu[k]==' ') { fu[k-1]=' '; break; }
top=fu[k-2];
break; }
if(right==0&&rightop==0) { //printf("the end!");
break; } //// the te shu
} // while is end here
} //end else
} // end else
for(k=0;k<=9;k++) {
if(fu[k]==' ') break; }
if(k==0) top=' ';
else if(k>0) top=fu[k-1];
if(right==0&&rightop==0) { //printf("END!");
break; }
} // end while
printf("the result is %d ",shu[0]);
printf("\n press enter key ");
getchar();
getchar();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -