机试题:过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。
2016-09-02 15:43
981 查看
问题描述:通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。
输入字符串的格式为:“操作数1 运算符 操作数2”,“操作数”与“运算符”之间以一个空格隔开。
补充说明: 1. 操作数为正整数,不需要考虑计算结果溢出的情况。 2. 若输入算式格式错误,输出结果为“0”。
示例:
输入:“4 + 7”
输出:“11”
输入:“4 - 7”
输出:“-3”
输入:“9 ++ 7”
输出:“0” 注:格式错误
输入字符串的格式为:“操作数1 运算符 操作数2”,“操作数”与“运算符”之间以一个空格隔开。
补充说明: 1. 操作数为正整数,不需要考虑计算结果溢出的情况。 2. 若输入算式格式错误,输出结果为“0”。
示例:
输入:“4 + 7”
输出:“11”
输入:“4 - 7”
输出:“-3”
输入:“9 ++ 7”
输出:“0” 注:格式错误
#include <iostream> #include "string" #include <sstream> using namespace std; //将string型数字转换成int型,并计算结果 void convert_str_to_int_and_computer(string *scr,string *dst) { int int_temp1 = 0; int int_temp2 = 0; int res = 0; //1 运算的第一位 string str_temp1 = *scr; stringstream ss_temp1;//利用stringstream将int数字转成成string //2 运算符 string operator_flag = *(scr+1); //3 运算的第二位 string str_temp2 = *(scr+2); stringstream ss_temp2; //4 结果 stringstream res_temp1; //将string型数字转成int型 int_temp1 = atoi(str_temp1.c_str()); int_temp2 = atoi(str_temp2.c_str()); /*/利用原始方法将string型数字转成int型 for (int i = 0; i < str_temp1.length(); i++) { int_temp1 = int_temp1 + (int)(str_temp1[i]-'0')*pow(10,str_temp1.length()-i-1); } for (int j = 0; j < str_temp2.length(); j++) { int_temp2 = int_temp2 + (int)(str_temp2[j]-'0')*pow(10,str_temp2.length()-j-1); }*/ ss_temp1<<int_temp1; ss_temp1>>*(dst); *(dst+1) = operator_flag; ss_temp2<<int_temp2; ss_temp2>>*(dst+2); if (operator_flag == "+") { res = int_temp1 + int_temp2; }else if (operator_flag == "-") { res = int_temp1 - int_temp2; }else { res = 255; } res_temp1<<res; res_temp1>>*(dst+3); } void main() { //存储输入数据 string str; //存储去掉空格后的数据 string str_array[3]; //存储最终结果 string res_array[4]; getline(cin,str); int str_array_index = 0;//str_array[]索引 for (int i = 0; i < str.length(); i++) { string temp = ""; int step = 0; for (int j = 0; ' '!=str[i+j]&& (i+step)<str.length(); j++) { temp = temp+str[i+j]; step++; } if (""!=temp) { str_array[str_array_index] = temp; str_array_index++; } i = i +step;//这一步很重要 } //条用函数计算 convert_str_to_int_and_computer(str_array,res_array); //输出结果 if ("255"!=res_array[3]) { cout<<res_array[0]<<" "<<res_array[1]<<" "<<res_array[2]<<" = "<<res_array[3]<<endl; }else { cout<<"运算符错误,请重新输入!"<<endl; } cin.get(); }