ZBLOG

void Exp(HLink H) { HLinkNode* current = H->next; HLinkNode* prev = H; int isMerged = 0; // 标记是否已经合并了系数 while (current != NULL) { if (current->next != NULL && current->exponent == current->next->exponent) { // ...

你可以修改代码中的输出部分,将第一项与其他项分开处理。以下是修改后的代码:

void Exp(HLink H) {
    HLinkNode* current = H->next;
    HLinkNode* prev = H;
    int isMerged = 0; // 标记是否已经合并了系数

    while (current != NULL) {
        if (current->next != NULL && current->exponent == current->next->exponent) {
            // 如果下一个节点的指数与当前节点相同,则合并系数
            current->coefficient += current->next->coefficient;
            HLinkNode* temp = current->next;
            current->next = current->next->next;
            free(temp); // 释放合并的节点
            isMerged = 1;
        } else {
            if (isMerged) {
                // 如果已经合并了系数,则输出合并后的系数
                if (current->coefficient != 0) {
                    printf("%+f", current->coefficient);
                    if (current->exponent != 0) {
                        printf("x^%d ", current->exponent);
                    }
                }
                isMerged = 0;
            } else {
                // 否则按照原始系数输出
                if (prev == H || prev == NULL) { // 处理第一项
                    if (current->coefficient != 0) {
                        if (current->coefficient != 1) {
                            printf("%fx^%d ", current->coefficient, current->exponent);
                        } else {
                            if (current->exponent == 0) {
                                printf("%f ", current->coefficient);
                            } else if (current->exponent == 1) {
                                printf("x ");
                            } else {
                                printf("x^%d ", current->exponent);
                            }
                        }
                    }
                } else {
                    if (current->coefficient != 0) {
                        if (current->coefficient != 1) {
                            printf("%+fx^%d ", current->coefficient, current->exponent);
                        } else {
                            if (current->exponent == 0) {
                                printf("%+f ", current->coefficient);
                            } else if (current->exponent == 1) {
                                printf("+x ");
                            } else {
                                printf("+x^%d ", current->exponent);
                            }
                        }
                    }
                }
            }
            prev = current;
            current = current->next; // 移动到下一个节点
        }
    }
}

现在,输出函数将能够正确合并指数相同的项,并正确输出第一项。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=9659

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?