试冻 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 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 关于#python#的问题:自动化测试