尝试

#include<stdio.h>
#include<stdlib.h>
typedef struct Fushu
{
    int shi, xu;
    struct Fushu *next;
    }Fushu;

//void init(Fushu *s) {
//s->next = NULL;
//s->shi = 0;
//s->xu = 0;
//}

Fushu *insert(Fushu *fushu, Fushu *w) {
    Fushu *current;
    current = fushu;
    if (current == NULL)
    {
        fushu = w;
        current = fushu;
        current = current->next;
        return fushu;
}
    while (1)
{

        if (current->next == NULL)
        {
            current->next = w;
//current = current->next;
            break;
        }    //current->next = w;
        current = current->next;
}
        return fushu;
}

Fushu *add(Fushu *m, Fushu *n) {
    Fushu *w = (Fushu *)malloc(sizeof(Fushu));;
    w->shi = m->shi + n->shi;
    w->xu = m->xu + n->xu;
    w->next = NULL;
    return w;
}

Fushu *minus(Fushu *m, Fushu *n) {
    Fushu *w =(Fushu *)malloc(sizeof(Fushu));
    w->shi = m->shi - n->shi;
    w->xu = m->xu - n->xu;
    w->next = NULL;
    return w;
}

Fushu *multiply(Fushu *m, Fushu *n) {
    Fushu *w = (Fushu *)malloc(sizeof(Fushu));
    w->shi = m->shi * n->shi - m->xu * n->xu;
    w->xu = m->shi * n->xu + m->xu * n->shi;
    w->next = NULL;
    return w;
}

int shi(Fushu *a) {
    return a->shi;
}

int xu(Fushu *a) {
    return a->xu;
}

int main(int argc, char const *argv[])
{
    int a, b, c, d, e, i;
    Fushu *fu = NULL;
    Fushu *fu1, *fu2; //= (Fushu *)malloc(sizeof(Fushu))
    Fushu *result;
    printf("你想执行的操作:\n1:插入\n2:加法\n3:减法\n4:乘法\n5:实部\n6:虚部\n");
    scanf("%d", &a);
    while (1) {
        if (a == 1)
    {
            printf("请输入实部和虚部\n");
            scanf("%d %d", &b, &c);
        Fushu *input = (Fushu *)malloc(sizeof(Fushu));
        input->shi = b;
        input->xu = c;
        input->next = NULL;
        fu = insert(fu, input);

    }
        else if (a == 2)
    {
            Fushu *cu; 
            cu = fu;
            i = 1;
            while (cu) {
                printf("%d. %d + %di\n", i, cu->shi, cu->xu);
                i++;
                cu = cu->next;
            }printf("请输入操作对象 x y\n");
            scanf("%d%d", &d, &e);
            fu1 = fu;
            fu2 = fu;
            for (int j = 1; j < d; j++){
                fu1 = fu1->next;
            }for (int k = 1; k < e; k++){
                fu2 = fu2->next;
            }
            result = add(fu1, fu2);
            printf("结果是%d + %di\n", result->shi, result->xu);
    }else if(a == 3){
        Fushu *cu; 
        cu = fu;
        i = 1;
        while (cu) {
            printf("%d. %d + %di\n", i, cu->shi, cu->xu);
            i++;
            cu = cu->next;
        }printf("请输入操作对象 x y\n");
        scanf("%d%d", &d, &e);
        fu1 = fu;
        fu2 = fu;
        for (int j = 1; j < d; j++)
        {
            fu1 = fu1->next;
        }for (int k = 1; k < e; k++)
        {
            fu2 = fu2->next;
        }
        result = minus(fu1, fu2);
        printf("结果是%d + %di\n", result->shi, result->xu);
    }else if(a == 4){
    Fushu *cu; 
    cu = fu;
    i = 1;
    while (cu) {
        printf("%d. %d + %di\n", i, cu->shi, cu->xu);
        i++;
        cu = cu->next;
    }printf("请输入操作对象 x y\n");
    scanf("%d%d", &d, &e);
    fu1 = fu;
    fu2 = fu;
    for (int j = 1; j < d; j++)
    {
        fu1 = fu1->next;
    }for (int k = 1; k < e; k++)
    {
        fu2 = fu2->next;
    }
    result = multiply(fu1, fu2);
    printf("结果是%d + %di\n", result->shi, result->xu);
    }else if(a == 5){
        printf("请输入需要查找的序号\n");
        scanf("%d",&d);
        fu1 = fu;
        for(i = 1;i < d;i++){
            fu1 = fu1->next;
        }printf("实部是%d\n",shi(fu1));
    }else if(a == 6){
        printf("请输入需要查找的序号\n");
        scanf("%d",&d);
        fu1 = fu;
        for(i = 1;i < d;i++){
            fu1 = fu1->next;
        }printf("虚部是%d\n",xu(fu1));
    }
    printf("是否继续?\nY/N\n");
    char ct;
    scanf("%s", &ct);
    if (ct == 'N')
    {
        break;
    }
    else {
        printf("请输入操作\n");
        scanf("%d", &a);
    }
    }free(fu);
    free(result);
    return 0;
}

 

posted @ 2019-10-29 11:07  雲中  阅读(186)  评论(1)    收藏  举报