标题:各位大神,帮我看下这个程序为什么输不出来结果呢?
取消只看楼主
李童鞋
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-3-7
结帖率:100%
已结贴  问题点数:20 回复次数:5 
各位大神,帮我看下这个程序为什么输不出来结果呢?
#include<stdio.h>
#include<stdlib.h>
typedef struct student
{
    int num;
    char name[10];
    char addr[15];
    struct student *next;
}Stu;

int main()
{
    void input(Stu *head);
    void print(Stu *out);
    int flag;
    Stu *Q;
   
star:    printf("\n\n1.输入学生信息\t\t\t2.显示学生信息\t\t\t0.退出\n");
        printf("请您选择序号:");
        scanf("%d",&flag);
        switch(flag)
        {
        case 0:return 0;
        case 1:
            input(Q);
            goto star;
            break;
        case 2:print(Q);
            goto star;
            break;
        }
}

void input(Stu *head)
{
    Stu *p1,*p2;
    int flag=1,n=0;
    p1=p2=(Stu*)malloc(sizeof(Stu));
    while(flag)
    {
        printf("请您输入学号:");
        scanf("%d",&p1->num);
        printf("请您输入姓名:");
        scanf("%s",p1->name);
        printf("请您输入地址:");
        scanf("%s",p1->addr);
        n=n+1;
        if(n==1)
            head=p1;
        else
            p2->next=p1;
        p2=p1;
        p1=(Stu*)malloc(sizeof(Stu));
        printf("是否继续输入(1/0):");
        scanf("%d",&flag);
    }
    p2->next=NULL;
}

void print(Stu *out)
{
    Stu *p;
    p=out;
    if(out!=NULL)
        printf("无学生信息!\n");
    else
    {
        printf("学生信息为:\n");
        while(p!=NULL)
        {
            printf("学号    姓名    地址\n");
            printf("%-8d%-8s%-8s\n",p->num,p->name,p->addr);
            p=p->next;
        }
    }
}
搜索更多相关主题的帖子: include return star 信息 
2017-04-01 22:54
李童鞋
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-3-7
得分:0 
2017-04-01 23:18
李童鞋
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-3-7
得分:0 
回复 3楼 九转星河
既然是指针,head是头指针,Q也应该是头指针,然后也应该输出后面的内容勒,大神,详细讲哈原因,纠结这个好久了
2017-04-02 09:46
李童鞋
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-3-7
得分:0 
回复 5楼 九转星河
大神,为什么同样的,这种又可以带回地址呢?
#include<stdio.h>
#include<stdlib.h>
typedef struct student
{
    int num;
    char name[10];
    char addr[15];
    struct student *next;
}Stu;

int main()
{
    void input(Stu *head);
    void print(Stu *out);
    int flag;
    Stu *Q;
    Q=(Stu*)malloc(sizeof(Stu));
    Q->next=NULL;
star:    printf("\n\n1.输入学生信息\t\t\t2.显示学生信息\t\t\t0.退出\n");
        printf("请您选择序号:");
        scanf("%d",&flag);
        switch(flag)
        {
        case 0:return 0;
        case 1:
            input(Q);
            system("cls");
            goto star;
            break;
        case 2:
            print(Q);
            goto star;
            break;
        }
}

void input(Stu *head)
{
    Stu *s;
    int flag=1,n=0;
    s=(Stu*)malloc(sizeof(Stu));
    while(flag)
    {
        printf("请您输入学号:");
        scanf("%d",&s->num);
        printf("请您输入姓名:");
        scanf("%s",s->name);
        printf("请您输入地址:");
        scanf("%s",s->addr);
        s->next=head->next;
        head->next=s;
        s=(Stu*)malloc(sizeof(Stu));
        printf("是否继续输入(1/0):");
        scanf("%d",&flag);
    }
}

void print(Stu *out)
{
    if(out->next==NULL)
        printf("无学生信息!\n");
    else
    {
        printf("学生信息为:\n");
        while(out->next!=NULL)
        {
            out=out->next;
            printf("学号    姓名    地址\n");
            printf("%-8d%-8s%-8s\n",out->num,out->name,out->addr);
            
        }
    }
}
2017-04-02 10:41
李童鞋
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-3-7
得分:0 
回复 7楼 九转星河
我的那个程序输出功能都在单独的子函数里面,然后都是在主函数调用,你写的那个交换第一个是在主函数里面进行交换,我还是没弄明白
2017-04-02 11:17
李童鞋
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-3-7
得分:0 
回复 9楼 九转星河
谢谢大神!这样返回头指针肯定是行的,我就在想到底我那种是哪里有问题,想不通啊
2017-04-02 16:53



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-475723-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.087623 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved