1 条题解

  • 1
    @ 2023-10-26 13:12:43

    需要注意的几个点:

    • 当输入出现混合情况,尤其是字符的时候,需要根据情况分析,是否需要加空格,例如本题目中,输入为 a b +,其中加号前面有空格,需要缓冲掉,使用scanf("%d%d %c",&a,&b,&c); 否则会将空格赋值给变量c。
    • 输出格式为运算表达式的中缀形式以及向零取整的结果,中间用空格隔开。
    • a,b[109,109],ab[1018,1018]a,b\in [-10^9,10^9], a*b\in [-10^{18},10^{18}],需要开 long long.

    C语言

    #include<stdio.h>
    int main() {
    	int a,b; char c;
    	scanf("%d%d %c",&a,&b,&c);
    	switch (c) {
    		case '+':printf("%d + %d = %d",a,b,a+b); break;
    		case '-':printf("%d - %d = %d",a,b,a-b); break;
    		case '*':printf("%d * %d = %lld",a,b,(long long)a*b); break;
    		case '/':
                    if(b==0) printf("%d / %d = Divided by zero!",a,b);
                    else printf("%d / %d = %d",a,b,a/b);
                    break;
    		default:printf("%d %c %d = Invalid operator!", a, c, b);
    	} 
    	return 0;
    }
    

    C++

    可以考虑先输出中缀表达式后接 = 的内容,之后在输出结果,这样不容易出错。

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int N = 1e6 + 10, INF = 0x3f3f3f3f;
    
    int main() {
        int a, b; char c;
        cin>>a>>b>>c;
        cout<<a<<" "<<c<<" "<<b<<" = ";
        if (c == '+') cout<<a+b<<endl;
        else if (c == '-') cout<<a-b<<endl;
        else if (c == '*')cout<<1ll*a*b<<endl;
        else if (c == '/') {
            if (b == 0) cout<<"Divided by zero!\n";
            else cout<<a/b<<endl;
        } else {
            cout<<"Invalid operator!\n";
        }
        return 0;
    }
    

    Java

    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args){
            Scanner sc = new Scanner(System.in);
            long a = sc.nextLong();
            long b = sc.nextLong();
            char c = sc.next().charAt(0);
            switch(c){
                case '+': System.out.println(a + " + " + b + " = " + (a+b)); break;
                case '-': System.out.println(a + " - " + b + " = " + (a-b)); break;
                case '*': System.out.println(a + " * " + b + " = " + (a*b)); break;
                case '/':
                    if(b == 0){
                        System.out.println(a + " / " + b + " = " + "Divided by zero!");
                    }else{
                        System.out.println(a + " / " + b + " = " + (a/b));
                    }
                    break;
                default:
                    System.out.println(a + " "+c+" " + b + " = " + "Invalid operator!");
                    break;
            }
        }
    }
    
    • 1

    信息

    ID
    50
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    递交数
    811
    已通过
    129
    上传者