| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2408 人关注过本帖
标题:求大神!大一期末做课程设计,遇到问题。关于链表。
只看楼主 加入收藏
张耀元
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2016-12-7
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:24 
求大神!大一期末做课程设计,遇到问题。关于链表。
程序代码:
//普通学生查询某门课程的得分
void chaxunmoumenke()
{
    system("CLS");
    int i,x;
    struct work *head=NULL;
    head=(struct work *)malloc(sizeof(struct work));
    memset(head,0,sizeof(struct work));
    head=lianbiao();
    struct work *p=head;

    do
    {
        printf("请输入需要查询的课程(课程1/课程2/课程3)[请输入1,2,3]:\n");
        scanf("%d",&x);

        switch(x)
            {
            case 1:printf(" %s  \n",head->chengji1),i=1;break;
            case 2:printf(" %s  \n",head->chengji2),i=1;break;
            case 3:printf(" %s  \n",head->chengji3),i=1;break;
            default:
                {
                    i=0;
                    printf("没有该课程!请重新输入!");
                }
            }
         head=head->next;
    }while(x==0);
   

   

}
程序代码:
//用链表将文件里的学生基本信息读出来 

struct work *lianbiao()
{
    struct work *head=NULL;
    struct work *node=NULL;
    FILE *fp=NULL;
    if((fp=fopen("jiben.txt","rb"))==NULL)
    {
        printf("打开文件失败!");
        return NULL;
    }
    else
    {
        while(!feof(fp))
        {
            node=(struct work *)malloc(sizeof(struct work));
            memset(node,0,sizeof(struct work));

            struct work curWork;
            if(fread(&curWork,sizeof(struct work),1,fp)==1)
            {               

                node->chengji1 =curWork.chengji1;
                node->chengji2 = curWork.chengji2;
                node->chengji3 = curWork.chengji3;
                strcpy(node->idno, curWork.idno);
                strcpy(node->mima, curWork.mima);
                strcpy(node->name, curWork.name);
                strcpy(node->no, curWork.no);
                strcpy(node->powr, curWork.powr);

                node->next=head;
                head=node;
            }
        }
    }
    fclose(fp);
    return head;
}
搜索更多相关主题的帖子: system 课程 
2016-12-30 13:48
张耀元
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2016-12-7
收藏
得分:0 
学生成绩管理。怎么把三门成绩找出来。上课的时候链表没听懂。

有生之年 欣喜相逢
2016-12-30 13:49
张耀元
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2016-12-7
收藏
得分:0 
感觉有很大问题。

有生之年 欣喜相逢
2016-12-30 13:50
张耀元
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2016-12-7
收藏
得分:0 
成绩是这样的输进去的。
程序代码:
//得到所需添加学生信息
 struct work * tianjiaxinxi(struct work *p)

 {
     fflush(stdin);
     printf("请输入添加学生的信息\n");
     printf("学号:(xxxx)\n");
     scanf("%s",p->no);
     printf("姓名:(xxx)\n");
     scanf("%s",p->name);
     printf("身份证号码:\n");
     scanf("%s",p->idno);
     printf("密码:(xxxx)\n");
     scanf("%s",p->mima);
     printf("成绩1:\n");
     scanf("%f",&p->chengji1);
     printf("成绩2:\n");
     scanf("%f",&p->chengji2);
     printf("成绩3:\n");
     scanf("%f",&p->chengji3);
     printf("权限:");
     scanf("%s",p->powr);
     fflush(stdin);
     return p;

 }

有生之年 欣喜相逢
2016-12-30 13:51
张耀元
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2016-12-7
收藏
得分:0 
就是chaxunmoumenke那个函数的链表出问题了。

有生之年 欣喜相逢
2016-12-30 13:58
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
链表里面有指针地址,保存数据时用fprintf去掉地址,读取时用fscanf,而用结构体数组则可以用fwrite,fread~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-30 14:39
张耀元
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2016-12-7
收藏
得分:0 
回复 6楼 九转星河
啊,大神,没懂。

有生之年 欣喜相逢
2016-12-30 15:21
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:20 
回复 7楼 张耀元
地铁上,手机刷贴,不好调试,回家再看看是怎么回事~

对了,最好发完整的代码~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-30 15:25
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
仔细想了一下,似乎6楼说的有点纰漏,用fwrite二进制保存可以虽然会把指针地址也保存进去,但读取信息可以进行二次读取,可以把链表指针筛去…具体问题这份代码不完整,不好调试~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-30 16:13
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:0 
do{}while 语句的判断条件

程序代码:
 do
     {
         printf("请输入需要查询的课程(课程1/课程2/课程3)[请输入1,2,3]:\n");
         scanf("%d",&x);

         switch(x)
             {
             case 1:printf(" %s  \n",head->chengji1),i=1;break;
             case 2:printf(" %s  \n",head->chengji2),i=1;break;
             case 3:printf(" %s  \n",head->chengji3),i=1;break;
             default:
                 {
                     i=0;
                     printf("没有该课程!请重新输入!");
                 }
             }
          head=head->next;
     }while(x!=0);
    

早知做人那么辛苦!  当初不应该下凡
2016-12-30 16:57
快速回复:求大神!大一期末做课程设计,遇到问题。关于链表。
数据加载中...
 
   



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

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