zoukankan      html  css  js  c++  java
  • 【9108】模拟数学计算器

    Time Limit: 10 second
    Memory Limit: 2 MB

    问题描述
    输入一个数学计算表达式,输出结果。(除法运算结果取整)

    Input

    文件输入仅一行,输入数学表达式

    Output

    输出数学表达式以及结果 

    Sample Input1

    1001+98
    

    Sample Output1

    1001+98=1099
    

    Sample Input2

    1001-98
    

    Sample Output2

    1001-98=903
    

    Sample Input3

    1001*98
    

    Sample Output3

    1001*98=98098
    

    Sample Input4

    1001/98
    

    Sample Output4

    1001/98=10

    【题解】

    这道题的测试点就是样例输入和输出。

    就是说只有一个运算符。而且还没负数。

    所以直接找到运算符的位置。

    然后获取运算符左边的数字。获取运算符右边的数字。就可以了。

    根据运算符做相应的运算就好了。

    要用到string类的函数。

    【代码】

    #include <cstdio>
    #include <stdlib.h>
    #include <string>
    #include <iostream>
    
    using namespace std;
    
    string s;
    
    int main()
    {
    	getline(cin,s);//直接整行读取。 
    	int i = 1;
    	while (s[i]>='0' && s[i] <='9') //找到操作符的位置 
    		i++;
    	string s1 = s.substr(0,i); //获取操作符左边的数字 
    	char key = s[i];//获取操作符 
    	s = s.erase(0,i+1);//连同操作符和操作符左边的数字全都删掉。 
    	int a = atoi(s1.c_str());//把左边的字符转换成数字 
    	int b = atoi(s.c_str());//右边的也转换成数字(因为左边被删掉了,所以就只剩下右边了) 
    	int c;
    	switch (key)//根据运算符,做相应的运算就可以了。 
    		{
    			case '+':
    				c = a+b;
    				break;
    			case '-':
    				c =a-b;
    				break;
    			case '*':
    				c = a*b;
    				break;
    			case '/':
    				c = a/b;
    				break; 
    		}
    	printf("%d%c%d=%d",a,key,b,c); //a和b的信息也都要输出。 
    	return 0;	
    }



  • 相关阅读:
    [BZOJ4631]踩气球
    [BZOJ1998][Hnoi2010]Fsk物品调度
    [BZOJ3624][Apio2008]免费道路
    [BZOJ1064][Noi2008]假面舞会
    [BZOJ4154][Ipsc2015]Generating Synergy
    [BZOJ1941][Sdoi2010]Hide and Seek
    [BZOJ2850]巧克力王国
    [BZOJ2683][BZOJ4066]简单题
    万年历(calendar)
    SACD ISO镜像中提取DSDIFF(DFF)、DSF文件
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7632339.html
Copyright © 2011-2022 走看看