c语言例程038错在那里了?

Python020

c语言例程038错在那里了?,第1张

Turbo C(TC)系统的浮点连接错误

用TC-2.0系统编写小的C程序,如果程序里用到浮点输入,有时运行中会出现下面错误信息:

scanf : floating point formats not linked

Abnormal program termination

这个错误信息的意思是:scanf的浮点格式转换程序没有连接。

TC开发时(80年代)DOS下的存储资源紧缺,因此TC在编译时尽量不加入无关部分。在没发现需要做浮点转换时,就不将这个部分安装到可执行程序里。但有时TC不能正确识别实际确实需要浮点转换,因此就会出现上面错误。

解决方法:设法告诉TC需要做浮点数输入转换。下面例子里增加了一个double变量并用它输入。

大程序里由于变量很多,只要有了线索,TC就会把浮点转换连上,因此反而不常遇到这个问题。

--------------------------------------------------------------------------------

/* 能导致出现运行错误的程序例子。

在这里用的一个结构数组,结构里面有double类型的成分,TC不能正确识别和处理,因此会导致上述问题。*/

#include <stdio.h>

#define NUM 4

struct entry {

int inum /* 商品编号 */

int pc /* 件数 */

double price/* 价钱 */

} st[NUM] /* st是个商品表 */

int main () {

int i

for (i = 0i <NUMi++)

scanf("%d %d %lf", &st[i].inum, &st[i].pc, &st[i].price)

for (i = 0i <NUMi++)

printf("total price of item %d: %f\n",

st[i].inum, st[i].pc * st[i].price)

return 0

}

/* 这个程序编译正常,运行中会出现上面错误信息 */

--------------------------------------------------------------------------------

/* 修改的程序,其中增加了一个double变量x。问题就解决了 */

#include <stdio.h>

#define NUM 4

struct entry {

int inum

int pc

double price

} st[NUM]

int main () {

int i

double x

for (i = 0i <NUMi++) {

scanf("%d %d %lf", &st[i].inum, &st[i].pc, &x)

st[i].price = x

}

for (i = 0i <NUMi++)

printf("total price of item %d: %f\n",

st[i].inum, st[i].pc * st[i].price)

return 0

}

1:B,不是能不能的问题,是不可以。C就是这样规定的。霸道,它用了,别人就不能用。

2:100!是多少?除非自己写计算机代码,C本身的变量长度不够。就像:1000000000000000000000000000,你用什么类型表示?

3:5个字符分是'a','b','\034','\\','\x79'

'a','b'很明显

'\034'是一个8进制数,一般表示ascii码,这理是特殊字符。

'\\'表示\,因为\是转义符,所以为了表示本身,用'\\'来表示

\x79,是16进制数,ascii码是y

4:char c='\010' ascii码对应的是特殊字符。写不出来不好意思。

5:用到的时候在学,反正不难。

另外看你问的基本上都是\0什么的。

专门说下。

main()

{

int c=65

char a='\0101'

printf("%c%c",c,a)

getch()

}

你会发现输出的是:AA

A的ascii码是65,所以当以字符输出C的时候,是A,而65的8进制是101,所以

char a='\0101'相当与char a='A'.(\0或者\,0可以省略。是八进制)