华为机试 - 计算字符串表达的运算

华为OD机试新系统真题 【简单表达式计算】 华为OD机试 新系统真题【简单表达式计算】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【简单表达式计算】题解 阅读详情
通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。
输入字符串的格式为:“操作数1 运算符 操作数2”,“操作数”与“运算符”之间以一个空格隔开。


补充说明:
1. 操作数为正整数,不需要考虑计算结果溢出的情况。
2. 若输入算式格式错误,输出结果为“0”。


要求实现函数: 
void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr);


【输入】 pInputStr: 输入字符串
lInputLen: 输入字符串长度 

【输出】 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长;

#include <iostream>
#include <cstdio>
#include <string>
#include <cstdlib>
using namespace std;

void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr)
{
	if(pInputStr==NULL||lInputLen==0) return;
	int num1=0,num2=0;
	int i=0;
	for (;i<lInputLen;i++)
	{
		if(pInputStr[i]>='0'&&pInputStr[i]<='9'||pInputStr[i]==' ')
		{
			if(pInputStr[i]!=' ')
				num1=num1*10+pInputStr[i]-'0';
			else
			{
				i++;
				break;
			}
		}
		else
		{
			pOutputStr[0]='0';
			return;
		}
	}
	char op;
	if(pInputStr[i]=='+'||pInputStr[i]=='-'||pInputStr[i]=='*'||pInputStr[i]=='/')
	{
		op=pInputStr[i];
		i++;
	}
	else
	{
		pOutputStr[0]='0';
		return;
	}
	if(pInputStr[i++]==' ')
	{
		for(;i<lInputLen;i++)
		{
			if(pInputStr[i]>='0'&&pInputStr[i]<='9')
				num2=num2*10+pInputStr[i]-'0';
			else
			{
				pOutputStr[0]='0';
				return;
			}
		}
	}
	else
	{
		pOutputStr[0]='0';
		return;
	}
	int result=0;
	switch (op)
	{
	case '+':result=num1+num2;break;
	case '-':result=num1-num2;break;
	case '*':result=num1*num2;break;
	case '/':result=num1/num2;break;
	default:
		break;
	}
	itoa(result,pOutputStr,10);
}
int main()
{
	long inputLen;
	cin>>inputLen;
	char *str=new char[inputLen]();
	char *strOut=new char[inputLen]();
	cin.get();
	gets(str);
	arithmetic(str,inputLen,strOut);
	cout<<strOut<<endl;
	system("pause");
	return 0;
}


华为OD机试Golang解题 - 火星文计算 2 | 包含思路 该程序通过正则表达式从输入字符串中提取数字和运算符,将数字存入一个整数数组中,然后执行两个自定义的运算,其中 sharp(x, y) 返回 4x + 3y + 2,dollar(x, y) 返回 2*x + y + 3。如果在操作符数组中找到了 #,则表示需要对两个相邻的数字执行 sharp 运算,将结果存回数组中,同时删除该位置的操作符和第二个数字。最后执行完所有运算符,数组中剩下的数字即为最终结果,输出即可。如果想要在华为od机试中获取高分,一定要不要完全背诵代码,需要理解之后模仿写出,分数才会高。 阅读详情

相关推荐

【华为OD机试】2024年真题C卷(Python)-提取字符串中的最长数学表达式并计算

【华为OD机试】2024年真题C卷(Python)-提取字符串中的最长数学表达式:提取字符串中的最长合法简单数学表达式,字符串长度最长的,并计算提取字符串中的最长合法简单数学表达式,字符串长度最长的,并计算表达式的值。如果没有,则返回0 简单数学表达式只能包含以下内容 0-9数字,符号 +-*说明:1. 所有数字,计算结果都不超过long2. 如果有多个长度一样的,请返回第一个表达式的结果3. 数学表达式,必须是最长的,合法的4. 操作符不能连续出现,

u014481728的博客 5979

HUAWEI 机试题:火星文计算

???? Scala 实现 题目描述: 已知火星人使用的运算符为#、$,其与地球人的等价公式如下: x#y = 2x+3y+4 x$y = 3*x+y+2 其中x、y是无符号整数 地球人公式按C语言规则计算 火星人公式中,$的优先级高于#,相同的运算符,按从左到右的顺序计算 现有一段火星人的字符串报文,请你来翻译并计算结果。 输入描述: 火星人字符串表达式(结尾不带回车换行) **输入的字符串说明: ** 字符串为仅由无符号整数和操作符(#、$) 组成的计算表达式。例如:1

weixin_47243236的博客 6701

华为OD机试 C++ -提取字符串中的最长合法简单数学表达式

提取字符串中的最长合法简单数学表达式,字符串长度最长的,并计算表达式的值。如果没有,则返回 0 。 简单数学表达式只能包含以下内容: •0-9数字,符号±* 说明: 1.所有数字,计算结果都不超过long 2.如果有多个长度一样的,请返回第一个表达式的结果 3.数学表达式,必须是最长的,合法的 4.操作符不能连续出现,如 ±-+1 是不合法的

2302_77831730的博客 430

华为机试 - 火星计算器

火星计算器:    火星人使用运算符:@ # $ &    优先级为:@ > # > $ > &        X@Y = (X+1)*(Y+2)    X#Y = (2X+3)*(3Y+4)    X$Y = (3X+11)*(2Y+7)    X&Y = (5X+20)*(4Y+1)        X#Y@Z = X#(Y@Z)        编写火星计算器程序,计算火星

小熊糖否——木子兮的自留地 4769

华为OD机试题,用 Java 解【火星文计算】问题

用于解析一个字符串,其中包含#和$符号,通过题目的逻辑并计算出字符串的值。它使用了递归数据结构,考察了字符串处理、字符串操作、字符串拆分和字符串解析等知识点,非常简单。参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。为原创内容,该部分版权由 OD 联盟共同拥有,并授权组内成员发布。输入的字符串说明是 字符串为仅有无符号整数和操作符组成的计算表达式。火星文计算 2 。火星人字符串表达式结尾不带回车换行。其与地球人的等价公式如下。

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 5714

【华为OD机试真题 C++语言】475、火星文计算2 | 机试真题+思路参考+代码解析(C卷)

题目描述   已知火星人使用的运算符为#、$,其与地球人的等价公式如下: x#y = 4*x+3*y+2 x $ y = 2*x+y+3   其中 x、y 是无符号整数,地球人公式按C语言规则计算,火星人公式中,#的优先级高于$,相同的运算符,按从左到右的顺序计算,现有一段火星人的字符串报文,请你来翻译并计算结果。 -----

KJ.JK 4235

2017华为机试(仿LISP字符串运算)

[编程|300分] 仿LISP字符串运算  题目描述  LISP语言唯一的语法就是括号要配对。  形如 (OP P1 P2 …),括号内元素由单个空格分割。  其中第一个元素OP为操作符,后续元素均为其参数,参数个数取决于操作符类型  注意:参数 P1, P2 也有可能是另外一个嵌套的 (OP P1 P2 …)  当前OP类型为add/sub/mul/div(全小写),分别代表整数的加

Mango_Mangoes的博客 4634

如何在华为OD机试中获得满分?Java实现【四则运算】一文详解!

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Java华为OD机试真题(2022&2023) 输入一个表达式(用字符串表示),求这个表达式的值。保证字符串中的有效字符包括。且表达式一定合法。数据范围:表达式计算结果和过程中满足,字符串长度满足 。输入一个算术表达式。得到计算结果。 5. 测试

陈书予 305

华为机试简单四则运算

简单四则运算 • 问题描述:  输入一个只包含个位数字的简单四则运算表达式字符串,计算该表达式的值注: 1、表达式只含 +, -, *, / 四则运算符,不含括号 2、表达式数值只包含个位整数(0-9),且不会出现0作为除数的情况 3、要考虑加减乘除按通常四则运算规定的计算优先级 4、除法用整数除法,即仅保留除法运算结果的整数部分。比如8/3=2。输入表达式保证无0作为除数情况发生 5、输入字

gucheng3116的专栏 1419

【华为OD机试】真题B卷-火星文计算(JAVA)

已知火星人使用的运算符为#、$,其与地球人的等价公式如下: x#y = 4*x+3*y+2 x$y = 2*x+y+3。3、火星人公式中,#的优先级高于$,相同的运算符,按从左到右的顺序计算 现有一段火星人的字符串报文,请你来翻译并计算结果。输入的字符串说明: 字符串为仅由无符号整数和操作符(#、$)组成的计算表达式。例如:123#4$5#67$78。4、保证输入的字符串为合法的求值报文,例如:123#4$5#67$78。#4$5 //缺少操作数。4$5# //缺少操作数。4 $5 //有空格。

u014481728的博客 1227

华为OD机试 - 最长合法表达式 - 正则表达式、栈(Java 2024 E卷 100分)

主要依赖栈来处理表达式的分块计算,并使用 正则表达式 来提取输入中的合法表达式。

学Java,找哪吒 706

字符串四则运算表达式的计算(华为机试)

最近做了一道华为的机试题。感觉自己的方法比网上的简洁。 3. 简单四则运算 问题描述: 输入一个只包含个位数字的简单四则运算表达式字符串,计算该表达式的值 注 1、表达式只含 +, -, *, / 四则运算符,不含括号 2、表达式数值只包含个位整数(0-9),且不会出现0作为除数的情况 3、要考虑加减乘除按通常四则运算规定的计算优先级 4、除法用整数除法,即仅保留除法运算结果的整数

sicofield的专栏 1万+

c++实现数学表达式的四则运算

c++实现浮点数的四则运算,有兴趣的同学可以多实现几个运算符

华为机试HJ50 四则运算

华为机试HJ50 四则运算 题目描述 请实现如下接口 /* 功能:四则运算 * 输入:strExpression:字符串格式的算术表达式,如: “3+2*{1+2*[-4/(8-6)+7]}” * 返回:算术表达式的计算结果 / public static int calculate(String strExpression) { / 请实现*/ return 0; } 输入描述: 输入一个算术表达式 输出描述: 得到计算结果 示例1 输入 3+2*{1+2*[-4/(8-6)+7]} 输出 25 #inc

qq_39299692的博客 631

Cadence Spectre仿真保姆级教程:从DC/AC到PSS/PV,手把手教你搞定模拟电路分析

作为业界标准的Cadence Spectre仿真器,以其精确的算法和丰富的分析类型,成为每个模拟IC工程师必须掌握的利器。本文将带你从零开始,系统掌握Spectre仿真的核心技能,从最基础的DC工作点分析到复杂的PSS相位噪声仿真,每个步骤都配有详细的操作指导和实用技巧。记得我第一次使用Spectre仿真一个简单的两级运放时,花了整整三天时间才得到正确的AC响应曲线。过程中踩过的坑、浪费的时间,现在想来都是宝贵的学习资源。与传统的AC分析不同,STB分析可以在不破坏环路的情况下评估稳定性。

weixin_30898555的博客 335

deepfake detection数据集

最全Deepfake数据集总结,包含各个数据集下载链接: https://github.com/deepfakeinthewild/deepfake_in_the_wild Dataset name Download Generate method Deepfake videos Actors Deepfake-TIMIT low download De...

where_is_horse的博客 1万+

华为机试HJ54 表达式求值

首先看一下题。

bingw0114的博客 1298

LDPC码介绍:基础&编码&译码

本博客介绍了LDPC码的基本原理,其中包括校验矩阵的构造、Tanner 图和编译码的基础知识。

渺小的颗星的博客 4309

华为机试-050-中等-HJ50.四则运算

【代码】华为机试-050-中等-HJ50.四则运算

tttzzzqqq2018的博客 254

Tessent_StdcellLib

第二种为 Tessent Cell lib,既可用于功能仿真,也可以用于测试逻辑插入。lib包含了用于仿真的功能信息,也包含DFT cell属性。如何使用tessent工具将stdcell verilog 仿真模型转换为tessent自己的lib。运行后工具会生成一个atpg的lib文件,打开文件,找到一个带SI的DFF,只有功能描述。tessnt lib分为两种,第一种为ATBG lib,可以用于仿真;打开生成的lib文件,多了dft_cell_selection。第二部:编写attributes文件。

qq_40411444的博客 2135

f2fs学习笔记 - 3. F2FS文件系统布局

目录1.前言2.F2FS布局说明2.1. super block(block 0x0 ~ block 0x1ff)2.2 CP(block 0x200 ~ block 0x5ff)cp page1nat journalsit journaldata summarycurrent hot node summarycurrent warm node summarycurrent cold node summarycp page22nd checkpoint2.3 SIT(block 0x600 ~ block

HZero 4645
上一篇: 华为机试 - 字符串去重复字节/字符串去连续重复字节
下一篇: 华为机试 - 子串分离
JerkWisdom
博客等级 码龄14年 70粉丝 76原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值