zoukankan      html  css  js  c++  java
  • 华为笔试题12

    • 题目描述:

    实现一个正整数加、减、乘、除四则混合运算求值方法

    条件限定:

    1、 输入的四则运算式由'+','-','*','/'运算符及正整数组成;

    2、 无需考虑特殊字符,及除不尽的情况;

    3、 无需考虑运算符的优先级,加减乘除优先级一样,仅按照自左至右的顺序依次计算;

    4、 当遇到除数为0时,即刻返回当前已计算结果。

    • 要求实现函数:

    void CalCarithmeticRlt(const char *pInputStr, int *lOutputRlt);

    【输入】 pInputStr:  输入字符串

    【输出】 lOutputRlt: 输出计算结果

    【注意】不用考虑输入四则运算式非法情况

    • 示例

    输入:“2+1*4-2/5”

    输出:“2”

    #include "stdafx.h"
    #include <iostream>
    using namespace std;
    
    int calculate(int a,int b,char c)
    {
    	switch(c)
    	{
    	case '+':
    		return a+b;
    	case '-':
    		return a-b;
    	case '*':
    		return a*b;
    	case '/':
    		return a/b;
    	}
    }
    int _tmain(int argc, _TCHAR* argv[])
    {
    	char str[]="289+100*7-2/8";
    	int number[5]={0};
    	char sign[5];
    	int i=0,j=0;
    	int temp=0;
    	int count=0;
    	
    	while(j<strlen(str))
    	{
    		temp=0;
    		while(('0'<=str[i])&&(str[i]<='9')&&i<strlen(str))
    		{
    			temp=10*temp+str[i]-'0';
    			++i;
    		}
    		sign[count]=str[i];
    		number[count++]=temp;		
    		j=i;
    		i++;
    	}
    	
    	cout<<number[0]<<" "<<number[1]<<" "<<number[2]<<" "<<number[3]<<" "<<number[4]<<endl;
    	cout<<sign[0]<<" "<<sign[1]<<" "<<sign[2]<<" "<<sign[3]<<" "<<sign[4]<<endl;
    
    
    	int result=0;
    	temp=number[0];
    	for(int i=0;i<5;i++)
    	{
    		
    		temp=calculate(temp,number[i+1],sign[i]);
    		if(4==i)
    			break;
    		
    		cout<<temp<<endl;
    	}
    	
    //	cout<<temp;
    	return 0;
    }
    

      

     

  • 相关阅读:
    Nginx是如何配置为 Web 服务器的【转载】
    BeanUtil工具类的使用
    数据库:XML,解析Dom4J
    jsp简单标签开发
    Java 反射 使用总结
    JAVA 对象序列化——Serializable
    使用Session防止表单重复提交
    EasyUi模糊匹配搜索框combobox
    Cookie工作原理
    COOKIE和SESSION有什么区别?
  • 原文地址:https://www.cnblogs.com/xd-jinjian/p/3277217.html
Copyright © 2011-2022 走看看