|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
- }
复制代码 回复即可看到真正的答案....
|
|