为什么总输出一个很大的负数 C语言
发布网友
发布时间:2023-10-20 14:19
我来回答
共4个回答
热心网友
时间:2023-09-28 15:50
修改成scanf ("%lf",&i);即可
原因:scanf用法不对,分析如下
1,代码中有一点错误 scanf ("i=%1f",&i);
原型是int scanf(constchar*format,...);
format为格式说明字符串,这个跟printf里面的不同,不能有多余杂质
故正确用法是scanf ("%1f",&i);
特别注意的地方是,浮点型不能指点位数
进一步修改为scanf ("%f",&i);
到这部还不一定正确,需要注意第2点。
2,还有跟你处的电脑环境的标准库的具体scanf实现有关,有些平台只支持%lf输入浮点型,你如果是VC环境,改成scanf ("%lf",&i);试下。
以后此问题可以加scanf的返回值打印调试
if(scanf ("%lf",&i) != 1){
//打印错误提示信息
}
scanf的返回值,表示正确给变量赋值的个数
比如
scanf("%d%d",&a,&b);
如果a和b都被成功读入,那么scanf的返回值就是2
如果只有a被成功读入,返回值为1
如果a和b都未被成功读入,返回值为0
如果遇到错误或遇到end of file,返回值为EOF。
热心网友
时间:2023-09-28 15:50
printf("该方程有两个解,x1=%0.6lf,x2=%0.6lf",x1,x2); 引号错了
printf("该方程有一个解,x1=%0.6f“,x1);
double 对应%lf
float 对应 %f 这个虽然有时候可以通用但是有时候会出错 建议区分这一点
还有就是为什么后面会出现数字乱码 是因为 两个 %lf 得不到你传递的两个值 所以产生了垃圾值!
请采纳答案,支持我一下。追问怎么改不出现垃圾值
热心网友
时间:2023-09-28 15:51
scanf ("i=%1f",&i);
修改为:
scanf ("i=%lf",&i);
printf("j=%1f",j);
修改为:
printf("j=%f",j);
不明白为什么你要在前面加个1,难道是看书打代码?书上是L.....
热心网友
时间:2023-09-28 15:51
这个是很小的负数