VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 718|回复: 9

注释的那一行为什么错了呢?~~~

[复制链接]

7

主题

15

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-1-5 19:40:02 | 显示全部楼层 |阅读模式
程序的目的是建立两个链表并合并再升序排列,可以正确运行,但是用注释隔离的那行输出语句不知道错那里~~~
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#define NAMELEN 10
#define NULL 0
#define LEN sizeof(struct data)
struct data
{
        long num;
        char name[NAMELEN];
        struct data *next;
};
struct data *Crt(void)
{
        int count=1;
        struct data *head,*fwd,*bwd;
        head=fwd=(struct data*)malloc(LEN);
        head->num=-1;
        do
        {
                bwd=fwd;
                fwd=bwd->next=(struct data*)malloc(LEN);
                printf("Stu %-4d\n",count++);
                printf("Num  => ");
                scanf("%ld",&fwd->num);
                printf("Name =>");
                scanf("%s",&fwd->name);
        }
        while(fwd->num);
        bwd->next=NULL;
        return(head);
}
void link(struct data *A_head,struct data *B_head)
{
        struct data *fwd=A_head;
        fwd=fwd->next;
        while(fwd->next!=NULL)
                fwd=fwd->next;
        fwd->next=B_head->next;
}
void ord(struct data *head)
{
        struct data *fwd,*flw,*ord;
        ord=fwd=flw=head;
        fwd=fwd->next;
        while(ord->next!=NULL)
        {
                if (fwd->num<ord->next->num)
                {
                        flw->next=fwd->next;
                        fwd->next=ord->next;
                        flw=ord->next=fwd;
                        fwd=fwd->next;
                }
                else
                {
                        flw=flw->next;
                if (fwd->next!=NULL)
                        fwd=fwd->next;
                else
                {
                        ord=ord->next;
                        fwd=ord->next;
                        flw=ord;
                }
                }
        }
}
void print(struct data *fwd)
{
        int count=1;
        fwd=fwd->next;
        while(fwd!=NULL)
        {
                printf("Stu %-4d",count++);
        /*        printf("Num %-4d  Name %s\n",fwd->num,fwd->name);*/
        /*以上那句为什么是错的?应该是可以代替下面两行PRINTF的啊,(但实际情况是数字正常显示,NAME显示NULL,指针指错了?)*/
                printf("Num  %-4d",fwd->num);
                printf("Name %s\n",fwd->name);
                fwd=fwd->next;
        }
}
void main()
{
        void link(struct data *A_head,struct data *B_head);
    void ord(struct data *head);
    void print(struct data *fwd);
        struct data *A_head,*B_head;
        printf("Input infomations of Group A students\n");
        A_head=Crt();
        printf("Input infomations of Group B students\n");
        B_head=Crt();
        printf("Now link Group A and Group B\n");
        link(A_head,B_head);
        printf("Finally,order the new Group\n");
        ord(A_head);
        printf("Now check the result\n");
        print(A_head);
}
回复

使用道具 举报

1

主题

27

帖子

23.00

积分

新手上路

Rank: 1

积分
23.00
发表于 2020-1-6 12:54:01 | 显示全部楼层
printf("Num %-4d  Name %s\n",fwd->num,fwd->name);
我觉得有错:
printf输出多个变量应该类型是一样的才行,你一个是long,一个是char,就不行拉.
建议兄弟写点注释,我废了好久才把程序看完.
回复

使用道具 举报

1

主题

27

帖子

23.00

积分

新手上路

Rank: 1

积分
23.00
发表于 2020-1-6 13:06:01 | 显示全部楼层
printf("Num %-4d  Name %s\n",fwd->num,fwd->name);
中只有%s有效,%-4d没发挥作用.
回复

使用道具 举报

0

主题

25

帖子

14.00

积分

新手上路

Rank: 1

积分
14.00
发表于 2020-1-6 16:33:02 | 显示全部楼层
printf("Num %-4d  Name %s\n",fwd->num,fwd->name);
本身没有任何问题.
回复

使用道具 举报

7

主题

15

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
 楼主| 发表于 2020-1-6 16:48:01 | 显示全部楼层
先谢谢二楼~~因为比较仓促所以忘加注释了,SORRY哈~~
那。。。什么叫“本身没有任何问题”呢?
回复

使用道具 举报

0

主题

25

帖子

14.00

积分

新手上路

Rank: 1

积分
14.00
发表于 2020-1-6 17:24:01 | 显示全部楼层
把你的程序运行了一下,也没出现你说的问题呀.
晕!
回复

使用道具 举报

1

主题

27

帖子

23.00

积分

新手上路

Rank: 1

积分
23.00
发表于 2020-1-7 22:27:01 | 显示全部楼层
我运行了下,确实没错.
回复

使用道具 举报

1

主题

27

帖子

23.00

积分

新手上路

Rank: 1

积分
23.00
发表于 2020-1-8 12:36:01 | 显示全部楼层
printf("Num %-4d  Name %s\n",fwd->num,fwd->name);
中的%s\n改为%10s\n应该可以了,我试过
回复

使用道具 举报

1

主题

27

帖子

23.00

积分

新手上路

Rank: 1

积分
23.00
发表于 2020-1-8 13:09:01 | 显示全部楼层
%s只用于指定字符串
回复

使用道具 举报

7

主题

15

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
 楼主| 发表于 2020-1-10 19:54:01 | 显示全部楼层
谢谢帮忙~还有,那怎么实现用一个PRINTF来输出多种不同的格式啊,比如%ld,%d,%c %s等等的?。。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表