#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
/*
通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。
输入字符串的格式为:“操作数1 运算符 操作数2”,“操作数”与“运算符”之间以一个空格隔开。
补充说明:
1、操作数为正整数,不需要考虑计算结果溢出的情况。
2、若输入算式格式错误,输出结果为“0”。
要求实现函数:
void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr);
【输入】 pInputStr: 输入字符串
lInputLen: 输入字符串长度
【输出】 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长;
【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出
示例
输入:“4 + 7” 输出:“11”
输入:“4 - 7” 输出:“-3”
输入:“9 ++ 7” 输出:“0” 注:格式错误
*/
void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr)
{
int sum1 = 0, sum2 = 0;
char *x = const_cast<char *>(pInputStr);
char *a = x;//指向第一个字符
cout << "a--" << a << endl;
char *p = pOutputStr;
while (*x != ' ')
{
x++;
}
char *a1 = x-1;//指向末尾
cout << "a1--" << a1 << endl;
while (*x == ' ')
{
x++;
}
const char *b = x;//指向第二个字符
cout << "b--" << b << endl;
while (*x != ' ')
{
x++;
}
char *b1 =x-1;//指向末尾
cout <<"b1--" <<b1 << endl;
while (*x ==' ')
{
x++;
}
const char *c = x;//指向第三个字符
cout << "c--"<<c << endl;
char *c1 = a + lInputLen - 1;//指向末尾
cout << "c1--" << c1 << endl;
int i = 0;
if (a1== a)//数字1
{
sum1 = *a - '0';
cout << "sum1---" << sum1 << endl;
}
else
{
while ((a - 1) != a1)
{
int num = *a1 - '0';
num *= static_cast<int>(pow(10, i));
sum1 += num;
i++;
a1--;
}
cout << "sum1---" << sum1 << endl;
}
i = 0;
if (c1 == c)//数字2
{
sum2= *c - '0';
cout << "sum2---" << sum2 << endl;
}
else
{
while ((c - 1) != c1)
{
int num = *c1 - '0';
num *= static_cast<int>(pow(10, i));
sum2 += num;
i++;
c1--;
}
cout << "sum2---" << sum2<< endl;
}
if (b!=b1)
{
std::cout << "格式错误" << endl;
*pOutputStr ='0';
return;
}
else
{
switch (*b)
{
case '+':
{
int sum = sum1 + sum2;
cout << "sum-----" << sum << endl;
int i = 1;
while (sum>=10)//位数
{
i = 2;
}
while (sum >=0)
{
int k = sum % 10;
cout << "sum" << sum<< endl;
*(pOutputStr + i-1) = k + '0';
i--;
cout << "i---" << i << endl;
sum =(int) (sum / 10);
}
}
break;
case '-':
{
int sum = sum1 - sum2;
cout << "sum-----" << sum << endl;
if (sum >= 0)
{
int i = 0;
int n = 1;
while (sum >= n)//位数
{
n = n * 10;
i++;
cout << "i---" << i << endl;
}
while (sum >= 1)
{
int k = sum % 10;
cout << "sum" << sum << endl;
*(pOutputStr + i - 1) = k + '0';
i--;
cout << "i---" << i << endl;
sum = (int)(sum / 10);
}
}
else
{
int i = 0;
int n = 1;
sum *= (-1);
while (sum >= n)//位数
{
n = n * 10;
i++;
cout << "i---" << i << endl;
}
while (sum >= 1)
{
int k = sum % 10;
cout << "sum" << sum << endl;
*(pOutputStr + i ) = k + '0';
i--;
cout << "i---" << i << endl;
sum = (int)(sum / 10);
}
*p = '-';
}
}
break;
}
}
}
using namespace std;
void main()
{
char a[20] = { 0 };
char b[20] = { 0 };
gets(a);
int n = strlen(a);
arithmetic(a,n, b);
cout << b<<endl;
cout << a << " = " << b << endl;
cin.get();
}
通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。 输入字符串的格式为:“操作数1 运算符 操作数2”,“操作数”与“运算符”之间以一个空格隔开。 补充说明: 1、操作数为
最新推荐文章于 2020-09-19 15:57:29 发布