【无标题】

#include<stdio.h>
#include<math.h>
#define EPSILON 1E-6

//计算并输出两个不等实根
void fun1(double a,double b,double c)
{
    double x1,x2;
    
    int s=b*b-4*a*c;
    if(s>0){
        x1=((0-b)+sqrt(s))/(2.0*a);
        x2=((0-b)-sqrt(s))/(2.0*a);
    }
    printf("方程有两个不等实根:%.2f,%.2f\n",x1,x2);

}

//计算并输出两个相等实根
void fun2(double a,double b,double c)
{
    double x1,x2;
    int s=b*b-4*a*c;
    if(s==0){
        x1=(0-b)/(2*a);
        x2=(0-b)/(2*a);
    }
    printf("方程有两个相等的实根:%.2lf,%.2lf",x1,x2);
}

//计算并输出两个共轭复根
void fun3(double a,double b,double c)
{
    double p,q;
    int s=b*b-4*a*c;
    if(s<0){
        p=(0-b)/(2*a);
        q=sqrt(0-s)/(2*a);
    }
    printf("方程有两个共轭复根:%.2lf+%.2lfi,%.2lf-%.2lfi\n",p,q,p,q);
}

//计算方程的根
void fun(double a,double b,double c)
{
    double delta=b*b-4*a*c;
    if(fabs(delta)>EPSILON){
        if (delta>0)
        {
            fun1(a,b,c);
        }
        else 
            fun3(a,b,c);
        }else 
    fun2(a,b,c);  
}
int main() {
    int flag = 0;
    char s[20]={},s1[20]={},s2[20]={};
    int index = 0,suc = 0,output = 6;
    int i = cmp2("bo",order[3]);
    while (fgets(s,20,stdin) != NULL) { 
        suc = 0;output = 6;
        //printf("s in:%s",s);
        int i1 = 0; flag = 0;
        for(int i = 0;s[i]!='\n';i++){
            if(flag==0&&s[i]!=' ') s1[i1++] = s[i];
            else if(flag==0&&s[i]==' '){
                i1 = 0;
                flag = 1;
            }
            else if (flag==1){
                s2[i1++] = s[i];
            }
        }
        if(strlen(s1)<1){
            printf("unknown command\n");
            continue;
        }
        //printf("commad:%s %s\n",s1,s2);
        for(int i = 0;i<7;i++){
            if(cmp2(s1,order[i])==1){
                //printf("cmp i %d\n",i);
                switch (i) {
                    case 0:{
                        if(strlen(s2)==0){
                            output = 0;
                           
                            suc++;
                            
                        }
                        else if (cmp2(s2,order[1])==1) {
                            output = 1;
                            //printf("board fault\n");
                            suc++;


                        }
                        else{
                            if(suc==0) output = 6;
                        }
                        //printf("o1 %d\n",output);
                        break;
                    }
                    case 1:{
                        if(strlen(s2)==0){
                            if(suc==0)output = 6;
                        } 
                        else if (cmp2(s2,order[4])==1) {
                            output = 2;
                            //printf("where to add\n");
                            suc++;

                        }
                        else if (cmp2(s2,order[5])==1) {
                            output = 3;
                            //printf("no board at all\n");
                            suc++;
                            

                        }
                        else{
                            if(suc==0)output = 6;
                        }
                        break;
                    }
                    case 2:{
                        if(strlen(s2)==0){
                            if(suc==0) output = 6;
                        } 
                        else if (cmp2(s2,order[3])==1) {
                            output = 4;
                            suc++;

                        }
                        else{
                            if(suc==0) output = 6;
                        }
                        break;
                    }
                    case 3:{
                        if(strlen(s2)==0){
                            output = 6;
                        } 
                        else if (cmp2(s2,order[6])==1) {
                            output = 5;
                            suc++;

                        }
                        else{
                            output = 6;
                        }
                        break;
                    }
                
                }
            }
       
        }
        
        if(suc==1){
        //printf("suc:%d %s\n",output,c[output]);
        printf("%s\n",c[output]);
        } 
        else printf("unknown command\n");
        //for(int i = 0;i < 20;i++) s[i] = '\0';
        memset(s,'\0',20);memset(s1,'\0',20);memset(s2,'\0',20);
        //printf("s:%s\n",s);
        
        //strcpy(s1,"");strcpy(s2,"");


    }
    return 0;
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值