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;
    }
    

      

     

  • 相关阅读:
    Python制作天气查询软件【python实战必学】
    Python妹子图爬虫实战项目【新手必学】
    Python超级无敌技巧分享
    PlaySound使用进阶
    【】2019
    【】风之忧伤
    delete[]和delete
    《windows程序设计 第五版》实例
    playsound函数用法
    【Python入门自学笔记专辑】——Python跳转语句和循环使用范围
  • 原文地址:https://www.cnblogs.com/xd-jinjian/p/3277217.html
Copyright © 2011-2022 走看看