| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 337 人关注过本帖
标题:学生信息链表一个小问题求解!
只看楼主 加入收藏
qq1625127317
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:185
专家分:450
注 册:2015-9-3
结帖率:83.33%
收藏
已结贴  问题点数:20 回复次数:3 
学生信息链表一个小问题求解!
程序代码:
#include<stdio.h>
#include<stdlib.h>
struct student 
{
    int num;
    char name[30];
    int score;
    struct student * pnext;
};
struct student * creat_list(struct student * h);  //建立单链表 
void print_list(struct student * h);              //输出单链表 
void search_list(struct student * h);             //搜寻函数 
int main()
{
    struct student * head;
    char ren;
    head = NULL;
    printf("请输入学生信息,直至序号为0为止\n");
    head = creat_list(head);
    printf("----------------------------------------\n");
    print_list(head); 
    printf("----------------------------------------\n");
    search_list(head);
}
struct student * creat_list(struct student * h)    //建立单链表 ,这一段没有问题 
{
    struct student * p1,*p2;
    p1 = p2 = (struct student *)malloc(sizeof(struct student));
    printf("请输入学生学号:");
    scanf("%d",&p2 -> num);
    printf("请输入学生姓名:");
    scanf("%s",&p2 -> name);
    printf("请输入学生成绩:");
    scanf("%d",&p2 -> score);
    p2 -> pnext = NULL;
    while(p2 -> num != 0)
    {
        if(h == NULL)
           h = p2;
        else
           p1 -> pnext = p2;
        p1 = p2;
        p2 = (struct student *)malloc(sizeof(struct student));
        if(p2 != NULL)
        {
            printf("请输入学生学号:");
            scanf("%d",&p2 -> num);
            if(p2 -> num == 0) break;
             printf("请输入学生姓名:");
            scanf("%s",&p2 -> name);
            printf("请输入学生成绩:");
            scanf("%d",&p2 -> score);
            p2 -> pnext = NULL;
        }
    } 
    return h;
}
void print_list(struct student * h)      //输出单链表函数,没有问题 
{
    struct student * temp;
    temp = h;
    printf("学号\t姓名\t成绩\n");
    while(temp != NULL)
    {
        printf("%d\t%s\t%d",temp -> num,temp -> name,temp -> score);
        printf("\n");
        temp = temp -> pnext;
    }
}
void search_list(struct student * h)    //搜寻函数,用来寻找学生学号! 
{
    struct student * temp;
    int date;
    char x;
    temp = h;
    printf("是否进行查询工作?(y/n): ");
    scanf("%d",&x); 
    if(x == 'y')
    { 
        printf("请输入学生学号:\n");    //就是这一段!为什么程序就没有执行呢? 
        scanf("%d",&date);               // 直接就结束了呢?
        if(date == 0) 
            printf("查无此人,请重输!");
        while(temp != NULL)
        {
            if(date == temp -> num)
            {
               printf("学号\t姓名\t成绩\n");
               printf("%d\t%s\t%d",temp -> num,temp -> name,temp -> score);
            }
            else
               temp = temp -> pnext;
        }
    } 
} 
搜索更多相关主题的帖子: 信息 
2015-09-24 23:34
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:20 
编译信息是什么

一片落叶掉进了回忆的流年。
2015-09-24 23:57
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:0 
scanf("%d",&x);应该是%c

一片落叶掉进了回忆的流年。
2015-09-24 23:58
qq1625127317
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:185
专家分:450
注 册:2015-9-3
收藏
得分:0 
回复 3楼 诸葛欧阳
修改好了

静坐常思己过,闲谈莫论人非
2015-09-25 13:12
快速回复:学生信息链表一个小问题求解!
数据加载中...
 
   



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

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