我的开始的思路是先扫描括号,在括号里依次扫描×,/,+,-,将其两边的数进行运算。问题是但是数字可能不止一位,也可能是负数,要讲两个字符链接在一起运算不会操作。
字符串分割问题,如果你的输入有空格那就非常简单了,直接按照空格分割,没有的话就按照数字分割,并且将所有的-x看作一个数据
🍎问题描述:
假设求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,
例如:2+22+222+2222+22222
🍈问题分析:通过给出的问题描述可以发现,需要求和的第i项有i个a,所以可以假设第i项为temp,则第i+1项为temp*10+a;
🍔🍔代码实现:
#include<stdio.h>
int main()
{
int a = 0;
int n = 0;
int i = 0;
int sum = 0;
int tmp = 0;
scanf("%d%d", &a, &n);
for(i=0; i<n; i++)
{
tmp = tmp*10+a;
sum += tmp;
}
printf("%d\n", sum);
return 0;
}
我可以提供一个逆波兰表达式求值的算法,使用栈来实现。将中缀表达式转换成逆波兰表达式后进行求值,具体步骤如下:
这里提供一个简单的示例代码:
using namespace std;
bool IsOperator(const char& ch) { return ch == '+' || ch == '-' || ch == '*' || ch == '/'; }
bool IsDigit(const char& ch) { return ch >= '0' && ch <= '9'; }
int Calculate(char op, int num1, int num2) { switch (op) { case '+': return num1 + num2; case '-': return num1 - num2; case '*': return num1 * num2; case '/': if (num2 == 0) { cout