Turbo C中浮点数的一个问题

本文介绍了在TurboC2.0环境下调试程序时遇到的浮点数输入错误问题:“scanf:floatingpointformatsnotlinkedAbnormalprogramtermination”。通过在程序中增加额外的浮点数变量解决了此问题,并解释了问题产生的原因是由于TurboC编译时的资源优化策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    前几天在Turbo C2.0环境中调试程序时,发现在运行中对结构中的浮点数变量进行数据输入时总出现错误:“scanf: floating point formats not linked Abnormal program termination",调试了很长时间也没有解决。程序如下:

#define N 2
#include <stdio.h>

struct ss
{
  float tt;
} a[N];

main()
{
 int i;

 clrscr();
 printf("/nFloat numbers in a structure:/n");

 for(i=0;i<N;i++)
   scanf("%f", &a[i].tt);

 printf("/n");

 for(i=0;i<N;i++)
    printf("a[%d].tt=%.2f ",i,a[i].tt);

 getch();
}

    后来,在main主函数中尝试添加一个浮点数变量,在先输入该浮点数变量值,然后接着输入结构中的浮点数变量值就不会再出现该问题。不断反复尝试了多次,都是如此。修改后的程序如下:

#define N 2
#include <stdio.h>

struct ss
{
  float tt;
} a[N];

main()
{
 int i;
 float tt;

 clrscr();
 printf("Normal float numbers:/n");
 scanf("%f", &tt);

 printf("/nFloat numbers in a structure:/n");

 for(i=0;i<N;i++)
   scanf("%f", &a[i].tt);

 printf("/n");

 for(i=0;i<N;i++)
    printf("a[%d].tt=%.2f ",i,a[i].tt);

 getch();
}

    思考了很久也没有想清楚是什么原因造成的。最后求助于网友才解开这个疑惑,原来这是Turbo C系统的浮点连接错误,TC开发时(80年代)DOS下的存储资源紧缺,因此TC在编译时尽量不加入无关部分。在没发现需要做浮点转换时,就不将这个部分安装到可执行程序里。但有时TC不能正确识别实际确实需要浮点转换,因此就会出现“scanf的浮点格式转换程序没有连接”的错误。这里特别感谢网友freshui的帮助。根据这个原因,程序可以修改为:

#define N 2
#include <stdio.h>

struct ss
{
  float tt;
} a[N];

main()
{
 int i;
 float tt;

 clrscr();
 /*printf("Normal float numbers:/n");
 scanf("%f", &tt);*/

 printf("/nFloat numbers in a structure:/n");

 for(i=0;i<N;i++)
{
   scanf("%f", &tt);
   a[i].tt=tt;
}

 printf("/n");

 for(i=0;i<N;i++)
    printf("a[%d].tt=%.2f ",i,a[i].tt);

 getch();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值