阿飞 发表于 2011-12-7 21:34:00

为什么编译,连接通过,而执行就不行?

#include <stdio.h>
#include <stdlib.h>
#define STR struct student
#define NULL 0

struct student
{
int id;
float score;
STR *next;
};
int n;
STR *create()
{
STR *Head = NULL, *p1 ,*p2;
n = 0;
p1 = p2 = (STR *)malloc(sizeof(STR));
scanf("%ld", &p1->id);
scanf("%f", &p1->score);
p1->next = NULL; //创建一个空链表
while(p1->id != 0)
{
++n;
if(n == 1)
Head = p1;
else
p2->next = p1;
p2 = p1;
p1 = (STR *)malloc(sizeof(STR));
scanf("%ld %f", &p1->id, &p1->score);
p1->next = NULL;
}
free(p1);
return Head;
}

int main(void)
{
create();

return;
}本人用的是VC++编辑器!

a328560319 发表于 2011-12-7 23:01:46

我用的也是vc++6.0啊,可是我可以编译啊...你试试不要那样输入,用个变量替换下,先定义个变量给变量赋值,之后再给结构体试一下吧...

p62273470 发表于 2011-12-8 12:59:04

看了楼主的代码!
不能执行的原因是:
执行后出现一个错误,这个错误类型是R6002:floating point not loaded!浮点数没有被加载。问题出在第19刚语句scanf("%f", &p1->score);解决方法是在函数中加入一些浮点数运算的语句,比如定义一个浮点数并赋值,或者pirntf一个浮点数都行!使得程序中有浮点数运算就可以!比如这段代码中,你在输入Id和score后,用printf函数把它们输出来,整个程序就可以运行了。这段代码只有输入没有输出,看起来怪怪的,即使运行不出错,也不能立马判断是正确的,最好在要scanf输入前用printf语句提示“请输入什么什么的",完了把结果输出来看看到底对还是错嘛!这样会好点!

溯月0503 发表于 2015-6-5 18:35:55

{:1_1:}
页: [1]
查看完整版本: 为什么编译,连接通过,而执行就不行?