马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 juhugufudu 于 2020-3-17 09:58 编辑
/*
这个代码是输入以下的式子,如:
4565+987*989/9/9/9/9/9/852*987-965
但你可以把代码改一下,改成double,也可以写成这样:
输入:
5+9*8
输出:
5+9*8
=5+72
=77
输出 运算结果
*/
#include<stdio.h>
#include<string.h>
char s[100];
long int num[50] = {0};
char chs[50];
int length, x = 1;
void move(int start,int ins)
{
int i, j, k;
for(i = start;i<length;i++) num[i] = num[i+1];
num[start] = ins;
for(j = start+1;j<length;j++) chs[j] = chs[j+1];
//for(i = 0;i<length-1;i++) printf("%ld ",num[i]);
//printf("\n");
//printf("%s\n",chs);
length -= 1;
}
long int f(int a, int b,char ch)
{
switch(ch)
{
case '+': return a+b;
case '-': return a-b;
case '*': return a*b;
case '/': return (int)a/b;
}
}
void init()
{
// 把 s 分成 num,chs
int i, index = 0;
for(i = 0;i<length;i++)
{
if(s[i]>='0' && s[i]<='9')
num[index] = num[index]*10+(s[i] - '0');
else
{
chs[index+1] = s[i];
index += 1;
}
}
length = index+1;
}
int main()
{
int i, temp = 0;
char ch;
scanf("%s",s);
length = strlen(s);
//printf("%d\n\n", length);
if(s[0] == '-') chs[0] = '-';
else chs[0] = '+';
init();
for(i = 0;i<length;i++)
{
ch = chs[i];
if(ch == '*' || ch == '/')
{
temp = f(num[i-1],num[i],ch);
move(i - 1, temp);
i -= 1;
}
}
for(i = 1;i<length;i++)
{
ch = chs[i];
if(ch == '+' || ch == '-')
{
temp = f(num[i-1],num[i],ch);
move(i - 1, temp);
i -= 1;
}
}
printf("%ld\n",num[0]);
return 0;
}
回复即可看到真正的答案....
|