程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 字符串四則運算的實現

字符串四則運算的實現

編輯:C++入門知識

題目:有字符串表示的一個四則運算表達式,要求計算出該表達式的正確數值。 說明:1. 四則運算即加減乘除"+-*/"            2. 該表達式中的數字只能是1位(數值范圍0~9)       3.另若有不能整除的情況,按向下取整處理,eg: 8/3得出值為2。 例如:若有字符串"8+7*2-9/3",計算出其值為19。   代碼如下:

#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <assert.h>

int cal(int nNum1, char op, int nNum2)
{
	if(op == '+') 
	{
		return nNum1 + nNum2;
	}

	if(op == '-')
	{
		return nNum1 - nNum2;
	}

	if(op == '*')
	{
		return nNum1 * nNum2;
	}

	if(op == '/')
	{
		return nNum1 / nNum2;
	}
}

int calculate(int len, char *expstr)
{
	assert(expstr);
	if(len < 3)
	{
		return -1;
	}
	
	char *p = expstr;
	int nNum1 = p[0] - '0';
	char op = p[1];
	int nNum2 = p[2] - '0';
	p += 3;
	
	while(*p)
	{
		if(*p=='*' || *p=='/')
		{
			nNum2 = cal(nNum2, *p, p[1]-'0');
		}
		else
		{
			nNum1 = cal(nNum1, op, nNum2);
			op = *p;
			nNum2 = p[1] - '0';
		}
		p += 2;
	}
	
	return cal(nNum1, op, nNum2);
}

int main()
{
	//char str[] = "1+2*3/5-6*7";
	char str[] = "8+7*2-9/3";
	int res = calculate(strlen(str), str);
	printf("result: %d\n", res);
}


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved