daima

来源:互联网 发布:linux bond 模式 编辑:程序博客网 时间:2024/05/17 07:08
# include<stdio.h># include<stdlib.h># include<string.h>int Q[4],q=0;int zh(char s[],int begin,int end)  //负责将字符串数字转换为整型数字{int value=0;     for(int h=begin;h<end;h++){              value = value*10;              value = value + (s[h]-'0');}        return value;}void HQSS(char s[])         //负责从字符串中提取出实部和虚部  要对字符串进行分类讨论{int l = strlen(s);int i,flag1=0;            int h,shi=0,fu=0;         char fuhaofu='0';for(i=0;i<l;i++)     //第一类 实部和虚部都存在       {            if((s[i]=='+'&& i!=0) || (s[i]=='-'&& i!=0))    //实部和虚部间的正负符号        {                   fuhaofu=s[i];             if(s[0]=='-')    //要讨论实部和虚部的正负情况             {                 shi = zh(s,1,i);               shi = - shi;                       }                else               {                 shi = zh(s,0,i);             }               fu= zh(s,i+1,l-1);             if(fuhaofu=='-')               {                 fu = - fu;                }                 flag1 = 1;                break;               }                         }        int flag2=0;        if(flag1==0)    //第二类只存在实部和只存在虚部      {            if(s[l-1]=='i')    //只存在虚部        {              if(s[0]=='-')            {                   fu = zh(s,1,l-1);                fu = -fu;                 fuhaofu = '-';              }            else            {                  fu = zh(s,0,l-1);          }                          }            else    //只存在实部        {                if(s[0]=='-')              {                 shi= zh(s,1,l);               shi = - shi;              }                        else              {                 shi = zh(s,0,l);               }              flag2 = 1;               }             }        if(fu==0 && flag2==0)    //因为i和-i没有字符串数字 所以无法提取要特殊讨论    {           if(fuhaofu=='-')         {            fu = -1;             }                    else         {            fu = 1;         }      }     Q[q] = shi;q++;    Q[q] = fu;q++;}int main()    {        char a[10],b[10];     scanf("%s",a);      scanf("%s",b);              HQSS(a);    HQSS(b);    int shi,fu;        shi = Q[0]+Q[2];        fu = Q[1]+Q[3];        if(shi==0&&fu==0)    {   printf("0");    }    else    {    if(shi!=0)   printf("%d",shi);    if(fu>0&&fu!=1&&fu!=-1&&shi!=0)  printf("+%di",fu);    if(fu>0&&fu!=1&&fu!=-1&&shi==0)  printf("%di",fu);    if(fu<0&&fu!=1&&fu!=-1)  printf("%di",fu);    if(fu==1&&shi!=0)  printf("+i");    if(fu==1&&shi==0)  printf("i");    if(fu==-1)  printf("-i");    }    system("pause");    return 0;    } 
                                             
0 0
原创粉丝点击