傲天 发表于 2015-9-15 20:01:13

结构体的问题

直接上代码:
/********************************************************************
* 本程序是建立一个含有学生(学号、成绩)数据的单向动态链表*
********************************************************************/
#include <stdio.h>
struct student
{
        long int num;
        float razults;
        struct student *next;
};
void main()
{
        struct student stu,*head;
        int i=1,j,k;
        while(1)
        {
                printf("请输入学号: \n");
                scanf("%ld",&stu.num );
                if(stu.num==0)
                {
                        j=i;
                        stu.next =NULL;
                        break;
                }
                else
                {
                        if(i==1)
                        {
                                head=&stu;
                        }
                        else
                        {
                                stu.next =&stu;
                        }
                }
                printf("请输入成绩: \n");
                scanf("%.2f",&stu.razults );
                i++;
        }
        do
        {
                printf("学号: %ld\t成绩: %.2f\n",head->num ,head->razults );
                head=head->next ;
        }while(head);
}
想了很久,此程序可运行,但给出的结果却不正确,如图:

我现在就是想不明白为什么第一次scanf可以输入,循环后学号和成绩就一起刷出来让我输入了。连88也变成学号了,成绩一个也没有。这到底是什么问题?

Potato丶 发表于 2015-9-15 20:01:14

。。。首先。。既然是链表为什么还要用数组?很混乱。
至于输入问题。把 .2f的.2去掉。。输入是不能规定精度的。。

y290176346 发表于 2015-9-15 22:42:23

我是老的鱼币的

傲天 发表于 2015-9-16 00:26:57

Potato丶 发表于 2015-9-15 23:23
。。。首先。。既然是链表为什么还要用数组?很混乱。
至于输入问题。把 .2f的.2去掉。。输入是不能规定精 ...

非常感谢,那个.2去掉确实正常了,因为malloc和calloc还不太会用,所以只能定一个数组来定义长度了。

特殊符号 发表于 2015-9-21 09:40:55

我是老的鱼币的

千亩计者 发表于 2016-8-16 02:02:59

把 .2f的.2去掉
页: [1]
查看完整版本: 结构体的问题