2 asambojur asambojur 于 2015.06.02 16:42 提问

这段代码的问题请大神们告诉我一下吧~··· debug提示的问题我没懂。。。

#include
#include

struct student {
char name;
int age;
int no;
struct student *next;
};

main() {
struct student create(void) {
struct student *p1,*p2,*head;
head = NULL;
p1 = p2 = (struct student
)malloc(sizeof(struct student));
scanf("%c,%d,%d",p1->name,p1->age,p1->no);
while (p1->no != 0) {
if (p1->no == 1)
head = p1;
else
p2->next = p1;
p2 = p1;
p1 = (struct student*)malloc(sizeof(struct student));
scanf("%c,%d,%d",p1->name,p1->age,p1->no);
}
p2->next = NULL;
return head;
}
}

7个回答

caozhy
caozhy   Ds   Rxr 2015.06.02 17:39
 #include "stdafx.h"

#include <stdio.h>
#include <malloc.h>

struct student 
{
    char name;
    int age;
    int no;
    student *next;
};

student * create(void) 
{
    student *p1,*p2,*head;
    head = NULL;
    p1 = p2 = (student*)malloc(sizeof(student));
    scanf("%c,%d,%d",&p1->name,&p1->age,&p1->no);
    while (p1->no != 0) 
    {
        if (p1->no == 1) 
            head = p1;
        else 
            p2->next = p1;
        p2 = p1;
        p1 = (student*)malloc(sizeof(student));
        scanf("%c,%d,%d",&p1->name,&p1->age,&p1->no);
    }
    p2->next = NULL;
    return head;        
}

int main()
{
    create();
}
caozhy
caozhy   Ds   Rxr 2015.06.02 17:40

首先你根本程序不能编译的,错了很多,我帮你修改了下。然后你scanf("%c,%d,%d",&p1->name,&p1->age,&p1->no);忘记取地址了。

jxian6g
jxian6g   2015.06.02 17:02

要把debug那些提示也应该传上来

asambojur
asambojur 就是说在main()下的第二个大括号前面缺少”;“。。。我没懂。。。
2 年多之前 回复
chaobo_lu
chaobo_lu   2015.06.02 21:06

你有一点点问题
1. 建议成后看一看代码风格,比如3楼这样, 看起来就很清爽,是不是啊 :D
2. create() 函数要在 main函数之前声明;实现可以在前面也可以在后面。不能嵌套声明。
3. create()函数的返回值, 你是要将head 返回,而head是一个指针类型,所以你函数的返回类型应该是指针类型struct student * 。
4. malloc()函数返回的是 void * 类型,因此你做强制转换的时候应该转换成指针类型struct student * 。
5. scanf()后面的参数列表,要加上取地址符。
就这些了。 我改了改你的代码,作个参考 ~~ 。

#include
#include

struct student {
char name;
int age;
int no;
struct student *next;
};

struct student *create(void)
{
struct student *p1, *p2, *head = NULL;

p1 = p2 = (struct student *)malloc(sizeof(struct student));
scanf("%c,%d,%d", &p1->name, &p1->age, &p1->no);

while (p1->no != 0) 
{
    if (p1->no == 1)
        head = p1;
    else
        p2->next = p1;

    p2 = p1;
    p1 = (struct student*)malloc(sizeof(struct student));
    scanf("%c,%d,%d", &p1->name, &p1->age, &p1->no);
}

p2->next = NULL;
return head;

}

main()
{
create();
}

chaobo_lu
chaobo_lu   2015.06.02 21:07

不好意思,刚回复的时候少打了几个字,是你的程序有一点点问题,别介意哈 ~~ 。

u012377333
u012377333   Rxr 2015.06.04 10:14

看着楼上的大神给出的答案,不错不错

EnderSnow
EnderSnow   2015.06.06 09:33

你说的debug的提示是什么?可以发上来吗?

Csdn user default icon
上传中...
上传图片
插入图片