自己想不出来了。。。。。。。。SOS

时间:2022-09-20 23:27:57
#include <malloc.h>
#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下通过

#3


加入#include <stdlib.h>
增加指针释放语句。
作为一行一行输入,没有发现输入问题。数与数之间用空格、会车等隔开就行

#4


加上fflush()也不行啊,我对vc里面的东西不熟,能告诉我在wintc下怎么改吗?
我的还是输入一对数字程序就结束了?

#5


tc是这么说的:
 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吧

#8


scanf : floating point formats not linked 
Abnormal program termination 
Tc的浮点连接错误,TC编写小的C程序,如果程序里用到浮点输入,有时运行中会出现上面错误信息
这个错误信息的意思是:scanf的浮点格式转换程序没有连接上。  

原因:在TC开发时(80年代早期)DOS下的存储资源很有限。因此TC在编译时尽量不加入无关的部分。例如,在没发现需要浮点转换程序时,就不在可执行程序中安装这个部分。而有时TC又不能正确识别实际上确实需要做浮点转换,因此就会出现上面错误。 

解决的方法:设法告诉TC需要做浮点数的输入转换,可以在前面声明一个浮点数,就能解决问题。

这是以前一张贴上 zhangfjj(小张(灌水是我无言的*)) 的回答
学习~

#9


UP

#10


谢谢大家!!

#1


在scanf();后加fflush(stdin);

#2


不会啊,你的程序可以运行且没有错误啊
只是少了个头文件而已
怎么会不能连续输入呢?
我在VC6.0下通过

#3


加入#include <stdlib.h>
增加指针释放语句。
作为一行一行输入,没有发现输入问题。数与数之间用空格、会车等隔开就行

#4


加上fflush()也不行啊,我对vc里面的东西不熟,能告诉我在wintc下怎么改吗?
我的还是输入一对数字程序就结束了?

#5


tc是这么说的:
 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吧

#8


scanf : floating point formats not linked 
Abnormal program termination 
Tc的浮点连接错误,TC编写小的C程序,如果程序里用到浮点输入,有时运行中会出现上面错误信息
这个错误信息的意思是:scanf的浮点格式转换程序没有连接上。  

原因:在TC开发时(80年代早期)DOS下的存储资源很有限。因此TC在编译时尽量不加入无关的部分。例如,在没发现需要浮点转换程序时,就不在可执行程序中安装这个部分。而有时TC又不能正确识别实际上确实需要做浮点转换,因此就会出现上面错误。 

解决的方法:设法告诉TC需要做浮点数的输入转换,可以在前面声明一个浮点数,就能解决问题。

这是以前一张贴上 zhangfjj(小张(灌水是我无言的*)) 的回答
学习~

#9


UP

#10


谢谢大家!!