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

floata;scanf(“%f”,&a);当我输入10.1时出错了,说runtimeerror但是如果改成%5.5f就没关系,这是怎么回事,%f默认是几位小数几位整数啊... float a;
scanf(“%f”,&a);
当我输入10.1时出错了,说runtime error

但是如果改成 %5.5f 就没关系,这是怎么回事,%f 默认是几位小数几位整数啊?
展开
 我来答
A1620921354
2020-05-08 · TA获得超过5813个赞
知道答主
回答量:388
采纳率:100%
帮助的人:16.7万
展开全部

错误原因: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)时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。

59分粑粑分享生活
高粉答主

2020-05-27 · 专注生活好物分享,解答日常方方面面的问题
59分粑粑分享生活
采纳数:326 获赞数:119827

向TA提问 私信TA
展开全部

错误原因:指定数据格式时,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中需要变量地址,如果给定变量名,将发生错误。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
貌似風輕
推荐于2017-09-07 · TA获得超过7280个赞
知道大有可为答主
回答量:1672
采纳率:94%
帮助的人:693万
展开全部

运行是没问题的

百度百科:

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

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

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

可能是你的其他代码问题

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

发现问题所在了

没加输出语句就会这样

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

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

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

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
FanyongYin
2013-04-25 · TA获得超过1054个赞
知道小有建树答主
回答量:1298
采纳率:100%
帮助的人:1011万
展开全部
除非你的程序有其他问题,否则不可能的:
#include<stdio.h>
main()
{
float x = 0;
scanf("%f", &x);
printf("%f\n",x);
getchar();
}
Outcome:
10.1
10.100000
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
何其灿先生
2013-04-25
知道答主
回答量:14
采纳率:0%
帮助的人:4.1万
展开全部
你里面的 “5.5f” 应该实在输出时格式化的
printf(“%5.5f”,a); 这样你的结果就是精度为5 了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式