#include <stdio.h>
#include <string.h>
char str[256] = {0};//存放接受到的字符'
char *pstr = str;
int n[256] ={0};//存放数字
char stemp[256] ={0};
char s[256] ={0};//存放+—*/
int i,j,k;
int main()
{
/*********接收表达式************/
while(1)
{
*pstr = getchar();
if (*pstr == '\n')
{
*pstr = '\0';
break;
}
*pstr++;
}
printf("%s\n",str);//遍历测试
/*********分离存储数字************/
pstr = str;
for (i=0;i<=strlen(str);i++)
{
if (isalnum(*pstr))
{
stemp[j] = *pstr;
j++;
}else
{ stemp[j] ='\0';
n[k] =atoi(stemp);
k++;
j=0;
}
pstr++;
}
for (i=0;i<=k-1;i++)//遍历测试
{
printf("%d ",n[i]);
}
printf("\n");
/*********分离存储符号************/
pstr =str;
j=0;
for (i=0;i<=strlen(str);i++)
{
if (isalnum(*pstr))
{
}else
{
s[j] = *pstr;
j++;
}
pstr++;
}
for (i=0;i<=strlen(s);i++)//遍历测试
{
printf("%c ",s[i]);
}
printf("\n");
/*********计算************/
while (1)
{
if (s[i]=='*'||s[i]=='/')
{
if (s[i]=='*')
{
n[i+1]=n[i]*n[i+1];
}
else
{
n[i+1]=n[i]/n[i+1];
}
//数据前移一位
for (j=i;j<=strlen(s)+1;j++)
{
n[j]=n[j+1];
s[j]=s[j+1];
}
break;
}
//打印出当前一步计算结果 的表达式
for (i=0;i<=strlen(s);i++)
{
printf("%d%c",n[i],s[i]);
}
printf("\n");
//退出条件
j=1;
for (i=0;i<=strlen(s);i++)
{
if (s[i]=='*'||s[i]=='/')
{
j=0;//表示继续循环
}
}
if (j)
{
break;//如果j==1退出while 1
}
}//end while 1
//进行 加减运算
while(2)
{
for (i=0;i<=strlen(s);i++)
{
if (s[i]=='+')
{
n[i+1]=n[i]+n[i+1];
}else if (s[i]=='-')
{
n[i+1]=n[i]-n[i+1];
}
//数据前移一位
for (j=i;j<=strlen(s)+1;j++)
{
n[j]=n[j+1];
s[j]=s[j+1];
}
break;
}
//break; while2 结束条件
//退出条件
j=1;
for (i=0;i<=strlen(s);i++)
{
if (s[i]=='+'||s[i]=='-')
{
j=0;//表示继续循环
}
}
//打印出当前一步计算结果 的表达式
for (i=0;i<=strlen(s);i++)
{
printf("%d%c",n[i],s[i]);
}
printf("\n");
if (j)
{
break;//如果j==1退出while 1
}
}
//打印最终结果
printf("\n %s=%d \n",sc,n[0]);
getchar();
getchar();
return 0;
}
C语言控制台简易计算器
最新推荐文章于 2022-07-23 13:10:16 发布