为啥char结果对,但是int和float结果就不对??

本身想创建一个链表。
包含三个元素一个指针的,但是结果很迷,瞬间麻爪了。


#include<stdio.h>
#include<stdlib.h>

struct a
{
    char b[10];//姓名
    int c;//号码
    float d;//得分
    struct a * e;//指针位置
};

int main()
{
    struct a * head = (struct a *)malloc(sizeof(struct a));
    head -> e = NULL;

    struct a * i ;
    i = head;

    int f;
    for( f=0; f<3; f++)
    {
        struct a * g = (struct a *)malloc(sizeof(struct a));
        printf("请输入姓名:");
        scanf("%s",&g->b);
        printf("请输入号码:");
        scanf("%d",&g->c);
        printf("请输入得分:");
        scanf("%f",&g->d);
        printf("\n");

        i->e = g;
        g->e = NULL;
        i = g;
    };

    printf("保存结果:\n");
    i=head;
    while(i->e != NULL)
    {

        i = i->e;
        printf("姓名为:%s\n",i->b);
        printf("得分为:%f\n",i->c);
        printf("号码为:%d\n",i->d);
        printf("指针指向:%d\n",i->e);
        printf("\n");

    }
    printf("Hello world!");
    return 0;
}

img

笑死,上一个问题怎么没了
我看了半天,结果你给删了
你输出的时候c和d的类型写反了,导致读到的都是乱码
有帮助望采纳

#include<stdio.h>
#include<stdlib.h>

struct a
{
char b[10];//姓名
int c;//号码
float d;//得分
struct a * e;//指针位置
};

int main()
{
struct a * h = (struct a *)malloc(sizeof(struct a));
h -> e = NULL;

struct a * i ;
i = h;
 
int f;
for( f=0; f<3; f++)
{
    struct a * g = (struct a *)malloc(sizeof(struct a));
    printf("请输入姓名:");
    scanf("%s",&(g->b));
    printf("请输入号码:");
    scanf("%d",&(g->c));
    printf("请输入得分:");
    scanf("%f",&(g->d));
    printf("\n");
 
    i->e = g;
    g->e = NULL;
    i = g;
};
 
printf("保存结果:\n");
i=h;
while(i->e != NULL)
{
 
    i = i->e;
    printf("姓名为:%s\n",i->b);
    printf("号码为:%d\n",i->c);
    printf("得分为:%f\n",i->d);
    printf("指针指向:%d\n",i->e);
    printf("\n");
 
}
printf("Hello world!");
return 0;
}

供参考:

#include<stdio.h>
#include<stdlib.h>

struct a
{
    char b[10];//姓名
    int   c;//号码
    float d;//得分
    struct a* e;//指针位置
};

int main()
{
    struct a* h = (struct a*)malloc(sizeof(struct a));
    h->e = NULL;
    struct a* i;
    i = h;
    int f;
    for (f = 0; f < 3; f++)
    {
        struct a* g = (struct a*)malloc(sizeof(struct a));
        printf("请输入姓名:");
        scanf("%s", g->b);//scanf("%s", &g->b);
        printf("请输入号码:");
        scanf("%d", &g->c);
        printf("请输入得分:");
        scanf("%f", &g->d);
        printf("\n");
        i->e = g;
        g->e = NULL;
        i = g;
    };
    printf("保存结果:\n");
    i = h;
    while (i->e != NULL)
    {
        i = i->e;
        printf("姓名为:%s\n", i->b);
        printf("得分为:%f\n", i->d);//printf("得分为:%f\n", i->c);
        printf("号码为:%d\n", i->c);//printf("号码为:%d\n", i->d);
        printf("指针指向:0x%p\n", i->e);//printf("指针指向:%d\n", i->e);
        printf("\n");
    }
    printf("Hello world!");
    return 0;
}