文档章节

牛客网-华为-2020届校园招聘上机考试-软件类机考-1

o
 osc_y8yehimr
发布于 2019/03/20 21:39
字数 510
阅读 3
收藏 0

钉钉、微博极速扩容黑科技,点击观看阿里云弹性计算年度发布会!>>>

题目描述: 要开发一款教育类App,帮助幼儿在识数阶段做一百以内自然数[0,99]的加减法。 屏幕上会显示“1”“2”“3”“4”“5”“6”“7”“8”“9”“0”“+”“-”“=”这些按钮,用户在按了若干按钮之后,如果按了“=”,则会把按“=”之前的字符作为一个算式,计算结果。 中间结果或最后结果可以为负数。

输入描述: 输入为一个字符串,形如“23+86-6+37+24-8-13”. 输入字符串中保证: 1、不会包含除“1”“2”“3”“4”“5”“6”“7”“8”“9”“0”“+”“-”“=”之外的字符; ……(忘记了,应该是类似于输入算术合理等描述)

例子:(自己编写) 输入:1+3+32-4-17 输出:25<br><br>

1.思考

  • 较为简单的题目。
  • 先用getline()将输入放置在字符串中;
  • 然后利用自己的函数Apart()函数将数字字符和运算字符“+”、“-”字符分开,分别存放在vector中;
  • 其中数字字符再通过自己的函数StringToNum()将其转换为int型数;
  • 最后进行数字之间的加减运算。<br><br>

2.实现

  • 整个编程、调试和提交差不多是25min,所以题目是相对简单的。<br>
#include <iostream>
#include <vector>
#include <string>
#include<algorithm>
#include <stdio.h>
#include <limits.h>
using namespace std;

void Apart(string s, vector<string>& n, vector<string>& f)
{
	int pos1, pos2;	
	while (1){
		pos1 = s.find("+");
		pos2 = s.find("-");
		if (pos1 > 0 && pos2 > 0){
			n.push_back(s.substr(0, min(pos1, pos2)));
			f.push_back(pos1<pos2 ? "+" : "-");
			s = s.substr(min(pos1, pos2) + 1);
		}
		else if (pos1 > 0 && pos2 < 0){
			n.push_back(s.substr(0, pos1));
			f.push_back("+");
			s = s.substr(pos1 + 1);
		}
		else if (pos1 < 0 && pos2 > 0){
			n.push_back(s.substr(0, pos2));
			f.push_back("-");
			s = s.substr(pos2 + 1);
		}
		else{
			n.push_back(s);
			break;
		}
	}
}

void StringToNum(vector<string> n, vector<int>& num)
{
	string str;
	int sum = 0;
	for (auto s : n){
		sum = 0;
		int len = s.size();
		for (auto i : s){
			sum = sum*10 + (i - '0');
		}
		num.push_back(sum);
	}
}

int main(){
	string input;
	vector<string> n, f;
	vector<int> num;

	while (getline(cin, input)){
		n.clear();
		f.clear();
		num.size();

		Apart(input, n, f);
		StringToNum(n, num);
		f.insert(f.begin(), "+");

		int len = num.size(), sum = 0;
		for (int i = 0; i < len; i++){
			if (f[i] == "+"){
				sum += num[i];
			}
			else if (f[i] == "-"){
				sum -= num[i];
			}				
		}
		cout << sum << endl;
	}

	return 0;
}
o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
牛客网-华为-2020届校园招聘上机考试-软件类机考-3

题目描述:Apache Hadoop YARN是一种新的Hadoop资源管理器,主要部件为resource manager和node manager。resource manager使用有限状态机维护有状态对象的生命周期。RmAppAttempt是resource ...

osc_3fzeg1rk
2019/03/20
1
0
工作信息汇总

C++ 牛客网 letcode 剑指offer 算法 2019-04-05 09:28:01 今日睿思校园招聘 [机器喵自动获取,仅供参考] -------------------- 去哪儿网实习生内推﹝详细信息﹞: http://tinyurl.com/yxd9ax...

osc_tvqwfyak
2019/03/18
0
0
史上最全2019届秋招备战攻略

2017秋季校园招聘笔经面经专题汇总 转眼间已是六月!19届同学们的最后一个暑假即将到来! 但是,与以往的暑假不同, 在这个暑假中,你们会遇到高考之后第二个人生转折点!! 秋招来了! 相信...

osc_a9fd007s
2018/06/11
9
0
牛客网-华为-2020届校园招聘上机考试-软件类机考-2

题目描述:输入一个字符串(不含空格), 请寻找输入中包含所有蛇形字符串。蛇形字符串定义:1.蛇形字符串由连续字符对组成,其特点如下:1.1 字符对定义:字符对由同一字母的大写和小写组成...

osc_3fzeg1rk
2019/03/20
5
0
干货,程序员手机必须有的APP

1.CSDN 用途:技术难题解答 CSDN APP是全球最大的IT中文社区,这一点应该没有人想反驳吧?程序员在程序开发中遇到了技术难题,可以跳过你们的技术总监,直接来CSDN APP,在这里都会有牛人随时...

李元宝99
2019/07/13
8
0

没有更多内容

加载失败,请刷新页面

加载更多

java架构师成长路线-高并发网络编程的分类

鲁班学院java架构师成长路线 随着互联网时代的到来,高并发网络编程这一新鲜名词早已跃然于纸上,为了满足大众眼光的需求,我为大家找了些关于高并发网络编程方面的资料,本文便来介绍高并发...

osc_o494ayqf
9分钟前
0
0
python dict乱码如何解决

定义字典并直接输出,结果输出结果中文是乱码展示 d={'name':'lily','age':18,'sex':'女','no':1121}print d 输出结果: {'age': 18, 'no': 1121, 'name': 'lily', 'sex': '\xe5\xa5\xb3'}...

osc_9mjo6c4e
10分钟前
0
0
硬肝50天,18w字的实战编程资料《重学Java设计模式》终于 出炉了

沉淀、分享、成长,让自己和他人都能有所收获! 一、前言 作者从5月20日那天投身实战型设计模式打磨,通过模拟互联网业务开发实际需求作为学习场景,讲解设计模式。 全书共计22个真实业务场景...

osc_zls6dx9i
12分钟前
20
0
怎么才能让Spring AOP有最大的作用--乐字节java

Spring AOP 日志处理带来的问题 我们有一个Pay(接口) 然后两个实现类DollarPay和RmbPay,都需要重写pay()方法, 这时我们需要对pay方法进行性能监控,日志的添加等等怎么做? 最容易想到的方法...

osc_sb30h1xb
13分钟前
10
0
Python 实现将numpy中的nan和inf,nan替换成对应的均值

nan:not a number inf:infinity;正无穷 numpy中的nan和inf都是float类型 t!=t 返回bool类型的数组(矩阵) np.count_nonzero() 返回的是数组中的非0元素个数;true的个数。 np.isnan() 返回b...

osc_sfl7wfr9
15分钟前
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部