通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。 输入字符串的格式为:“操作数1 运算符 操作数2”,“操作数”与“运算符”之间以一个空格隔开。 补充说明: 1、操作数为
2016-09-05 16:49
1171 查看
#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以内正整数的加、减运算式,请编写一个程序输出运算结果字符串
- 华为:通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串
- 华为机试通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串
- 华为:通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串
- (华为机考题)通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。
- 通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。
- 通过键盘输入100 以内正整数的加、减运算式,请编写一个程序输出运算结果字符串
- 通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。
- 机试题:过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。
- 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。
- (1)写一个程序,用于分析一个字符串中各个单词出现的频率,并将单词和它出现的频率输出显示。(单词之间用空格隔开,如“Hello World My First Unit Test”); (2)编写单元测试进行测试; (3)用ElcEmma查看代码覆盖率,要求覆盖率达到100%。
- 通过键盘输入100以内正整数的加、减运算式,算出结果
- 从键盘上输入一个后缀表达式,试编写算法计算表达式的值。规定:逆波兰表达式的长度不超过一行,以$符作为输入结束,操作数之间用空格分隔,操作符只可能有+、-、*、/四种运算。例如:234 34+2*$。
- 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。 比如字符串“abacacde”过滤结果为“abcde”。
- 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。 压缩规则: 1、仅压缩连续重复出现的字符。比如字符串"abcbc
- 华为上机笔试之通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。
- 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。
- 从键盘上输入一个后缀表达式,试编写算法计算表达式的值。规定:逆波兰表达式的长度不超过一行,以$符作为输入结束,操作数之间用空格分隔,操作符只可能有+、-、*、/四种运算。例如:234 34+2*$。
- 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。 比如字符串“abacacde”过滤结果为“abcde”。 要求实现函
- 编写一个函数,由实参传来一个字符串,统计此字符串中字母,数字,空格,和其他字符的个数,在主函数中输入字符串以及输出上述统计的结果。再考虑将算的的结果放在一个数组中