n磕代码:c/c++/java:输入数字和运算符,输出运算结果;split用法;switch case用法;double和float的精度哪个高

本文介绍了如何使用C++编程实现一个简单的算术表达式解析器,支持加减乘除操作,并处理除以零的错误。通过`scanf`转换为`double`类型,展示了`switch-case`结构的使用以及浮点数精度控制。
摘要由CSDN通过智能技术生成

在这里插入图片描述
在这里插入图片描述
c:

#include<stdio.h>
int main(){
    double a,b;
    char c;
    while(scanf("%lf%c%lf",&a,&c,&b)!=EOF){
        if(c=='+'||c=='-'||c=='*'||c=='/'){
            switch(c){
            case '+':printf("%.4f%c%.4f=%.4f\n",a,c,b,a+b);break;
            case '-':printf("%.4f%c%.4f=%.4f\n",a,c,b,a-b);break;
            case '*':printf("%.4f%c%.4f=%.4f\n",a,c,b,a*b);break;
            case '/':
            if(b==0)printf("Wrong!Division by zero!\n");
            else printf("%.4f%c%.4f=%.4f\n",a,c,b,a/b);break;
            }
        }
        /**if(b==0){
            printf("Wrong!Division by zero!");
        }
        else if(c=='+'||c=='-'||c=='*'||c=='/'){
            printf("%.4f%c%.4f=%.4f",a,c,b,a);
        }**/
        else{
            printf("Invalid operation!\n");
        }
    }
}
//用float通过率90%,精度不够,改成double后输入要变成“%lf",java默认用double,参考
//https://blog.csdn.net/marcotsui/article/details/108880017;switch case的
//使用,要加break,switch后面要加大括号;

c++:

#include<bits/stdc++.h>
using namespace std;
int main(){
    double a,b;
    char c;
    while(cin>>a>>c>>b){
        if(c=='+'||c=='-'||c=='*'||c=='/'){
            switch(c){
               
                case '+':cout<<fixed<<setprecision(4)<<a<<'+'<<b<<'='<<a+b;break;
                case '-':cout<<fixed<<setprecision(4)<<a<<'-'<<b<<'='<<a-b;break;
                case '*':cout<<fixed<<setprecision(4)<<a<<'*'<<b<<'='<<a*b;break;
                case '/':
                    if(b==0) cout<<"Wrong!Division by zero!";
                    else cout<<fixed<<setprecision(4)<<a<<'/'<<b<<'='<<a/b;break;
            }
        }
        else
            cout<<"Invalid operation!";
        cout<<endl;
    }
    //cout有效数字的保留;cout运算符的表示
}

Java:

import java.io.*;
public class Main{
    public static void main(String[]args)throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        String s;
        //double a,b;
        //char c;
        while((s=br.readLine())!=null){
            String[] sa=s.split("[+\\-*/]");//符号分割,\\表示转义
            if(sa.length < 2) {
                System.out.println("Invalid operation!");
                continue;
            }
            double a=Double.parseDouble(sa[0]);
            double b=Double.parseDouble(sa[1]);
            char c=s.charAt(sa[0].length());//获取字符的位置
            if(c=='+'||c=='-'||c=='*'||c=='/'){
                switch(c){
                        case '+':System.out.printf("%.4f%c%.4f=%.4f\n",a,c,b,a+b);break;
                        case '-':System.out.printf("%.4f%c%.4f=%.4f\n",a,c,b,a-b);break;
                        case '*':System.out.printf("%.4f%c%.4f=%.4f\n",a,c,b,a*b);break;
                        case '/':
                        if(b==0)System.out.printf("Wrong!Division by zero!\n");
                        else System.out.printf("%.4f%c%.4f=%.4f\n",a,c,b,a/b);break;
            }
        }
             else{
                System.out.printf("Invalid operation!\n");
        }
        }
    }
}
//没a出来;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值