试冻 2019-05-27 23:54 采纳率: 33.3%
浏览 432

【新手提问】单链表输出首行字符串末尾出现乱码?

主要是利用单链表存储图书信息,计算图书平均价格并修改图书价格后输出。

运行结果如图

图片说明

几乎一切结果输出都很正常,就是不知道为什么第一行图书名称的末尾竟有乱码,重重复复检查运行,第一行末尾始终有乱码,却又不是整段乱码,请问这是什么问题?

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

typedef struct LNode
{
    char no[20];
    char name[50];
    float price;
    struct LNode *next;
}LNode,*LinkList;

int main()
{
    int n=0;
    LNode *p,*q;
    float Average(LinkList L, int n);
    void change(LinkList L, float aver);
    LinkList L = (LinkList)malloc(sizeof(LinkList));//头结点
    L->next = NULL;//指针初始化
    q = L;
    while (1)
    {
        p = (LNode *)malloc(sizeof(LNode));//新结点
        p->next = NULL;
        scanf_s("%s %s %f", p->no, 20, p->name, 50, &p->price);
        if (p->no[0] == '0'&&p->name[0] == '0'&&p->price == 0)
            break;
        q->next = p;
        q = p;
    }
    p = L->next;
    while (p != NULL)
    {//计结点个数
        n++;
        p = p->next;
    }
    printf("%.2f\n", Average(L, n));
    change(L,Average(L, n));
    system("PAUSE");
    return 0;
}

float Average(LinkList L, int n)
{//计算平均价格
    LNode *p;
    float sum=0;
    p = L->next;
    while (p != NULL)
    {
        sum = sum + p->price;
        p = p->next;
    }
    return sum / n;
}

void change(LinkList L, float aver)
{//改变价格并输出
    LNode *p;
    p = L->next;
    while (p != NULL)
    {
        if (p->price < aver)
            p->price = (1 + 0.2)*p->price;
        else
            p->price = (1 + 0.1)*p->price;
        p = p->next;
    }
    p = L->next;
    while (p != NULL)
    {
        printf("%s %s %.2f\n", p->no, p->name, p->price);
        p = p->next;
    }
}
  • 写回答

1条回答

  • 小四的微笑 2019-05-30 18:03
    关注

    你的指针LinkList L在传指针的时候无 数据信息,就一个指针,变成了野指针 导致的程序变成乱码。

    评论

报告相同问题?

悬赏问题

  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿