考上研究僧 2022-03-15 08:56 采纳率: 97.4%
浏览 26
已结题

链表求和出现问题,怎么改

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

img

img


#include<stdio.h>
#include<malloc.h>
#define LEN sizeof(struct Plural)
struct Plural
{
    int a;
    int b;
    struct Plural* next;
};
int main()
{
    int suma=0, sumb=0;
    struct Plural* head = NULL, * p1 = NULL, * p2 = NULL, * p = NULL;
    p2 = p1 = (struct Plural*)malloc(LEN);
    head = p1;
    for (int i = 0; i < 10; i++)
    {
        scanf_s("%d%d", &p1->a, &p1->b);
        p1 = (struct Plural*)malloc(LEN);
        p2->next = p1;
        p2 = p1;
    }
    p1->next = NULL;
    p = head;
    while (p)
    {
        suma += p->a;
        sumb += p->b;
        p = p->next;
    }
    printf("%d+%di", suma, sumb);
    return 0;
}

  • 写回答

3条回答 默认 最新

  • 快乐鹦鹉 2022-03-15 09:00
    关注

    你这么写的话,最后一个节点就没有输入a和b的值了啊

     
     
    #include<stdio.h>
    #include<malloc.h>
    #define LEN sizeof(struct Plural)
    struct Plural
    {
        int a;
        int b;
        struct Plural* next;
    };
    int main()
    {
        int suma=0, sumb=0;
        struct Plural* head = NULL, * p1 = NULL, * p2 = NULL, * p = NULL;
    
        for (int i = 0; i < 10; i++)
        {
            p1 = (struct Plural*)malloc(LEN);
            scanf_s("%d%d", &p1->a, &p1->b);
            if(head == NULL)
                  head = p1;
            else
                 p2->next = p1;
            p2 = p1;
        }
        p1->next = NULL;
        p = head;
        while (p)
        {
            suma += p->a;
            sumb += p->b;
            p = p->next;
        }
        printf("%d+%di", suma, sumb);
        return 0;
    }
     
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月23日
  • 已采纳回答 3月15日
  • 创建了问题 3月15日