c语言可循环计算器代码,可编程简易计算器(代码)
該樓層疑似違規已被系統折疊?隱藏此樓查看此樓
while(sign[0]!='a'){
//if(input[index]){
for(int?i=0;i<4;i++)
{
if(firsttime?==1)i=3;
//提取第i+1個數字
dexto=1;
char?num_str[INPUT_LEN]={'+'};
while(input[index])
{
if(isdigit(input[index]))
num_str[dexto++]=input[index++];
else
if((input[index]=='+'||input[index]=='-')&&dexto==1)
num_str[dexto-1]=input[index++];
else?if(dexto>1)break;
else?index++;
}
if(input[index]=='.')
if(isdigit(input[index+1]))
{
num_str[dexto++]=input[index++];
while(input[index])
if(isdigit(input[index]))num_str[dexto++]=input[index++];
else?break;
}
num[i]=atof(num_str);
if(input[index]=='\0')
{
for(;i<4;i++)sign[i]='a';
break;
}
//提取第i+1個符號
while(input[index])
{
switch(input[index])
{
case'+':case'-':case'*':case'/':case'%':case'^':
sign[i]=input[index++];
goto?outofwhile;
break;
default:
index++;
continue;
}
}
outofwhile:;
}//提取數字符號結束
firsttime?=1;
//}//判斷結束結束
//將數字進行計算
if(sign[0]=='+'||sign[0]=='-')
{//如果s0是加減則:
if(sign[1]=='+'||sign[1]=='-'||sign[1]=='a')
{
//如果s0,s1都一級
num[0]=singlecalculate(num[0],sign[0],num[1]);
num[1]=num[2];
num[2]=num[3];
sign[0]=sign[1];
sign[1]=sign[2];
sign[2]=sign[3];
}
else
{
if(sign[1]=='^')
{
//如果s0一級s1是^則
num[1]=singlecalculate(num[1],sign[1],num[2]);
num[2]=num[3];
sign[1]=sign[2];
sign[2]=sign[3];
}else?if(sign[2]=='^')
{
//如果s2是^且s1為二級
num[2]=singlecalculate(num[2],sign[2],num[3]);
sign[2]=sign[3];
}else
{
//如果s2為二級或1級則
num[1]=singlecalculate(num[1],sign[1],num[2]);
num[2]=num[3];
sign[1]=sign[2];
sign[2]=sign[3];
}
}
}else
{
//如果s0不是加法則
if(sign[1]=='^'&&sign[0]!='^')
{
//如果s1是^則
num[1]=singlecalculate(num[1],sign[1],num[2]);
num[2]=num[3];
sign[1]=sign[2];
sign[2]=sign[3];
}else
{
//如果s0是二級或以上s1是二級或以下則:
num[0]=singlecalculate(num[0],sign[0],num[1]);
num[1]=num[2];
num[2]=num[3];
sign[0]=sign[1];
sign[1]=sign[2];
sign[2]=sign[3];
}
}
//num[0]=singlecalculate(num[0],sign[0],num[1]);
/*printf("1:%lf\n",num[0]);
printf("2:%lf\n",num[1]);
printf("3:%lf\n",num[2]);
printf("4:%lf\n",num[3]);
printf("s1:%c\n",sign[0]);
printf("s2:%c\n",sign[1]);
printf("s3:%c\n",sign[2]);
printf("s4:%c\n",sign[3]);*/
}//大循環結束
return?num[0];
}
double?singlecalculate(double?num1,char?sign,double?num2)
{
switch(sign)
{
case'+':
num1+=num2;
break;
case'-':
num1-=num2;
break;
case'*':
num1*=num2;
break;
case'/':
num2==0?printf("式子包含有除數為0,請檢查\a"):num1/=num2;
break;
case'%':
num2==0?printf("式子包含有除數為0,請檢查\a"):num1=(int)num1%(int)num2;
break;
case'^':
num1=pow(num1,num2);
break;
}
return?num1;
}
程序我自己測試,沒發現什么問�
總結
以上是生活随笔為你收集整理的c语言可循环计算器代码,可编程简易计算器(代码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从一个实例看javascript几种常用
- 下一篇: messagehub讲解_艾舜杰SAP