scanf(“%f”,&a);出错了??

float a;
scanf(“%f”,&a);
当我输入10.1时出错了,说runtime error

但是如果改成 %5.5f 就没关系,这是怎么回事,%f 默认是几位小数几位整数啊?

错误原因:scanf指定数据格式时不加逗号。

解决方法:

在scanf("%f%f%f",&a,&b,&c)里加逗号。

注意:"%f,%f,%f"格式与"%f%f%f"格式基本相同,不同之处在"%f,%f,%f"这种格式在输入时“,”一定要紧跟输入的数字,这里输入的","一定要是英文的。

扩展资料:

scanf使用注意问题

1、在高版本的 Visual Studio 编译器中,scanf 被认为是不安全的,被弃用,应当使用scanf_s代替 scanf。

2、对于字符串数组或字符串指针变量,由于数组名可以转换为数组和指针变量名本身就是地址,因此使用scanf()函数时,不需要在它们前面加上"&"操作符。

3、可以在格式化字符串中的"%"各格式化规定符之间加入一个整数,表示任何读操作中的最大位数。

4、 scanf函数中没有类似printf的精度控制。

5、 scanf中要求给出变量地址,如给出变量名则会出错

6、在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔,则可用空格,TAB或回车作间隔。

7、C编译在碰到空格,TAB,回车或非法数据(如对“%d”输入“12A”时,A即为非法数据)时即认为该数据结束。

9、在输入字符数据(%c)时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-05-27

错误原因:指定数据格式时,scanf不添加逗号。

解决的办法为:

在scanf中添加一个逗号(“%f%f%f”,&a,&b,&c)。

注意:“%f,%f,%f”的格式与“%f%f%f”的格式基本相同,不同之处在于“%f,%f,%f”的格式输入时为“ ,”确保跟上输入的数字,在此处输入的“,”必须为英文。

扩展资料:

scanf使用注意问题

1、在更高版本的Visual Studio编译器中,scanf被认为是不安全和不推荐使用的,应使用scanf_s而不是scanf。

2、对于字符串数组或字符串指针变量,由于可以将数组名称转换为数组,并且指针变量名称本身就是地址,因此在使用scanf()函数时,无需添加“&” 在他们前面的运算符

3、可以在格式字符串的“%”格式说明符之间添加一个整数,以指示任何读取操作中的最大位数。

4、scanf函数中没有类似于printf的精度控件。

5、在scanf中需要变量地址,如果给定变量名,将发生错误。

本回答被网友采纳
第2个回答  推荐于2017-09-07

运行是没问题的

百度百科:

scanf()函数中没有精度控制。

如: scanf("%5.2f",&a); 是非法的。不能企图用此语句输入小数为2位的实数。

我试了下你的%5.5f(输入会出错)

可能是你的其他代码问题

追问

看下我的问题补充,我也觉得奇怪,输入好像不能规定精度的。是不是我的电脑出问题了。

追答

发现问题所在了

没加输出语句就会这样

加一句输出语句printf()就不会出错了

而且之后就算把输出语句注释掉也不会出错

具体是什么机理照成这样的结果,我也没找到答案。

本回答被提问者和网友采纳
第3个回答  2013-04-25
除非你的程序有其他问题,否则不可能的:
#include<stdio.h>
main()
{
float x = 0;
scanf("%f", &x);
printf("%f\n",x);
getchar();
}
Outcome:
10.1
10.100000
第4个回答  2013-04-25
你里面的 “5.5f” 应该实在输出时格式化的
printf(“%5.5f”,a); 这样你的结果就是精度为5 了