C语言计算程序

求一个C语言程序,能够计算五个数的加减乘除(符合四则运算法则),并且算式是一次输入的,程序先能够将这五个数赋给一个数组,运算符赋给另一个数组,比较运算的优先级后再进行运算,在线等大神指点啊,谢谢!

所谓后缀表达式,就是将a @ b写成 a b @
其中前者是我们日常生活中的中缀表达式,后面的就是后缀表达式。
例如7*8 化为 7 8 *
例如6-9 化为 6 9 -
例如5*(3+2),化成后缀表达式就是5 3 2 + *
可知后缀表达式无括号。
然后依次扫描符号,数字就直接进栈,遇到运算符就将前两个数字出栈、运算后结果再进栈:
例如5 3 2 + *
扫描5——>5
扫描3——>5 3
扫描2——>5 3 2
扫描+——>5 5
扫描*——>25


所以你现在要解决的问题是如何将中缀表达式转化成后缀表达式。
这个依然是通过栈来实现。
从左到右扫描,遇到数字直接输出,遇到符号比较优先级进栈或输出(优先级大的进栈,小的或相等的直接输出。其中左括号优先级大于乘除大于加减),遇到左括号则进栈,遇到右括号则将栈内左括号之内的符号都输出,遇到末尾就将栈内的所有符号都输出。
例如5*(3+2)

扫描5 直接输出
扫描* 进栈(栈内:*)
扫描( 进栈(站内:* ()
扫描3 直接输出
扫描+ +的优先级小于(的优先级,进栈,(栈内:* ( +)
扫描2 直接输出
扫描) 将站内(之前的全部输出,即输出了+
扫描到末尾,将栈内所有东西全部输出,即输出了*
综上,输出了5 3 2 + *


你可以看这个链接http://zhidao.baidu.com/question/552455212079542532.html?oldq=1

也是我回答的


温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-06
我是来秀优越的= =
这种用数组处理的方式好麻烦。。。如果你仅学到数组操作的话。。。

#include <iostream>
#include <cstring>
using namespace std;

int a[5];
char b[4];

void input() {
string s;
cin >> s;
int cur = 0;
int x = 0, y = 0, z = 0;
for (int i = 0; i < 5; i++) {
while (s[cur] >= '0' && s[cur] <= '9')
z = 10 * z + int(s[cur++]) - 48;
a[x++] = z;
z = 0;
if (i < 4) {
b[y++] = s[cur];
cur++;
}
}
}

int calc() {
int y = 4;
for (int i = 0; i < y; i++)
if (b[i] == '*' || b[i] == '/') {
if (b[i] == '*') a[i] *= a[i + 1];
else a[i] /= a[i + 1];
for (int j = i + 1; j < y; j++)
a[j] = a[j + 1];
for (int j = i; j < y - 1; j++)
b[j] = b[j + 1];
i = -1;
y--;
}
if (y == 0) return a[0];
for (int i = 0; i < y; i++) {
if (b[i] == '+') a[i] += a[i + 1];
else a[i] -= a[i + 1];
for (int j = i + 1; j < y; j++)
a[j] = a[j + 1];
for (int j = i; j < y - 1; j++)
b[j] = b[j + 1];
i = -1;
y--;
}
return a[0];
}

int main()
{
input();
cout << calc() << endl;
system("pause");
return 0;
}
第2个回答  2013-11-06

你好!!

是这样的效果吗,满意请采纳,多加点分吧,采纳后私信给你

    

c语言中编写程序,输入2个数,定义四个函数,分别实现加减乘除四则运算...
1、定义一个基础函数,例如`doublecalculate(doublex,doubley,charoperation)`,它接受两个数`x`和`y`以及一个操作符`operation`作为参数。这个函数将是实现四则运算的核心。2、在`calculate`函数内部,我们创建一个`double`类型的变量`result`来存储运算结果。对于加法,可以这样调用函数:`result=calcul...

用c语言程序设计一个简单计算器,求其源代码
rectangle( x, y, x + width, y + height );sprintf(str2, "%c", str1[j * 5 + i]);outtextxy( x + (width \/ 2), y + height \/ 2, str2);x += width + (width \/ 2);

c语言加减乘除设计;大神改下要求写一个简单的计算器,输入一个数学表达式...
首先,初始化两个数组:一个用于存储输入的符号,另一个用于存放数字。同时,定义一个栈来保存数字。每当从输入中读取到一个数字,就将其压入栈中。对于每个符号,根据其类型(加、减、乘、除),从栈中弹出相应的数字进行计算,并将结果压回栈中。如此循环,直至处理完所有输入。具体实现时,记得对...

用c语言 编写计算器程序
1、首先我们需要在Dev C++软件中创建一个C语言项目,项目类型选择控制台程序,如下图所示 2、接下来我们在项目下面新建C语言文件,如下图所示 3、然后我们在C文件中写入计算器逻辑代码,主要是让用户输入计算方式,然后程序自动计算,如下图所示 4、接下来我们点击运行菜单,选择下拉菜单中的运行选项,如...

怎么用C语言编写计算器程序?
><\/<\/<\/#include <stdio.h><\/int main() {<\/ char operator;<\/ double num1, num2, result;<\/ printf("欢迎来到C语言计算器!请输入运算符 (+, -, *, \/): ");<\/ scanf("%c", &operator);<\/ printf("请输入两个数字: ");<\/ scanf("%lf %lf", &num1...

c语言程序1+2!+3!...+20!
以下是C语言程序计算1+2!+3!...+20!的结果:♡♡ 有帮助到的话,麻烦采纳哦!♡♡

用C语言做一个计算器,能实现加减乘除混合运算?
是的,可以使用C语言编写一个计算器程序,能够实现加、减、乘、除等混合运算。下面是一个简单的示例程序:```c include <stdio.h> int main() { char operator;double num1, num2, result;printf("Enter an operator (+, -, *, \/): ");scanf("%c", &operator);printf("Enter two ...

C语言程序的计算过程
include<stdio.h>void main(){ int i,j,k,a=5,m[6][6]; i=1;\/\/初始化i的值为1 k=(a+1)\/2;\/\/初始化k的值为(a+1)\/2,即k=3 \/*循环过程如下: j=1, m[1][3]=1, k=4,i=5,a=5 j=2, m[5][4]=2, k=5,i=4,a=5 j=3, m[4][5]=3...

C语言 求1+3+5+7...+n 程序
以下是一个使用C语言计算1+3+5+7...+n的示例程序:```c include <stdio.h> int main() { int n, i, sum = 0;printf("请输入一个正整数:");scanf("%d", &n);for (i = 1; i <= n; i += 2) { sum += i;} printf("%d", sum);return 0;} ```在上面的代码中,...

怎么用C语言编写一个简单计算器程序。
1、首先在打开的C语言软件窗口中,在Main函数的上方,写上阶乘函数的框架,如下图所示。2、然后定义一个变量【result】,如下图所示。3、然后输入if判断语句,就可以写下程序的关键语句,如下图所示。4、接下来就可以调用输出,如下图所示。5、最后点击运行,如下图所示,就可以运行测试。

相似回答
大家正在搜