.net上机第一题 - 简单的字符串运算
来源:互联网 发布:多人通话软件 编辑:程序博客网 时间:2024/05/22 12:14
其实这道题不难,但很多同学空着只写了个main(),让我感到很惊讶!
步骤:首先得定义一个去空格的函数,再有一个判断格式错误的函数,然后才是计算。计算已经很简单,去掉了除(/)这种情况,而且将操作数定义为1~9的正整数。
难点:istringstream字符串输入流用法
刚开始想利用char转int来做,但发现时间复杂度会超时。使用istringstream可以解决这个问题,再定义两个vector分别存放操作数和符号
PS: zjut1034题很像,只是多了去除空格,和格式判断
链接:http://cpp.zjut.edu.cn/ShowProblem.aspx?ShowID=1034
附上源代码(C++):
#include <iostream>#include <fstream>#include <sstream>#include <string>#include <vector>using namespace std;string Space_Remove(string str){ // 去除空格string re_str;for(int i=0;i<str.length();i++){if(str[i] != ' '){re_str += str[i];}}return re_str;}bool Format_Check(string str){ // 检查输入格式bool flag = true;for(int i=0;i<str.length();i=i+2){if(str[i]<'1' || str[i]>'9'){flag = false;break;}}for(int i=1;i<str.length()-1;i=i+2){if(str[i]!='*' && str[i]!='-' && str[i]!='+' && str[i]!='/'){flag = false;break;}}return flag;}void main(){string str;while(getline(cin,str)){str = Space_Remove(str);cout<<str<<endl;if(!Format_Check(str)){cout<<"#\n";}else {istringstream sin(str); // 定义一个istringstream(字符串输入流)对象sin,并将str的值存储在sin中vector<int> num;vector<char> sign;char ch;int a;sin>>a; // 字符串的读取,只读取整数,遇到符号停止读取num.push_back(a);while(sin>>ch>>a){ // 先计算"*" 和 "/"if(ch=='*'){num.back() *= a;}else if(ch=='/'){if(a!=0){num.back() /= a;} // 因为a取1~9,所以被除数为0不用考虑else {cout<<"error!\n";exit(0);}}else {num.push_back(a);sign.push_back(ch);}}int sum = num[0];for(int i=0;i<sign.size();i++){ // 后计算"+" 和 "-"if(sign[i]=='+'){sum += num[i+1]; }else {sum -= num[i+1];}}cout<<sum<<endl;}}}
0 0
- .net上机第一题 - 简单的字符串运算
- 简单的字符串运算
- 探讨两道.Net关于字符串的上机题
- 我的第一个C++上机报告(简单输出)
- BIT2010上机第一题
- VC++.net 的第一个简单例子
- 第一个APP:IOS做简单运算的计算器
- 上机题-字符串反转
- 第一题 赋值运算符的重载
- asp.net中将一个随机的运算公式字符串转变为运算公式进行运算
- 异或运算实现简单的字符串加密
- 异或运算实现简单的字符串加密和解密
- 上机课要做的第一件事儿
- 我的第一个C++上机报告
- 我的第一个C++上机报告
- 我的第一个c++上机报告
- 我的第一个C++上机报告
- 我的第一个c++上机报告
- [wordpress搬家]nutch的二三事 — 数据清洗
- 東京喰種_经典台词中日双语6
- iOS开发- 日志打印(常见)
- Mac下启动和停止Mysql服务
- [wordpress搬家]软件推荐 — Genymotion
- .net上机第一题 - 简单的字符串运算
- 《Xilinx可编程逻辑器件设计与开发(基础篇)》连载21:Spartan-6的时钟资源
- 汇编语言子函数——显示字符串
- Android Margin, Padding, Gravity属性用法
- iOS 企业版打包
- NSArray的遍历方法:四种
- linux中用date命令获取昨天、明天或多天前后的日期
- Android 反射调用资源和id
- 黑马程序员_多线程