为什么编译,连接通过,而执行就不行?
#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++编辑器!
我用的也是vc++6.0啊,可是我可以编译啊...你试试不要那样输入,用个变量替换下,先定义个变量给变量赋值,之后再给结构体试一下吧... 看了楼主的代码!
不能执行的原因是:
执行后出现一个错误,这个错误类型是R6002:floating point not loaded!浮点数没有被加载。问题出在第19刚语句scanf("%f", &p1->score);解决方法是在函数中加入一些浮点数运算的语句,比如定义一个浮点数并赋值,或者pirntf一个浮点数都行!使得程序中有浮点数运算就可以!比如这段代码中,你在输入Id和score后,用printf函数把它们输出来,整个程序就可以运行了。这段代码只有输入没有输出,看起来怪怪的,即使运行不出错,也不能立马判断是正确的,最好在要scanf输入前用printf语句提示“请输入什么什么的",完了把结果输出来看看到底对还是错嘛!这样会好点! {:1_1:}
页:
[1]