#include <stdio.h>
#include <conio.h>
#define NULL 0
#define LEN sizeof(struct student)
struct student
{
int num;
float score;
struct student *next;
};
int n;
struct student *creat(void)
{
struct student *p1,*head,*p2;
p2=p1=(struct student *)malloc(LEN);
head=NULL;
n=0;
scanf("%d",&p1->num);
scanf("%f",&p1->score); //就是这里,在进行输入的时候总是不对,根本就不能连续输入
while((p1->num)!=0) //如果把所有浮点型改为整形就可以了
{ //这是怎么回事啊??
n++;
if(n==1)head=p1;
else
{
p2->next=p1;
p2=p1;
}
p1=(struct student *)malloc(LEN);
scanf("%d",&p1->num);
scanf("%f",&p1->score);
}
p2->next=NULL;
return(head);
}
void print(struct student *head)
{
struct student *p;
p=head;
while(p!=NULL)
{
printf("%d %f\n",p->num,p->score);
p=p->next;
}
}
main()
{
struct student *p;
p=creat();
print(p);
system("pause");
}
10 个解决方案
#1
在scanf();后加fflush(stdin);
#2
不会啊,你的程序可以运行且没有错误啊
只是少了个头文件而已
怎么会不能连续输入呢?
我在VC6.0下通过
只是少了个头文件而已
怎么会不能连续输入呢?
我在VC6.0下通过
#3
加入#include <stdlib.h>
增加指针释放语句。
作为一行一行输入,没有发现输入问题。数与数之间用空格、会车等隔开就行
增加指针释放语句。
作为一行一行输入,没有发现输入问题。数与数之间用空格、会车等隔开就行
#4
加上fflush()也不行啊,我对vc里面的东西不熟,能告诉我在wintc下怎么改吗?
我的还是输入一对数字程序就结束了?
我的还是输入一对数字程序就结束了?
#5
tc是这么说的:
scanf:floating point formats not linked
Abnormal program termination
scanf:floating point formats not linked
Abnormal program termination
#6
是这样的,以前我也老出现这种情况。好象是TC本身的问题。好多杂志上也有这方面的讨论。不过具体办法就没有看懂了。
#7
你先声明一个float型变量f
这里scanf("%f",&p1->score);
改为scanf("%f",&f);
p1->score=f;
这样先给编译器提示有浮点数应该就可以了
这应该算TC一个bug吧
这里scanf("%f",&p1->score);
改为scanf("%f",&f);
p1->score=f;
这样先给编译器提示有浮点数应该就可以了
这应该算TC一个bug吧
#8
scanf : floating point formats not linked
Abnormal program termination
Tc的浮点连接错误,TC编写小的C程序,如果程序里用到浮点输入,有时运行中会出现上面错误信息
这个错误信息的意思是:scanf的浮点格式转换程序没有连接上。
原因:在TC开发时(80年代早期)DOS下的存储资源很有限。因此TC在编译时尽量不加入无关的部分。例如,在没发现需要浮点转换程序时,就不在可执行程序中安装这个部分。而有时TC又不能正确识别实际上确实需要做浮点转换,因此就会出现上面错误。
解决的方法:设法告诉TC需要做浮点数的输入转换,可以在前面声明一个浮点数,就能解决问题。
这是以前一张贴上 zhangfjj(小张(灌水是我无言的*)) 的回答
学习~
Abnormal program termination
Tc的浮点连接错误,TC编写小的C程序,如果程序里用到浮点输入,有时运行中会出现上面错误信息
这个错误信息的意思是:scanf的浮点格式转换程序没有连接上。
原因:在TC开发时(80年代早期)DOS下的存储资源很有限。因此TC在编译时尽量不加入无关的部分。例如,在没发现需要浮点转换程序时,就不在可执行程序中安装这个部分。而有时TC又不能正确识别实际上确实需要做浮点转换,因此就会出现上面错误。
解决的方法:设法告诉TC需要做浮点数的输入转换,可以在前面声明一个浮点数,就能解决问题。
这是以前一张贴上 zhangfjj(小张(灌水是我无言的*)) 的回答
学习~
#9
UP
#10
谢谢大家!!
#1
在scanf();后加fflush(stdin);
#2
不会啊,你的程序可以运行且没有错误啊
只是少了个头文件而已
怎么会不能连续输入呢?
我在VC6.0下通过
只是少了个头文件而已
怎么会不能连续输入呢?
我在VC6.0下通过
#3
加入#include <stdlib.h>
增加指针释放语句。
作为一行一行输入,没有发现输入问题。数与数之间用空格、会车等隔开就行
增加指针释放语句。
作为一行一行输入,没有发现输入问题。数与数之间用空格、会车等隔开就行
#4
加上fflush()也不行啊,我对vc里面的东西不熟,能告诉我在wintc下怎么改吗?
我的还是输入一对数字程序就结束了?
我的还是输入一对数字程序就结束了?
#5
tc是这么说的:
scanf:floating point formats not linked
Abnormal program termination
scanf:floating point formats not linked
Abnormal program termination
#6
是这样的,以前我也老出现这种情况。好象是TC本身的问题。好多杂志上也有这方面的讨论。不过具体办法就没有看懂了。
#7
你先声明一个float型变量f
这里scanf("%f",&p1->score);
改为scanf("%f",&f);
p1->score=f;
这样先给编译器提示有浮点数应该就可以了
这应该算TC一个bug吧
这里scanf("%f",&p1->score);
改为scanf("%f",&f);
p1->score=f;
这样先给编译器提示有浮点数应该就可以了
这应该算TC一个bug吧
#8
scanf : floating point formats not linked
Abnormal program termination
Tc的浮点连接错误,TC编写小的C程序,如果程序里用到浮点输入,有时运行中会出现上面错误信息
这个错误信息的意思是:scanf的浮点格式转换程序没有连接上。
原因:在TC开发时(80年代早期)DOS下的存储资源很有限。因此TC在编译时尽量不加入无关的部分。例如,在没发现需要浮点转换程序时,就不在可执行程序中安装这个部分。而有时TC又不能正确识别实际上确实需要做浮点转换,因此就会出现上面错误。
解决的方法:设法告诉TC需要做浮点数的输入转换,可以在前面声明一个浮点数,就能解决问题。
这是以前一张贴上 zhangfjj(小张(灌水是我无言的*)) 的回答
学习~
Abnormal program termination
Tc的浮点连接错误,TC编写小的C程序,如果程序里用到浮点输入,有时运行中会出现上面错误信息
这个错误信息的意思是:scanf的浮点格式转换程序没有连接上。
原因:在TC开发时(80年代早期)DOS下的存储资源很有限。因此TC在编译时尽量不加入无关的部分。例如,在没发现需要浮点转换程序时,就不在可执行程序中安装这个部分。而有时TC又不能正确识别实际上确实需要做浮点转换,因此就会出现上面错误。
解决的方法:设法告诉TC需要做浮点数的输入转换,可以在前面声明一个浮点数,就能解决问题。
这是以前一张贴上 zhangfjj(小张(灌水是我无言的*)) 的回答
学习~
#9
UP
#10
谢谢大家!!