| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2332 人关注过本帖
标题:求大神!大一期末做课程设计,遇到问题。关于链表。
只看楼主 加入收藏
张耀元
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2016-12-7
收藏
得分:0 
回复 18楼 吹水佬
我换回来了,原来是这样的。后来因为二进制的原因老师来改成这样了。我还不知道为什么这样。

有生之年 欣喜相逢
2016-12-31 13:24
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
以下是引用张耀元在2016-12-31 13:18:55的发言:

还是不行,成绩不出来。

试了一下,应该可以。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


//学生信息
struct work
{
    char no[10];//学生学号
    char name[12];//学生姓名
    char idno[20];//身份证号码
    char mima[10];//密码
    float chengji1;//成绩1
    float chengji2;//成绩2
    float chengji3;//成绩3
    char powr[10];//权限
    struct work *next;
};


//用链表将文件里的学生基本信息读出来

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));
            if(fread(node,sizeof(struct work),1,fp)==1)
            {
                node->next=head;
                head=node;
            }
            else
                free(node);
        }

    }
    fclose(fp);
    return head;
}

//普通学生查询某门课程的得分
void chaxunmoumenke(struct work *head)
{
    //system("CLS");
    struct work *p=head;
    char x;
    while (1)
    {
        printf("请输入需要查询的课程(课程1/课程2/课程3)[请输入1,2,3,0]:\n");
        while (((x=getch()) < '0') || (x > '3')) ;
        if (x == '0')
            break;
        p = head;
        while (p != NULL)
        {
            if (x=='1')
                printf("%.2f\n", p->chengji1);
            else if (x=='2')
                printf("%.2f\n", p->chengji2);
            else if (x=='3')
                printf("%.2f\n", p->chengji3);
            p = p->next;
        }
    }
}

void _list(struct work *head)
{
    struct work *p=head;
    while (p != NULL)
    {
        printf("学生学号....%s\n", p->no);
        printf("学生姓名....%s\n", p->name);
        printf("身份证号码..%s\n", p->idno);
        printf("密码........%s\n", p->mima);
        printf("成绩1.......%.2f\n", p->chengji1);
        printf("成绩2.......%.2f\n", p->chengji2);
        printf("成绩3.......%.2f\n", p->chengji3);
        printf("权限........%s\n\n", p->powr);
        p = p->next;
    }
}

void _free(struct work *head)
{
    struct work *p=head, *q;;
    while (p != NULL)
    {
        q = p->next;
        free(p);
        p = q;
    }
}

main()
{
    struct work *head=lianbiao();
    _list(head);
    chaxunmoumenke(head);
    _free(head);
}
2016-12-31 17:17
dongdon923
Rank: 2
等 级:论坛游民
威 望:1
帖 子:17
专家分:58
注 册:2016-12-2
收藏
得分:0 
迷迷糊糊黑
2017-01-01 10:01
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:0 
回复 17楼 张耀元
//目前看到你这个函数几处明显错误,红色部分为修改提示
void chaxunmoumenke()
{
    system("CLS");
    int i,x;
    char num[10]; //你定义的num是字符数组

.
.
.


          scanf("%d",&num);  //字符数组不能使用%d格式输入,应修改为  scanf("%s",num);

          fflush(stdin);   

.
.
.

                    if(p->no == num)      //字符串不能直接进行逻辑判断,需使用strcmp函数,修改为 if(strcmp(p->no,num)==0)
2017-01-01 10:10
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 24楼 xzlxzlxzl
正像上楼所说的问题~~难怪一开始我做也卡壳了,原来一楼给的信息不完整没把结构体声明部分列出来,弄得我摸了半天黑也说不出所以然出来~~`

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-01-01 10:38
快速回复:求大神!大一期末做课程设计,遇到问题。关于链表。
数据加载中...
 
   



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

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